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モデルにターゲットを合わせているとメモリがどんどん上昇してメモリがオーバーするので注意が必要である。