MMD Tools AppendというBlenderアドオンに新機能 Humanoid Renamer を追加してみたので、今回はそれについて書きます。
はじめに
MMDをやっていると、自分の使いたいモデルがVRMやFBXといった、MMDで扱えない形式になっていることがあります。PMX形式でないモデルを使うためには、モデル変換をしないといけません。
VRMモデルであればVRM2PMXConverterやvrm2pmxといった便利なツールがありますが、FBXだと一発で変換できるツールはありません。
この動画のようにいったんVRMに変換するという方法もありますが、モデルに複雑なリグが付属する場合VRMではどうにもならず、手作業でボーンを編集・削除しないといけなかったりと、とても面倒です。
(YouTube: BlenderでFBXモデルをMMDに変換する方法)
MMDやBlenderを使っている方ならMMD Toolsはすでに知っていると思いますが、MMD Toolsの モデルを変換 ボタンはボーン名を変更したり、MMDで必須のボーン(足IK等)を自動で追加したりしないので、結局面倒なのは変わりません。
そこで今回紹介するのはMMD Tools Appendというアドオンです。
MMD Tools Appendは元々MMD UuuNyaa Toolsという名前で、MMD ToolsメンテナーのUuuNyaaさんによって開発されていました。現在はMMD ToolsとともにMMD-Blenderで開発されています。
簡単に言えば、AppendはMMD Toolsと連携してMMDモデルを使った映像制作をしやすくするアドオンです。
このアドオンにUnityとかGodotで見るような、MMD専用のHumanoidマッピングシステムを追加してみました。この記事ではその仕組みや使い方について解説します。
(↑VRM AddonのVRM HumanoidをMMDに変換してみた!)
Humanoidとは?
Humanoidとはヒューマノイドロボットのように、人を模した物を指しています。ゲームエンジンにモデルを取り込む際、エンジンが定義したHumanoidマップをモデルに設定することで、ボーン名に関係なく自動でモーションを適用できるようになります。
MMDでは名前が一致しないとモーションが読み込まれないため、正しいボーン名が重要になります(MMD Toolsでも同じ)。もちろん手作業で正しい名前を設定することもできますが、指1-3や左右を含めると必須ボーンは50本以上になります。
また、海外のユーザーにとって日本語のボーン名を指定するのは手探りになるためもっと大変です。そこで、表からコピペするよりもっと簡単な方法はないかと考えたのが Humanoid Renamer です。
自分で名前を設定するのではなく、ゲームエンジンでHumanoidを設定するように、対応するボーンを選択して実行するだけになっています。ボーンもHumanoid認識によって自動選択できるようになっています。
工夫した点
新規でHumanoid機能を作るにあたって、こんな点を考慮しました。
- 柔軟なHumanoidパネル
- Humanoid自動認識
- MMDモデルに自動変換
Humanoidパネル
(↑Lunacyでのスケッチ)
デザインはVRM AddonのHumanoidパネルを参考にしました。オリジナルと異なり、ボタンでカテゴリを切り替えられるようにしたためシンプルな見た目になっています。
HumanoidパネルはUIラベル等へのハードコードを避け、 HUMANOID_DEFAULTS という辞書型の変数で定義されているので、定義を更新したり将来カスタムプリセットを読み込む機能を実装するのが簡単になっています。
UpperChestは上半身3に相当するのですが、これはゲームモデルから変換するというのを想定していて、必ずしも埋める必要はありません。このように厳密に親子関係を強制しないので、親子構造が壊れていたり存在しないボーンがあっても飛ばせるようになっています。
また、Blender 4.3以降ならスポイトでビューポートからボーン選択することもできます。
Humanoid自動認識
Humanoid自動認識を使えば、ボーンを自動で選択してくれます。これをどう実現しようか考えるのが一番難しかったです。
RigifyやMixamoといったリグのボーン名を事前にリストアップしておくのではなく、ボーン位置や向き、構造を重視するようにしました。これはもし仮にボーン名が英語や日本語でなかった場合でも動作するようにするためです。複数の辞書から検索する必要がないため、一瞬でボーンが選択されるようになっています。
Humanoidでどの箇所が一番見つけやすいか考え、指の数に対応する子ボーンを持つ手首を最初に選ぶことにしました。子ボーンの数が多いボーンの中でも一番横方向に離れているものを選ぶようになっています。
その他のボーンを探す際には、親ボーンから子を探すと複数候補が出るが、子ボーンに対応する親は1つに決まるというのを生かしています。指やつま先をまず探し、そこから traverse_parent_chain() を使って腕や背骨、足といった親チェーンを探しに行くようになっています。ひじ、ひざは中央にあるボーンを探しに行くため、捩りボーンは無視されるようになっています。
最後に、Humanoid構造だけではうまくいかなかった時は、左右片方が埋まっていたら正規表現で置き換えて補間します。ちなみに、非表示になっているボーンは無視されるため、余計なボーンは隠しておけば削除しなくても正しいボーンを認識できます。
MMDモデルに変換
(↑Rigify Meta-RigをMMDに変換)
Humanoidパネルで選択したボーンを名称変更したあとは、MMD Toolsの モデルを変換 を呼び出しマテリアルやMMDルートオブジェクトを生成します。それから
- 表情枠の設定(Humanoidパネルのグループを使う)
- 足IKや両目ボーンの追加(必須ボーンがあれば)
- 下半身と上半身の分離
を行いMMDで正しく動作するようにします。
Rigifyモデルの変換例
(YouTube: RigifyモデルをMMDに変換する方法)
MMD Tools AppendにはRigifyリグを解除する機能もついていて、この動画のように変換を素早くできるようになっています。
改善点
現時点では
- モデルはY軸負方向(Blenderにおける前)を向いていないといけない
- 自動認識の精度はリグ専用の辞書を作って検索・置換するより劣る
- FBXモーションはMMDモデルに変換する際下半身の調整をするため壊れる
- スタンスの変更(T-pose to A)はできないため、別のアドオン(T2A PoseConverterなど)かPmxEditorで修正しないといけない
といった改善点があります。これらは今後のアップデートで修正する予定です。
最後に
2021年に初めてFBXモデルをMMDに移植しようとした時、ベイクやボーン構造といった、多くの点につまずき結局諦めてしまいました。
それからは、BlenderやPmxEditorについてもっと理解しようとチュートリアルをこなしたりモデリングにも挑戦するようになり、知識を蓄えてきました。2024年にはVRMを経由しての移植に挑戦し、ついに成功しました。(Grayちゃん)
Blenderアドオン開発に携わるようになってからは、既存のワークフローをいかに改善できるかとずっと試行錯誤し続けてきました。Humanoid Renamerはその成果物です。これでモデル変換が劇的に楽になり、映像制作などもっと重要なステップに集中できるようになります。
このほかにも、これまでにMMD Tools & MMD Tools Appendに多くの機能追加をしてきました。これらの機能が、作品制作の役に立てれば幸いです。