リアルタイムのリップシンクは後回しにしようと思ったけど
分かりやすいサイトみつけて簡単にできそうだったので先にやってみた。
自作モデルでは表情パーツ作ってないからユニティちゃんで代用
こちらの記事を参考
http://tips.hecomi.com/entry/2016/02/16/202634
OVRLipsyncを使う
https://developer.oculus.com/downloads/package/oculus-lipsync-unity/
DLしてインポート
空の GameObject を作成してScriptsフォルダの OVRLipSync をアタッチ
同じフォルダ内のOVRLipSyncContext と OVRLipSyncContextMorphTarget を
unityちゃんにアタッチ
OVRLipSyncContextMorphTarget の Skinned Mesh Rendererフィールドに
モデルの口の部分を指定する。
unityちゃんの場合は MTH_DEF を選択。
これはモデルによって違うので、モデルの口を選択してどれが該当のモノなのかは事前に確認しておく。
口の表情パーツを選択すると登録されている順番が分かるので番号を0番から振って控えておく
unityちゃんなら
あ→6
い→7
う→8
え→9
お→10
unitちゃんモデルにアタッチしたOVRLipSyncContextMorphTarget の
Viseme To Blend Targets フィールドにunityちゃんの表情を割り当てていく
割り当てはこんなかんじらしい。
参考サイト:https://qiita.com/ngron/items/b2c02a0f8133aac2ad9a
OVRLipSyncContextMorphTargetの ソースを書き換えて
scriptsフォルダ内のOVRLIpSyncMicInputをunityちゃんにアタッチ
Mic Controlの部分をConstantSpeadkに変更
これで実行したらリップシンクできるー!!!
∑(゚Д゚;って出来ないじゃん!!
反応しないと思ったらエラー出てた。
原因は、Ver2017とかのバージョンだとスクリプトの読み込みの順番が悪いらしい。
参考元こちら
この動画で初めて知ったけど
最小限のコンポーネントの探し方とかそれの動作検証方法とかタメになった。
Edit>ProjectSettings>ScriptExecutionOrderを開く
+ボタンから
OVRLipSync
OVRLipsyncContextの順番で登録
これで・・・実行するとやっとリアルタイムリップシンクできました!!!
※コメントは承認後に表示されます。
コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。