VMC(バモキャ)+VMC4Uで作るMV制作
必要なツール
- unity
- VirtualMotionCaputreForUnity
- EasyMotionRecorder
- OVRLipsync
モデルを操作の為にVMC4Uを読み込み
VirtualMotionCaputreForUnityを使用する。
名前はバージョンによって異なりますが、unityを起動した状態で
「ExternalReceiverPack_v3_3.unitypackage」
をダブルクリックしてインストール
モデルの読み込み
VMC4Uの中にUniVRMがはいっているので、VRMをD&Dをすれば取り込める。
Assetの中にModelフォルダを作成し、VRMをインポートする。
モーションをレコーディングする準備
イージーモーションレコーダーをインポート
EasyMotionRecorderのフォルダをそのままD&D
EasyMotionRecorder配下のprefabsのEasyMotionRecorderをHierarchyに配置
Hierarchyに配置にしたEasyMotionRecorderをクリックし、AnimatorにモデルをD&D
口のモーション
OVRLipsync(OculusLipSync.unitypackage)をダウンロードしてパッケージをインポート
上記のスクリプトではVRMには対応してないので、下記のスクリプトをDLして読み込む
VRMLipSyncContextMorphTarget空のゲームオブジェクトを作成して、LipSyncと名前を変更
OVR Liy Syncをアタッチする。
その後、VRMモデルに下記をアタッチ
- OVRLipSyncContext
- VRMLipSyncContextMorphTarget(通常はOVRLipSyncContextMorphTargetを使うが、VRMなのでこちらを使う)
口のモーションチェック
Assetの配下にリップシンク用のボイスのみのwavをSoundsフォルダを作って配置
VRMのオーディオソースにリップシンク用のWAVをアタッチ
自動まばたき
VMCにも自動まばたき機能があるが、表情によってとじ目がくずれてしまう事がある為、別途実装する。
今回は下記の自動まばたきスクリプトを使用させて頂く
https://github.com/unity3d-jp/unitychan-crs/blob/master/Assets/UnityChan/Scripts/AutoBlink.cs
上記のスクリプトの
void LateUpdate ()
{
if (isActive) {
if (isBlink) {
switch (eyeStatus) {
case Status.Close:
SetCloseEyes ();
break;
case Status.HalfClose:
SetHalfCloseEyes ();
break;
case Status.Open:
SetOpenEyes ();
isBlink = false;
break;
}
//Debug.Log(eyeStatus);
}
}
}
この部分にifの分岐を追加し、目が崩れてしまう時は自動まばたきをさせなようにする。
表情を切り替える
バモキャで表情を変化させた場合、 CrossFadeで切り替えていないので表情が一瞬で切り替わり、飛んだ感じになってしまうのでアニメーションを作成し表情を切り替える。
AnimationControllerの作成
①Asset配下にAnimationsフォルダを作成する。
②AnimationContorollerを新規に作成する。
➂対象のVRMに作成したAnimationContorollerをAnimatorにアタッチ
④AnimationContorollerに新規のレイヤー(Face Layerを作成する)
この地点で、Base LayerとFace Layerになる。
作成したばかりのレイヤーはWeightが0なので1にする。
➄新しいAvatorMaskを作成しFace Maskを作成する。
⑥FaceMaskを上記のFaceLayerにアタッチする。
Animationの作成
①新規でAnimationファイルを作成する。
注意点
unityで実行中にVRMモデルにターゲットを合わせているとメモリがどんどん上昇してメモリがオーバーするので注意が必要である。