見出し画像

UnityのアニメーションクリップをVRMLiveViewerやMMDに持っていく方法

やほほーい。せぃが君です。(*´▽`*)
いわゆるVtuber活動をしています。

今日は、UnityのアニメーションクリップをVRMLiveViewerやMMDに持っていく方法を紹介するよ。

(これができるようになると、Unityで作られた最近のダンスモーション等を気軽にVRMLiveViewerやMMDで躍らせることができて、とってもハッピーだぞ!)

今回のおおまかな流れ

1) Unityのanimファイルで作られたアニメーションを、bvhファイル(blender等で使われるモーション形式)に変換
2) bvhファイルをvmdファイル(MMD等で使われるモーション形式)に変換
3) VRMLiveViewerやMMDに導入
4) しあわせ!

※BVHファイル経由で持っていく都合上、モーションのみしか持っていけない(表情遷移は持っていけない)ので、その点はご注意!

今回利用するもの

☘下準備系
Unity (今回動確してるのは、2021.3.4f1)
UniVRM(今回動確してるのは、0.107.0_1e8a)
・VRMアバター(今回動確しているのはVRoid製)
・変換したいanimファイル(※今回はこちらをお借りしました)

☘今回の秘密兵器
BVH Tools(アセットストアより)
BVH to VMD Converter(BOOTHより)

手順1:Unityプロジェクトを作り、下準備する

【1】Unityプロジェクトを新規で用意
【2】 UniVRMをassetsにD&Dしてインポート
 (RecomandedLinerみたいなウインドウが出たらaccept allで大丈夫)
【3】assets下に適当なフォルダを作り、vrmファイルをassetsにD&D
【4】生成されたアバターのプレハブをシーンにD&D
【5】 assetsに好きなanimファイルをD&D
【6】 animファイルを、シーンのアバターにD&D(アタッチ)
【7】 シーンの再生ボタンを押して、アニメーションが再生されていれば、ひとまずヨシ!

下準備のやつ。
インポート is 何?のかたは、各自調べてみてね。

手順が全部終わるとこんなかんじ
再生してみて、踊ってくれることを確認
うまく踊ってくれない時は、
ちゃんとAnimatorにanimファイルが適用されているか確認しよう


手順2: BVH Toolsを導入して、アニメーションをbvhに変換する

【1】 ブラウザからUnityアセットストアを開き、BVH Toolsを購入(無料)
【2】「Unityで開く」をクリックし、Unity エディタへ
【3】 Package Managerが開くので、Importを選択
【4】 手順1でシーンに配置したアバターにAdd Componentで「BVH Recorder」を追加
【5】以下のように設定
 ・BlenderのチェックをOFF
 ・CapturingのチェックをON
 ・Enforce Humanoid BonesをチェックをON
 ・Target Avatarにこのアバターのオブジェクトをセット
 ・Root Boneにアバター直下のRootをセット
【6】 設定できたら、シーンの再生ボタンをクリック。(BVH RecorderのFrame Numberがカウントアップされていたら成功)
【7】 アニメーションの再生終了を見計らい、BVH RecorderのCapturingのチェックを外す。(すると、Frame Numberのカウントが止まるはず)
【8】 シーン再生状態のまま、BVH Recorderの「Save motion to BVH file」をクリック
【9】Last Saved Fileに今保存したファイルのパスが記載されてるので、ファイルを開いてみる
【10】 ファイル2行目が「ROOT Hips」となっていれば、ひとまずヨシ!

BVH Toolsを導入し、アニメーションを記録していきます。
手順のとおり、正確にはBVH Toolsがするのは、animファイル⇒BVHファイルへの変換ではなく、シーン再生で再生されたアニメーションの再書き出しです。

VRMLiveViewerは、BVHファイルに対応しているので、この時点でもVRMLiveViewerに持っていけるんだけど、それだと指が動きません(原因よくわからず)。
なので、手順3では、いったんBVHファイルをVMDファイルに変換していきます💡

アセットストアからBVH Toolsを入手
Package ManagerからImport
アバターにBVH Recorderコンポーネントを追加
↑設定値こんなかんじ
↑ひとまずROOTがHipsになっていればOK

手順3: bvhファイルをvmdファイルに変換する

【1】「BVH to VMD Converter」をゆきときプロジェクトさんのBOOTHからDLする。(投げ銭版もあるぞ)
【2】「BVHToVMDx.x」フォルダ直下のAutoBoneMap.csvを開き、40行目以降を下記コードで書き変え
【3】「BVHToVMD.exe」をクリックし、アプリを立ち上げる
【4】左下部のConvert Listに手順2でつくったbvhファイルをD&D
【5】Convertボタンをクリック
【6】bvhファイルのあるフォルダに、vmdファイルが生成されていれば成功!

bvhファイルをvmdファイルに変換します。
デフォルトのAutoBoneMap.csvだと、Humanoidの指ボーンの記述が足りないので、追記版で書き変えてあげます。

左親指0 ,pz=-40,z=40,,LeftThumbProximal,#LeftHandThumb1,LThumb,,LThumb,
左親指1,pz=-40,z=40,,LeftThumbIntermediate,LeftHandThumb2,,lThumb1,,
左親指2,pz=-40,z=40,,LeftThumbDistal,LeftHandThumb3,,lThumb2,,
,,,,,LeftInHandIndex,,,,
左人指1,,,,LeftIndexProximal,LeftHandIndex1,,lIndex1,,
左人指2,,,,LeftIndexIntermediate,LeftHandIndex2,,#lIndex2,,
左人指3,,,,LeftIndexDistal,LeftHandIndex3,,,,
,,,,,LeftInHandMiddle,,,,
左中指1,,,,LeftMiddleProximal,LeftHandMiddle1,,lMid1,,
左中指2,,,,LeftMiddleIntermediate,LeftHandMiddle2,,lMid2,,
左中指3,,,,LeftMiddleDistal,LeftHandMiddle3,,,,
,,,,,LeftInHandRing,,,,
左薬指1,,,,LeftRingProximal,LeftHandRing1,,lRing1,,
左薬指2,,,,LeftRingIntermediate,LeftHandRing2,,lRing2,,
左薬指3,,,,LeftRingDistal,LeftHandRing3,,,,
,,,,,LeftInHandPinky,,,,
左小指1,,,,LeftLittleProximal,LeftHandPinky1,,lPinky1,,
左小指2,,,,LeftLittleIntermediate,LeftHandPinky2,,lPinky2,,
左小指3,,,,LeftLittleDistal,LeftHandPinky3,,,,
,,,,,,rhand,,RightFingerBase,
,,,,,,RFingers,,RightHandIndex1,
右親指0,pz=-40,z=40,,RightThumbProximal,#RightHandThumb1,RThumb,,RThumb,
右親指1,pz=-40,z=40,,RightThumbIntermediate,RightHandThumb2,,rThumb1,,
右親指2,pz=-40,z=40,,RightThumbDistal,RightHandThumb3,,rThumb2,,
,,,,,RightInHandIndex,,,,
右人指1,,,,RightIndexProximal,RightHandIndex1,,rIndex1,,
右人指2,,,,RightIndexIntermediate,RightHandIndex2,,#rIndex2,,
右人指3,,,,RightIndexDistal,RightHandIndex3,,,,
,,,,,RightInHandMiddle,,,,
右中指1,,,,RightMiddleProximal,RightHandMiddle1,,rMid1,,
右中指2,,,,RightMiddleIntermediate,RightHandMiddle2,,rMid2,,
右中指3,,,,RightMiddleDistal,RightHandMiddle3,,,,
,,,,,RightInHandRing,,,,
右薬指1,,,,RightRingProximal,RightHandRing1,,rRing1,,
右薬指2,,,,RightRingIntermediate,RightHandRing2,,rRing2,,
右薬指3,,,,RightRingDistal,RightHandRing3,,,,
,,,,,RightInHandPinky,,,,
右小指1,,,,RightLittleProximal,RightHandPinky1,,rPinky1,,
右小指2,,,,RightLittleIntermediate,RightHandPinky2,,rPinky2,,
右小指3,,,,RightLittleDistal,RightHandPinky3,,,,
左下のConvert ListにbvhファイルをD&Dし、
その下のConvertボタンをクリック

手順4: VRMLiveViewerに導入して躍らせる

【1】VRMLiveViewerをFantom工房さんのBOOTHからDL
【2】起動したら、左側のファイル読込から好きなvrmファイルを読み込み
【3】右上のモーションの「BVH」を選択し、フォルダマークをクリック
【4】ロード履歴ウインドウのモーションタブの、右下フォルダマークをクリックし、vmdファイルを読み込み
【5】さっきまで「BVH」だった右上のモーションが「VMD」に変わり、アニメーションが再生されていたら成功!
【6】やったね!

手順3までで変換作業は完了なので、あとは実際に踊ってもらって楽しみましょう(*´▽`*)
VMDファイルなので、もちろんMMDでも読み込めるよ。

