今回は 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 を選んで、以下の設定にしてから先ほど出力したファイルを読み込みます

Blender での FBX 読み込み設定
  • アニメーション:解除
  • プライマリーボーン:マイナス Z 軸

プライマリーボーンをマイナス Z 軸にするのは、LightWave 上でモデルが向いている方向がマイナス Z 軸方向だからです

mmd_tools で PMX 化する

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

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

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

じゃっく

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

標準機能ではモーフがあるモデルへのモディファイアの適用ができません

なので、ここで SKkeeper の機能を使います

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

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

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

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

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

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

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

STEP3
モデルを PMX 化する

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

MMD タブから「モデルを変換」をクリックして、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 で見たものと同じであることが確認できました

じゃっく

良かった これで完了です

まとめ

それでは今回のまとめになります

まとめ
  • MMD を作るなら mmd_tools は必須
  • SKkeeper のような効率系アドオンも必須
  • ポーズはレイアウトで A スタンスにしておく
  • モディファイア適用後にレストポーズを適用
  • ボーン順序は Fix Bone Order から直せる
  • 先端がおかしいボーンは表示先から直せる
  • 名前の一括置換は PMX Editor からできる

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

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

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

無いものねだりですがね

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

おまけ

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

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

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

じゃっく

あぁ よかった~!

だが、しかしっ!・・・

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

じゃっく

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

一体何が起こったのか

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

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

じゃっく

MMD モデルの場合は、このリストの並びがとても重要のようです

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

一応「PMX データの状態確認」からエラーを出しているボーンへ飛ぶことができます

ただ、一個一個修正するのはかなり大変

じゃっく

これでは日が暮れます

そこで mmd_tools の中に

「なんか一気に修正できるもの無いかな~」

と探していたところ、Fix Bone Order というボーンの並びを修正する機能があったので、それで修正できました

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

無かったらどうしようと思いましたが・・・

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

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

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

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

じゃっく

なんこれ???

細かい原因は不明

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

とりあえず、そんな状態のボーンは多くなかったので、PMX Editor でサクッと修正

簡単で助かりました

Blender 上でも直せたら良いなとも思ったので、ちょっとここ勉強してきます

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

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

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

じゃっく

なぜこんな仕様に?

一応手動でも適用させるようにすることは可能なようです

ただ、手数が多くて大変そうな印象を受けました

モーフの数が多いほど、かなりの時間を使ってしまいそうなので、できればやりたくない・・・

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

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

参考資料

使用ツール

3DCG
  • Blender
  • PMX Editor
  • LightWave3D
動画
  • Bandicam
  • ScreenToGif