今回は Blender を通して MMD に持っていくという内容です
恐らく大半の MMD モデルは、Blender を使って作られているんじゃないかと思っています
そんな中、自分は LightWave を使っています
なぜなのか?
理由は一番使い慣れているからに尽きます

じゃっく
結局慣れているものが一番早いんよ
なので、LightWave で MMD モデルを作っているのですが、残念ながら標準で PMX 形式を吐き出す術がありません
そこで Blender をデータ変換ソフトとして使ってみました
つまずいたポイントはいくつかありましたが、最終的には MMD に持っていくことに成功
今後もこの方法で作っていくと思うので、やり方を残していきます
準備
まずは準備をしないことには動けないので、作っているデータとBlender 側の準備を済ませておきます
Blender に SKkeeper を入れておく

まずは Blender にアドオンをいくつか追加しておきます
一つ目が SKkeeper というもの
これはモーフ(シェイプキー)付きのオブジェクトにモディファイアを当てるものになります
標準の Blender だとなぜかできない仕様になっていますが、SKkeeper というアドオンを使うことによって、それを可能にします

じゃっく
ありがたく使わせて頂きます
このアドオンは以下のリンク先から導入できます
Blender に mmd_tools を入れておく

二つ目のアドオンが mmd_tools というものです
Blender も標準では PMX 形式へ変換ができないので、導入することで可能にします
MMD モデルを作る上では必須になります
リンク先は以下です
インストールしたら、ちゃんと画面に表示されるか確認

じゃっく
ちなみに Blender は ver.4.2.13LTS を使いました
各オブジェクトとボーンを一つにする

LightWave の方では、以下を一つのレイヤーにまとめます
- 全身のボーン
- 各オブジェクト
正確にはモデラーではボーンのことをスケルゴンと呼びますが、単純にボーンとします

じゃっく
スケルゴン=疑似ボーンみたいな感じ
各オブジェクトはモーフとウェイトマップの作成が完了していることが前提です
各ボーンへのウェイトマップ適用も忘れずに
本体を正常な変形ができる状態にする

レイアウトに本体モデルを読み込んで、Skelegon Reader で正式なボーンへ変換
「中心点回転記録」は実行します
一番親のボーンを右クリックして、繋がっているボーンを全選択
その状態でボーンプロパティを開いて、全てのボーンのウェイトマップを「ウェイトのみ使用」に変更します
同時に「固定長の強さで乗算」のチェックを外して、正常に変形できるか確認しておきます
手順
レイアウト内で変形に問題が無いことが確認出来たら準備完了
Blender を通して MMD モデルに変換する作業に入ります
以下が手順です
最初はレイアウトでモデルを A スタンスにします
その状態で FBX 形式で吐き出して、Blender で読み込み
読み込んだら mmd_tools の力を借りて、PMX 化します
あとは PMX Editor で読み込んで、もろもろの設定をして完成、といった流れです
A スタンスに変更する

モデルは T スタンスで作っていたので、A スタンスに変更します
これは MMD のモデルが A スタンスになっているからです
肩と腕の角度を変えて、A スタンスにしていきます
- 肩:5° くらい
- 腕:30° くらい
モデルの質感を変更する

モデルの質感も変えます
色・質感編集から「スムージング」を有効へ変更
MMD 上でも反映されることが分かったので、設定しました
モデルを FBX で出力する

「 FBX ファイル出力」から FBX 形式のファイルを書き出します
設定項目がいっぱい出てきますが、デフォルトのままで OK
モデラー側にも FBX ファイルの書き出し項目がありますが、オブジェクトだけしか出せないので使わないです
Blender で FBX を読み込む

ここで Blender の出番
インポートから FBX を選んで、以下の設定にしてから先ほど出力したファイルを読み込みます
- アニメーション:解除
- プライマリーボーン:マイナス Z 軸
プライマリーボーンをマイナス Z 軸にするのは、LightWave 上でモデルが向いている方向がマイナス Z 軸方向だからです
mmd_tools で PMX 化する

読み込むとモディファイアが一つだけある状態なので、これを適用する必要があります
このモディファイアを適用しないと、せっかく設定したポーズが無かったことになります

じゃっく
T スタンスに戻っちゃいます
標準ではモーフがあるモデルへの適用ができないので、ここで SKkeeper の機能を使います
オブジェクトモードで本体オブジェクトを選択
画面上部にあるオブジェクトタブから Apply All Modifiers (Keep Shapekeys) を実行します
これですべてのモディファイアが適用されます

次はボーンを選択して、ポーズモードへ切り替え
画面上部のポーズタブから、「レストポーズとして適用」を実行します
これもやっておかないと、ボーンだけ T スタンスという状態になっちゃいます

オブジェクトモードに戻って、モデル本体を選択
MMD タブから「モデルを変換」をクリックして、MMD モデルへ変換します
「 MMD モデルへ変換」という項目が出てきますが、とくにいじらずそのまま OK

このまま出力して PMX Editor で確認したところ、モデルがぐっしゃぐしゃに崩壊しました