モーション位置はモデルの体格差などによってはズレるので、BVHtoVMDConverterのAutoBoneMap.csvで吸収するか、MMDで直接手直ししよう。表情も適宜つけてあげるといいかんじ。

好きなVRMを読み込もう
VMDモーションを読み込ませよう

動いてる~!

やったね!

というわけで、手順としては以上です。(*´▽`*)

不慣れなかた向けに細かめに書いてるけど、やってることは「おおまかな流れ」に書いたとおり、bvh書き出してvmdに変換してドーン! これだけです。
なので、一回やっちゃえば、二回目からはそんな迷わないはず。

Unityで作られたアニメーションをVRMLiveViewerやMMDに気軽に持っていければ色々捗るし、配布元さんがVMD形式用意するのも楽になりそう。
各ライセンス等守りつつ、ぜひぜひ楽しんでね。

(今回モーションを使わせていただいた八ツ橋まろんさんのFANBOXでは、最近tiktokで流行ったダンスモーションを色々配布していてオススメだよ)

それでは、よいバーチャルライフを。(*´▽`*)
せぃが君でした。


トラブルシューティング系

◆VRMLiveViewerでVMDファイルがうまく反映されない
 →BVHファイルでうまく動くか確認
  →うまく動く場合
   VMD変換で失敗していると思われるので、もう一回そこから。
   それでダメなら、BVH書き出しから。
  →エラーになる場合
   BVH書き出しから
   特にBVH Recorderの「Enforce Humanoid Bones」設定を確認
  →エラーにならないが、挙動が変
   BVH書き出しから
   特にBVH Recorderの「Blender」設定を確認
◆動くけど細かいモーション位置がずれる
 BVHtoVMDConverterのAutoBoneMap.csvで吸収するか、MMDで直接手直ししよう

記事を良き!と思った時に、BOOTHのブーストみたいに投げ銭できるみたい。いただいたサポートは、VTuber活動資金として大切に使わせていただきます。