OVRlipSyncを使うまでの解析と道のり。
モデルを作ってUVで口パクのマップを自由につくるところはOK
モデルをモーフさせ開き閉じのオブジェをつくることOK
FBXで出力もOK
モデルにボーンをいれてそれで口を動かすベースモデルをつくることもOK
人体形態モデルにボーンをしこんでFBXで出力もOK
まだよくわかってないこと
OVRlipSyncのスクリプトをどこにどうアタッチするのか
アタッチしたあとの処理
全体を制御するスクリプトの作成
モデルの個別のアニメーションの組み方など
あいまいなこと
--GameObjectにアタッチするスクリプトは3つ?
OVR Lip Sync Mic Input
OVR Lip Sync Context
OVR Lip Sync Context Texture Flip
OVR Lip Sync Test Audio ?
引用テキスト(凹 (id:hecomi))さんより引用VRLipSync
DLL のラッパースクリプト Awake() を使ったシングルトン形式でシーンに 1 つだけ配置 static なメンバを通じてコンテキストの生成・破棄やデータを渡して認識を行う
OVRLipSyncContext
内部ではコンテキストの生成・破棄、そして OnAudioFilterRead() を使って再生中のオーディオのデータを取得して DLL へ投げたりするコア部分 コンテキストは C# 側へは uint の ID で返ってきて、これを通じて DLL 側で操作を行う モーフまたはテクスチャでリップシンクを行う対象の GameObject 1 つにつき 1 つずつアタッチ GetCurrentPhonemeFrame() で口形素の情報などを含む ovrLipSyncFrame を取ってこれる
OVRLipSyncContextMorphTarget
GetCurrentPhonemeFrame() で取ってきた口形素を skinnedMeshRenderer.SetBlendShapeWeight() に与える OVRLipSyncContext と同じ GameObject へアタッチ
OVRLipSyncContextTextureFlip
最も近い(値の大きい)口形素のテクスチャにマテリアルを変更
OVRLipSyncContext と同じ GameObject へアタッチ
OVRLipSyncMicInput
AudioSource にファイルを与える代わりに Microphone クラスを用いて得られたマイク入力を利用する
OVRLipSyncContext と同じ GameObject へアタッチ
…と
分からないとこ明確にするためにテキスト化していたら
できた~。(^^)/
Materialのところ作ったオブジェのを再指定したら動いた~。
プラグインとして機能した!
Mic InputのMic ControlはConstant Speakにする。
OVRLipSyncでマイク入力で動きながらのリップシンクあてれた~。#unity pic.twitter.com/V21FFIbxn6
— あもら (@fujisandamon) November 23, 2017
0コメント