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