今回は 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 の方では、以下を一つのレイヤーにまとめます

  • 全身のボーン
  • 各オブジェクト

各オブジェクトはモーフとウェイトマップの作成が完了していることが前提です

じゃっく

各ボーンへのウェイトマップ適用も忘れずに

本体を正常な変形ができる状態にする

レイアウトではボーンを読み込んで「中心点回転記録」の実行と、全てのボーンのウェイトマップを「ウェイトのみ使用」に変更

「固定長の強さで乗算」のチェックを外して、正常に変形できる状態にしておきます

手順

レイアウト内で変形に問題が無いことが確認出来たら準備完了

Blender を通して MMD モデルに変換します

以下が手順です

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 化する

STEP1
SKkeeper を使ってモディファイアを適用する

読み込むとモディファイアが一つだけある状態なので、これを適用する必要があります

このモディファイアを適用しないと、せっかく設定したポーズが無かったことになります

じゃっく

T スタンスに戻っちゃいます

標準ではモーフがあるモデルへの適用ができないので、ここで SKkeeper の機能を使います

オブジェクトモードで本体オブジェクトを選択

画面上部にあるオブジェクトタブから Apply All Modifiers (Keep Shapekeys) を実行します

これですべてのモディファイアが適用されます

STEP2
ポーズをレストポーズとして適用する

次はボーンを選択して、ポーズモードへ切り替え

画面上部のポーズタブから、「レストポーズとして適用」を実行します

これもやっておかないと、ボーンだけ T スタンスという状態になっちゃいます

STEP3
モデルを PMX 化する

オブジェクトモードに戻って、モデル本体を選択

MMD タブから「モデルを変換」をクリックして、MMD モデルへ変換します

いくつか項目が出てきますが、とくにいじらずそのまま OK

STEP4
ボーンの並びを修正する

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

じゃっく

たまらず発狂

ボーンの並びに問題があったので、MMD メニューの「ボーン順序」という項目内を確認

中身はエラーまみれになっていました

並びが正しくなれば良いので、Fix Bone Order をクリック

並び順を変える定義を Rebuild:Path に変更すると、一発でエラーが修正されます

STEP5
PMX 形式で出力する

あとはエクスポートから PMX ファイルを書き出します

いっぱい項目が出てきますが、スケールの項目だけちょっと変更

デフォルトでは 12.50 ですが、ここを 10.0 にします

10.0 にするのは LightWave で作ったサイズと合わせるためです

PMX Editor で PMX を読み込む

出力した PMX ファイルを PMX Editor で読み込んで確認

確認は TransformView でやりました

じゃっく

良かった 大丈夫そう

修正

英語名から日本語名に変換する

STEP1
名称の一括編集を開く

ボーンとモーフは英語で書いてあるので、これらを日本語に置き換えていきます

編集タブから「名称の一括編集」をクリック

STEP2
和名を英名に反映させる

開いたら画面左上のリストからボーンを選んで、「和名」の中にある英語の名称を「英名変更」へコピペします

コピペしたら確定をクリックして、一旦「英名」に反映させます

STEP3
英名から和名に置き換える

次に編集から「辞書から英名→和名作成」を実行

すると、「和名変更」に日本語名が入るので、そのまま確定をクリック

これで日本語の名称に置き換わります

モーフの方も同じやり方で置き換えます

和名と英名は「和英変換」というテキストファイルで管理されているので、もし足りない名称や変更したい名称がありましたら、編集して変換項目を増やすことができます

PMX 編集に戻って確認

ちゃんと置き換わっていますね

先端が外れているボーンを修正する

あとは見た目上の不具合があるボーンを直していきます

例として頭から

PMX 編集から頭のボーンを探します

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

これで直ります

ちなみにグレーアウトしている相対の数値ですが、ファイルを読み込み直すと全部ゼロになります

残りの部位も同じようにやれば OK

  • 右手首
  • 左手首
  • 下半身
  • 上半身2
  • センター

動作確認

MikuMikuDance で確認

MMD (MikuMikuDance) に読み込んでみました

ボーンの表示登録をしていないのでセンターしか出ていませんが、ちゃんと日本語表記になっています

モーフも日本語になっていますし、変形も LightWave で見たものと同じであることが確認できました

じゃっく

これで完了です

まとめ

それではまとめになります

Blender を通せば MMD に持っていける
  • SKkeeper のようなアドオンの導入は必須
  • ポーズはレイアウトで A スタンスにしておく
  • モディファイアを当ててからレストポーズを適用をする
  • ボーン順序は Fix Bone Order の Rebuild:Path で直せる
  • 先が外れているボーンは表示先のボーンを子にすれば直せる
  • ボーン名の置換は PMX Editor の「名称の一括編集」を使う

今回は LightWave から Blender を通して MMD に持っていく工程を残しました

なぜかボーンの先端が外れたり、ボーンの順序がおかしくなったりなど、つまずいたポイントはありましたが、簡単に対処できる内容で良かったです

ただ、ふと思ったのは LightWave にも直接 PMX 出力できるプラグインがあればなぁ、なんて思ったりも・・・

ないものねだりですけどね

それでは、お疲れさまでした

おまけ

ボーン並びが違うとモデルが崩壊する

これはまだ安定した PMX 化への工程がはっきりしていなかったときに発生した出来事です

テストで出したモデルを PMX Editor で読み込んで、PMXView で確認した時は特に問題無いように見えました

じゃっく

あぁ よかった~!なんて思っていましたね

だが、しかしっ!・・・

TransformView で確認すると、モデルが崩壊しているではありませんかっ!

じゃっく

ガギギグギガガッ!!(発☆狂)

何が起こったのかボーンの状態を確認したところ、親ボーンの項目でエラーを出している箇所がいくつかありました

どうやら内部的に親子付けが正しくても、リスト内のボーンの並びがおかしいと崩壊するようです

ただ、これは上側に親ボーン、下側に子ボーンの順にすれば簡単に直せることが分かりました

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

じゃっく

これでは日が暮れます

そこで mmd_tools の中に、なんか一気に修正できるもの無いかな~と探していたところ、該当する機能があったのでそれで修正できました

こういった機能があるのはありがたいですね

Blender に読み込むと一部のボーンの先端が外れる

こちらは LightWave から出力した FBX を Blender に読み込んだ時の画像です

なぜかボーンの先端が外れちゃっています

この謎現象は読み込んだ直後から発生しました

じゃっく

なんこれ???

細かい原因は不明ですが調べた限りでは、離れた位置で親子付けされているボーンにだけ発生していることが分かりました

それでも修正が必要なボーンが少ないのが救いでしたね

Blender の標準機能ではモーフ付きオブジェクトにモディファイアを当てられない

冒頭からあったように、Blender は標準でモーフのあるオブジェクトにモディファイアを当てられません

個人的にこれはちょっと謎仕様です

じゃっく

なぜこんな仕様に?

手動でも一応適用することは可能なようですが手数が多くて、さらにモーフの数が多ければ多いほどかなりの時間を使ってしまいます

そこで SKkeeper というアドオンを今回使わせて頂きました

今後もありがたく活用していきたいと思います

参考資料

使用したソフト

3DCG
  • Blender
  • LightWave3D
画像
  • CLIP STUDIO PAINT PRO
動画
  • Bandicam
  • ScreenToGif