unity宴とLive2Dでキャラにモザイクをかける

正直、プログラムのことはよくわからないので、かなりあやふやな情報にはなりますが、現在宴ではキャラクターの動きに追従するようなモザイクを実装することは難しいようです。

宴のQ&Aに問い合わせてみたところ、次回のメジャーアップデートで対応できるかもしれないとのことなのでもうすぐできるようになるみたいですね。

http://madnesslabo.net/utage/?dwqa-question=live2dのキャラクターのモザイク処理について

私の場合、今回はキャラのモーションに大きな動きがなかったので、固定したモザイクを設置することにしました。

また、固定したモザイクをシナリオによって表示したり、非表示にしたりしなければならないので、SendMessageByNameコマンドを使って宴とunityのやり取りをします。

まずi-saint様のEffect集からMosaicFieldをお借りします。

https://github.com/i-saint/Unity5Effects

次にプロジェクトを開いて、ダウンロードしたPrefabとShaderをunityに読み込みます。

GameObject→CreateEmpty

で空のObjectを作成し、MosaicSendMessageByNameという名前にします。

MosaicSendMessageByNameの子ObjectとしてダウンロードしたMosaicFieldのPrefabを入れます。

MosaicFieldに

Asset→Create→Material

でShaderを適用できるようにして、ドロップダウンリストから

Ist→MozaicField

を適用し、MozaicFieldオブジェクトの範囲にモザイクがかけられるようになりました。

次にMosaicSendMessageByNameオブジェクトに戻ってAddCompornentします。

AddCompornent→NewScript

Name  MosaicSendMessageByName

Language C#

とし、以下をコピペします。


using UnityEngine;

using Utage;

using System.Collections;


[AddComponentMenu( "Utage/ADV/Examples/SendMessageByName" )]

public class MosaicSendMessageByName : MonoBehaviour

{

    void MosaicFalse( AdvCommandSendMessageByName command)

    {

        var game_object = transform.Find( "MosaicField").gameObject;

        game_object.SetActive( false);

    }

    void MosaicTrue( AdvCommandSendMessageByName command)

    {

        var game_object = transform.Find( "MosaicField").gameObject;

        game_object.SetActive( true);

    }

}


これでExcelシートに

Command        Arg1             Arg2              …

SendMessageByName  MosaicSendMessageByName  MosaicTrueまたはMosaicFalse

などと書き込めば、MosaicFieldを表示・非表示することができるようになりました。

© umeshiva 2013