使用するUnityプラグイン
1,MMD4Mecanim
https://stereoarts.jp/
2,MMD2UnityTool
https://github.com/cnscj/MMD2UnityTool
3,Oculus LipSync
https://developer.oculus.com/documentation/unity/audio-ovrlipsync-using-unity/
参考したweb
https://blog.gcrest.com/archives/404
https://kan-kikuchi.hatenablog.com/entry/OVRLipSync
手順:
1、MMD用モデル(.pmx)とモーション(.vmd)をUnityに導入
pmxモデルを直接Unityプロジェクトにインポートします。
ここはMMD4Mecanimを使います。
Unityでpmxデータを選択して、利用規約が出てくる、それを同意して進みます。
inspectorにpmxモデルとvmdモーションを入れて、FBX出力パースを設定します。
Processを押せばデータがFbxに出力します。
2、カメラモーション導入
カメラモーション(.vmd)をUnityプロジェクトにインポートします。
右クリック→MMD2UnityTool→Export Camera Vmd To Anim
3、Unity Recorderを使ってモーションを録画(しなくてもいい、でもモーションは多少誤差があるかもしれません)
使用しているモデルはRead/Write Enabledにチェックを入れるのを忘れずに
設定は画像を参考に
4、Oculus LipSyncを使って口の形状を音声に合わせる
\Assets\Oculus\LipSync\LipSyncInterface.prefabのプリハブをsceneに置きます。
キャラクターにOVR Lip Sync ContextとOVR Lip Sync Context Morph Targetコンポーネントを追加します。
追加すると自動的にAudio Sourceも追加されます。
OVR Lip Sync Context Morph TargetのSkinned Mesh Renderにblendshapeが含めるMeshを入れます。
各口の形のblendshapeを指定します。
Element0-15:sil,PP,FF,TH,DD,kk,CH,SS,nn,RR,aa,E,I,O,U
参考画像はhttps://developer.oculus.com/documentation/unity/audio-ovrlipsync-viseme-reference/
普通はaeiouだけ入れればいいです。
blendshapeは表示順番で上から0番、1番、2番・・・
対応のblendshapeの番号を入れます。
使用する音声をAudio Sourceにいれます。
Audio Sourceを含めるオブジェクトをOVR Lip Sync ContextのAudio Sourceに入れます。
Audio Loopbackにチェックを入れます。
OVRLipSyncContextMorphTarget.csの119列前後のVoid Update()をVoid LateUpdate()に修正します。
5、これで実行すれば口は音声の通り動くはずです。
可能であればUnity Recorderでblendshapeのアニメーションを撮ったほうがいいですが、
自分はなぜか.animデータが出力されませんので、
一旦このまま使います。
(キャラの他のblendshapeアニメーションが付いた状況でOculus LipSyncを使っても問題なさそうです。)