![見出し画像](https://assets.st-note.com/production/uploads/images/30760939/rectangle_large_type_2_a29857c8aa06aab9fb03d6f8dbfb3f8a.jpg?width=1200)
UnityでMMDをMMD4MachanimでFBX化しさらにそのFBXをVRMに変更して使うメモ
定期的にやる作業で、各々のマニュアルを見れば済む話なのですが、細かいやり方やパラメータすぐ忘れちゃうのでメモ
※MMDは製作者の許諾範囲に従ってご使用ください。
■MMD4Mecanimを使用してMMDからFBXを制作する
1.MMD4Mecanim
こちらからMMD4Machanimをダウンロード
http://stereoarts.jp/
解凍して、フォルダ内のMMD4Mecanim.unitypackageをUnityにインポート。
MMDファイルをダウンロードしてフォルダ内にある状態にする。
フォルダごとUnityのProjectにドラッグアンドドロップ。
※今回はホロライブの公式MMDを使用。
MMDをインポートすると、自動的にMMD4MecanimがMMDフォルダ内に
<MMDのファイル名>.MMD4Mecanim
というファイルを作っているので、それを選択して表示するインスペクタで利用規約を読み、チェックして「同意する」を押す。
![画像1](https://assets.st-note.com/production/uploads/images/30759355/picture_pc_d239832353bee52cacb5d6a1ed4ee07b.png?width=1200)
同意するとインスペクタが下記になるので、そのまま右下の「Process」を押す
![画像8](https://assets.st-note.com/production/uploads/images/30760560/picture_pc_267ed24761fc5a1daa5786c525ffa1c0.png)
するとDOS窓が開いて処理が始まるので暫く待つ(ちょっとかかる)
![画像3](https://assets.st-note.com/production/uploads/images/30759381/picture_pc_40347360a27ee1731068b579e793cc17.png?width=1200)
処理が終わるとMMDと同じフォルダ内に、MMDと同じファイル名の「*.fbx」ができているのでそれをクリック→インスペクタ
RigタブでHumanoidを選択してApplyボタンを押して「Configur」を押す
![画像8](https://assets.st-note.com/production/uploads/images/30760553/picture_pc_423a3d1f1ba56653ab5233488734c379.png)
インスペクタで全身が緑(ボーンが正しく認識されている)になっているのを確認して、左下あたりの「Pose」をクリックして「Enforce T-Pose」にする。(湊あくあモデルは元々Tポーズだったが、逆Yのこともあるため)
その後「Apply」を押して「Done」を押す。
![画像8](https://assets.st-note.com/production/uploads/images/30760572/picture_pc_f0381f730b59c9987b7b72a3876cb4ea.png)
この時点で普通のFBXとして変換されているので、適当な手持ちのモーションをAnimatorにのせ動作確認をする。またモーフが正しく動作するか手動でチェックする(この記事ではそのへんの解説はしません)
![画像8](https://assets.st-note.com/production/uploads/images/30760598/picture_pc_77e1c415de49c1d424250214176ff6df.png?width=1200)
ちなみにVRMにしてFBXで完結する場合、Hierarchy上のFBXを選択→インスエペクタ内の一番下「Physics Engine」がデフォルトでNoneになっていますが、「Bullet Physics」にすると、一切パラメータ調整はできませんがスカートや紙など最低限の揺れモノが動作します。
![画像8](https://assets.st-note.com/production/uploads/images/30760600/picture_pc_d722be85113e113818c291f6d39be3ca.png)
余談ですが、VtuberをUnityで扱うときはカメラのField of Viewはデフォルトの数値(60)では広角すぎるので20~30くらいにしましょう。広角カメラはパースがついて顔がゆがむ=かわいくないので、女性の顔は望遠で撮るというのは現実の撮影でも常識だったりします。
シェーダーを変更します。現状のMMD4Mecanimが用意したシェーダー(MMDLitなど)はVRMには持っていけません。下記の手順でUniVRMを導入してから、シェーダーを手作業でMToonに変更しましょう。MMDLitの影の色などは引き継がれないので、変更時に手動で色コードをコピーします。個人的にはVtuberモデルの場合、顔のシェーダーでは影は反映させないほうが良いと思います。トゥーン表現に重要なエッジカラー(枠線)もMToonシェーダー内で設定できます。
MMDは基本ポーズがAポーズ(腕を水平から40度くらい下に傾けた姿勢)になっていますが、UnityのHumanoidモデルはTポーズが基本となります。このまま変換するとUnityのHumanoidを前提としたアニメーションを適用した時におかしくなるので、Tポーズに変更します。Hierarchrからモデルの関節部分のオブジェクトを選択して、Transformで直接角度を指定します。関節の名前はモデルによって異なりますが「15.joint_RightArm」「36.joint_LeftArm」みたいな感じです。今回はRotationのZ軸を40度、-40度にしました。
■FBXからVRMへ
このFBXをVRMにします。下記よりUniVRMのunitypackageを
ダウンロードします。unitypackageをそのままUnityにドラッグしてインポートします。なお、UniVRMのバージョンですが、V1.x系とV0.X系があります。新しい方がいいようにも感じますが、VRMというのは3Dモデルを共通の仕様で色々なソフトですぐ使えるところに利点があります。V0.X系で最適化されたソフトも多く、互換性を考えるとV0.X系の方を僕はおすすめします。
具体的なバージョンですが、僕はv0.61.1を使っています。このバージョンはCluster.さんが推奨バージョンとしており、まあCluster.が推奨してるからには安定していて使ってる人一番多いんじゃないかなくらいの理由です。
上記からUnityPackageをダウンロードし、Unityにインポートします。
先ほどヒエラルキーに置いたFBXモデルを選択(ProjectのFBXではなく、hierarchyに置いたほうを選択)して、メニューの「VRM」→UniMRM-****→Export humanoidを選択します。
![画像8](https://assets.st-note.com/production/uploads/images/30760606/picture_pc_b9d7247c2b2ab3f9895944e76b0a2f17.png?width=1200)
下の画面の「VRM EXporter」が出てくるので、ExportSettingsをクリックして開き、モデルのTitle、Author、Version情報を入力し、「Force T Pose」にチェックして右下の「Export」を押します。(この画面が小さくて上のコマンドラインしか見えないことがあるので、その時はマウスでウインドウを大きくしてください。)
保存タイアログが出るので、「Assets」以下の好きな場所においてください。
![画像9](https://assets.st-note.com/production/uploads/images/30760645/picture_pc_54b358fefd83f6fe0f019e3e68e5a16e.png?width=1200)
出力が成功すると、保存フォルダの中にVRMファイルが保存されます。
なお、先程FBXの段階でシェーダーをMToonに変えなかった場合、MMDで設定したシェーダーがリセットされ、Standardになってしまっています。その場合はここでこのStandard Shaderをすべて「VRM」→「Mtoon」に変更します。
![画像10](https://assets.st-note.com/production/uploads/images/30760672/picture_pc_83279f42243969f1b699bfcf654abf85.png?width=1200)
![画像11](https://assets.st-note.com/production/uploads/images/30760735/picture_pc_a5d3eb65d2962c12bfaa3581961676bc.png?width=1200)
Mtoonにしただけでもこのくらいきれいになりました。
![画像12](https://assets.st-note.com/production/uploads/images/30760754/picture_pc_014581e27d3ba0adaee5adb634b7a906.png?width=1200)
正しく動いていますが、揺れモノはまったく動いていません。これを揺らすには、Springboneなどの設定が別途必要になります。
VRMには標準でVRMSpringboneという揺れモノコンポーネントが付属しています。ただこれはモデルの揺らしたいところにボーンがモデル製作時点で埋め込まれていることが前提です。また、足を90°に曲げたときなどにスカートなどは貫通してしまうことが多いです。
UnityのClothを使用するか、有料アセットの「Magic Cloth」などを使用すると貫通せずに処理することができますが、これはVRM本体とは別の処理となります。他のソフトウェアで読み込ませたいなど、純粋にVRMだけで完結させたいときはVRMSpringboneを使用することになります。
詳しくは、「VRMSpringBoneの設定メモ」の記事を参照
余談ですが、当初は湊あくあさんのMMDを使用して変換しようとしましたが、どうしてもVRMに変換するところでUnityがフリーズし、変換できませんでした。FBXとしては正常に動作しているので、MMD内のボーンの仕様などがUniVRMの使用制限に引っかかっている可能性があります。VRMファイル出力までは成功してますが、Prefabを生成するところで無限ループに入っている印象。
余談追加。兎田ぺこら、博衣こよりさんの公式MMDモデルをMMD4Mecanimで変換したところ、テクスチャーの場所が検知できず一切自動設定されない現象に見舞われました。原因は不明ですが正常に変換されたホロライブMMDモデルはテクスチャーの画像フォーマットがPNG、上記のぺこら・こよのモデルはTGAだったのでそれも一因かもしれません。結局手動ですべてのマテリアルにテクスチャーを設定しました。
この記事が気に入ったらサポートをしてみませんか?