じゃっく
たまらず発狂
ボーンの並びに問題があったので、もう一度ツール内を探してみたところ、MMD メニューの「ボーン順序」という項目を発見
内を確認すると、なんと中身はエラーまみれになっていました
並びが正しくなれば良いので、Fix Bone Order をクリック
並び順を変える定義を Rebuild:Path に変更すると、一発でエラーが修正されます

あとはエクスポートから PMX ファイルを書き出します
いっぱい項目が出てきますが、スケールの項目だけちょっと変更
デフォルトでは 12.50 ですが、ここを 10.0 にします
10.0 にするのは LightWave で作ったサイズと合わせるためです
PMX Editor で PMX を読み込む

出力した PMX ファイルを PMX Editor で読み込んで確認
確認は TransformView でやりました※おまけに理由を残しています

じゃっく
良かった 大丈夫そう
修正
英語名から日本語名に変換する

ボーンとモーフは英語で書いてあるので、これらを日本語に置き換えていきます
編集タブから「名称の一括編集」をクリック

開いたら画面左上のリストからボーンを選んで、「和名」の中にある英語の名称を「英名変更」へコピペします
コピペしたら確定をクリックして、一旦「英名」に反映させます
先端が外れているボーンを修正する

あとは見た目上の不具合があるボーンを直していきます
例として頭から
PMX 編集から頭のボーンを探します

「表示先(>)」の内容を「ボーン」に切り替えて、項目の中を子である頭先に変更

これで直ります
ちなみにグレーアウトしている相対の数値ですが、ファイルを読み込み直すと全部ゼロになります
残りの部位も同じようにやれば OK
- 右手首
- 左手首
- 下半身
- 上半身2
- センター
動作確認
MikuMikuDance で確認

一通り終わったので、MMD(MikuMikuDance) に読み込ませてみました
ボーンの表示登録をしていないのでセンターしか出ていませんが、ちゃんと日本語表記になっています
モーフも日本語になっていますし、変形も LightWave で見たものと同じであることが確認できました

じゃっく
良かった これで完了です
まとめ
それでは今回のまとめになります
- MMD を作るなら mmd_tools は必須
- SKkeeper のような効率系アドオンも必須
- ポーズはレイアウトで A スタンスにしておく
- モディファイア適用後にレストポーズを適用
- ボーン順序は Fix Bone Order から直せる
- 先端がおかしいボーンは表示先から直せる
- 名前の一括置換は PMX Editor からできる
今回は LightWave から Blender を通して MMD に持っていく工程を残しました
なぜかボーンの先端が外れたり、ボーンの順序がおかしくなったりなど、つまずいたポイントはありましたが、簡単に対処できる内容で良かったです
ただ、ふと思ったのは LightWave にも直接 PMX 出力できるプラグインがあればなぁ、なんて思ったりも・・・
無いものねだりですけどね
それでは、お疲れさまでした
おまけ
ボーン並びが違うとモデルが崩壊する

これはまだ安定した PMX 化への工程がはっきりしていなかったときに発生した出来事です
テストで出したモデルを PMX Editor で読み込んで、PMXView で確認した時は特に問題無いように見えました

じゃっく
あぁ よかった~!
だが、しかしっ!・・・
TransformView で確認すると、モデルが崩壊しているではありませんかっ!

じゃっく
ガギギグギガガッ!!(発☆狂)

何が起こったのかボーンの状態を確認したところ、親ボーンの項目でエラーを出している箇所がいくつかありました
どうやら内部的に親子付けが正しくても、リスト内のボーンの並びがおかしいと崩壊するようです
ただ、これは上側に親ボーン、下側に子ボーンの順にすれば簡単に直せることが分かりました

「PMX データの状態確認」からエラーを出しているボーンへ飛ぶことができますが、一個一個修正するのはかなり大変です

じゃっく
これでは日が暮れます
そこで mmd_tools の中に、なんか一気に修正できるもの無いかな~と探していたところ、該当する機能があったので、それで修正できました
こういった機能があるのはありがたいですね
無かったらどうしようと思いましたが・・・
Blender に読み込むと一部のボーンの先端が外れる

こちらは LightWave から出力した FBX を Blender に読み込んだ時の画像です
なぜかボーンの先端が外れちゃっています
この謎現象は読み込んだ直後から発生しました

じゃっく
なんこれ???
細かい原因は不明ですが調べた限りでは、離れた位置で親子付けされているボーンにだけ発生していることが分かりました
それでも修正が必要なボーンが少ないのが救いでしたね
PMX Editor で簡単に直せました
Blender の標準機能ではモーフ付きオブジェクトにモディファイアを当てられない

冒頭からあったように、Blender は標準でモーフのあるオブジェクトにモディファイアを当てられません
個人的にこれはちょっと謎仕様です

じゃっく
なぜこんな仕様に?
手動でも一応適用することは可能なようですが手数が多くて、さらにモーフの数が多ければ多いほどかなりの時間を使ってしまいます
そこで SKkeeper というアドオンを今回使わせて頂きました
今後もありがたく活用していきたいと思います
参考資料
使用ツール
- 3DCG
- Blender
- PMX Editor
- LightWave3D
- 動画
- Bandicam
- ScreenToGif
- 画像
- CLIP STUDIO PAINT PRO