LightWaveからBlenderを通してMMDへ吐き出すテスト
今回は実際にLightWaveからMMDにデータを持ってくる方法をやっていきます。
前回の記事はこちら。
LightWaveには直接MMD用のデータを出力することができないので、Blenderを変換器として使用します。
やり方としては
- 簡易的にウェイトを付けてFBX化
- FBXをBlenderを通してPMX化
という手順ですが、たぶんMAYAとか他のCGソフトを使っている場合でもこの方法になりそう。(blenderのmmd_toolsと同じようなプラグインがLWにもあればいいんだけどなぁ)
なんで直接BlenderでモデリングしてPMX化しないのか。
理由はBlenderとまだ仲良くなっていないからです。(LightWaveの方が慣れている)
ということでやっていきます。
簡易ウェイト付け
ウェイト付け準備
まずはウェイトを付けるための準備に入ります。
現状1レイヤー1オブジェクトになっているので、これを同じカテゴリーのレイヤーに突っ込みます。
- 前髪
- 横髪
- 目、ハイライト
- 後髪大、後髪中、後髪小
- 体、まゆげ、二重、まつげ、歯、舌
これで5つのレイヤーになるはず。
そしてボーンも同じように該当するボーンだけをコピペします。
このとき先端のtopボーンやIKボーン、ウェイトを設定しないボーンは選択しません。
体のボーンだけを選択してlowpoly_bodyにコピペ。
他のボーンも同じように目ボーンは目のオブジェクトに、各髪の毛のボーンもそれぞれのオブジェクトがあるレイヤーにコピペします。
自動ウェイト
ここからウェイト付けを行いますが今回はPMX化できるかどうかだけ確認したいので適当にやっちゃいます。
まず体のオブジェクトが入っているレイヤーを選択してVertex Paintを起動。
ウェイトタブの計算の中にある “ウェイトを計算" があるので実行。
するとあっという間にウェイト付けが完了します。
保存してスケルゴンツリーを開くと自動的に各ボーンに同じ名前のウェイトが割り当てられているのが分かります。
これを他のパーツに対しても行います。
1レイヤー化
すべてのオブジェクトのウェイト付けが終わったら選択してウェイト付けに使用したボーンを削除しちゃいます。
先ほど付けたウェイトが消えるんじゃないかと思いますが、残っているので大丈夫。
すべてのオブジェクトとボーンを一つのレイヤーにまとめます。
ここからちょっと小技的な内容ですが、ひとまとめにしたレイヤーを再びVertex Paintを開いて今度は何もせずに保存をすると、なんと同名のボーンにウェイトが割り当てられます。
ただtopボーンやIKボーンにはウェイトを作っていないので –(ハイフン) 表記になっています。
この状態だとレイアウトに持ち込んだ時に動いてほしくないのに動いちゃうので、ウェイト値が0%のzero_weightを作成します。
SkelegonEditorを開いてtopボーンとIKボーンのウェイトにzero_weightを設定。
分かりやすいようにボーン自体の色も変更。
設定箇所がたくさんあるのでSkelegonEditorを開く前にあらかじめtopとIKを選択してからSkelegonEditorを開くと既に選択された状態になるので設定しやすくなります。
これですべてのウェイト設定が埋まりました。
保存してレイアウトに持っていきますが、その前に読み込みたいオブジェクトが入ったレイヤーにだけ黒ポッチがあること確認。
もし他のレイヤーにもポッチがあると余分なものまで読み込んじゃうので注意。
全身のオブジェクトが入っているところにだけ黒ポッチを入れてレイアウトに送信。
スケルゴンの変換
レイアウトに読み込んでプラグインからSkelegonReaderを実行します。
標準機能の “スケルゴン変換" ではないので注意。
理由はモデラーのSkelegonEditorで編集したボーンはSkelegonReaderじゃないと反映されないからです。
実行すると “中心点の回転を記録しますか?" と出るので “はい" をクリック。
すると超高速でブィィイイイイイインッ!!と計算する様子が見れます。
こうゆうのなんか好き。
LWからFBXの書き出し
レイアウトの保存からFBXファイル出力からFBXを吐き出します。
出力する場所とファイル名を指定、そしてモデルとモーフとボーン階層の再ペアレントにチェックを入れてOK。
ちなみにモデラーにもFBX出力がありますが、こっちはボーンが反映されないのと同時に設定項目も少ないので基本使いません。
Blender
FBXからPMX化
Blenderを使ってFBXからPMX化していきますが、mmd_toolsが入っている前提で進めます。(導入方法はググってね)
Blenderを起動してimport→Blender標準のFBXを開いてPrimary Bone Axisを-Zにします。
-Zにする理由は顔の向いている方向がLightWaveだと-Z方向だからです。
読み込ませることができました。
と思いきやよく見るとセンターボーンとtopボーンが離れています。
なんなら首と頭のボーンも離れちゃっています。
これは後で直すことにしますが、ボーン以外は無事に読み込むことができたようです。
オブジェクトモードの状態でモデルを選択してMMDタブの “Convert Model" を実行します。
すると数値入力タブが開きますが、何もせずにOK。
さらにExportをクリック。
こちらの画面でも何やら設定項目というかメニューが現れますが、ファイル名を入力してこちらも他は何もせずExport。
これでPMX化できました。
ただのデータ変換なので簡単ですね。
PMXEditor
読み込みと確認
PMXEditorにさきほど作成したファイルを読み込ませてみました。
自分が時間かけて作ったモデルがちゃんと表示されるとなんか安心しますね。
四角ポリゴンが強制的に三角ポリゴンになっていますが、なんかこうゆう仕様のようです。
ひとまず読み込ませることに成功した様子。
ただ先ほどのBlender上で分離してしまったボーンですが、やっぱりおかしなことに・・・
頭や上半身のボーンの先端が外れちゃっています。(見えてないけど手首の方もtopボーンが外れちゃってた)
中身を見ると表示先(>)のボーンにチェックが入っておらず、代わりに相対の方にチェックが入っていてむちゃくちゃな数値が入っている状態でした。
だから外れた見た目になっているようです。
正常なものは表示先(>)のボーンにチェックが入っていて、ボーンもちゃんと指定されています。
何度もボーンを作り直しましたが、なぜか高確率で一部のボーンが外れちゃいます。
原因不明。
LightWave 2015でやっても同じ結果でした。
- SkelegonEditorで浮遊状態の親子付けにしている箇所にだけ問題が発生する
- スケルゴン変換で変換した場合は問題なし、ただし浮遊状態の親子付けは無くなる
- スケルゴン変換&レイアウト上で親子付けしたものをBlenderに読み込んでも変化なし
LightWaveのFBX出力にバグがあるのか、それともSkelegonEditorもしくはSkelegonReaderになんらかの問題があるのか・・・はたまたBlenderのFBXインポート機能に問題があるのか・・・
う~ん 謎。
ひとまずこれをPMX Editor上で直していきます。
ボーンの修正(PMX)
まず上半身2から行きましょうか。
該当箇所であるupper_body2の選択して表示先をボーン。
そしてneckの番号を入力します。
すると上半身2と首がくっついた状態に直ります。
これを他のおかしい箇所にも適応していきます。
ボーンの修正(Blender)
もしBlenderで直す場合は以下の手順を取ります。
- 移動したいボーンの先端を先にクリックしてからくっつけ先のボーンをクリック(選択順注意)
- 右クリックからSnapを開いてSelection to Activeをクリック
これで離れていたボーンが本来の位置に移動します。
ただ内部的には親子付けは外れたままなので親子付けの再設定をします。
上半身2の子である首のボーンプロパティを開いてConnectedにチェックを入れます。
これでPMXEditorで修正したものと同じような結果になります。
両目の設定
次は両目を一括で動かす処理を加えます。
はじめに右目と左目のボーンを選択。
複数選択だと同時で編集ができるので、このまま “回転+" をクリックして両目ボーンの番号をいれます。
これで両目ボーンを動かすだけで右目と左目を同時にコントロールすることができます。
ボーン名称の編集
ボーンの名前が全部英語なので、これを日本語にしていきます。
ただ一個一個変更していると日が暮れるので標準機能として備わっている “名称の一括編集" を使いましょうか。
編集のすぐ下にある項目をボーンにして和名列のボーン名を英名変更の列にコピペ。
そして確定を押します。
一時的に和名と英名に英語表記が入りますが、さらに "辞書から英名→和名作成" をクリックして確定をクリックすると・・・
辞書に登録されている内容が全部反映されます。
ん~らくちん♪
辞書自体はメモ帳で管理されているので、メモ帳を開いて編集すればさらに変換できる単語を増やせます。
簡単で良いですね。
ボーンだけでなくモーフや材質、剛体などの名称も一括変換できるので自分専用の辞書が作れそうです。
せっかくなのでまだ登録数が少ないですが、こちらに自分の辞書を置いておきます。
完成
動作確認
最後に動作確認。
TransformViewを開いてボーンを動かしてみました。
大丈夫そうですね。
ウェイトは自動ウェイトで適当に付けたので曲がり方は変ですが、LightWaveからBlenderを通してPMX化するという目的は果たせました。
ちなみにMikuMikuDanceにも持っていきましたが、ちゃんと表示できました。
剛体とかジョイントとか含めていないのでまだまだ不完全ですが、ひとまず第一関門突破です。
何とかいけましたがLightWaveはBlender含め他のCGソフトと違ってモデラーとレイアウトで構成されているので、編集モードやオブジェクトモードが無いのがちょっと引っ掛かりました。
ただ感覚的にはモデラー=編集モード、レイアウト=オブジェクトモードなのかなと。
今回はテスト段階だったのでローポリですが、次回はハイポリ化と正式なウェイト付けですかね。
尻とか肩とかのウェイト付けが怖い・・・何時間かかるのやら。
UV展開は一番最後の工程になりそうです。
まだまだ道のりは長い。
以上お疲れさまでした。
使用したツール
- GIF:Screen to GIF
- ペイント:ClipStudio Paint Pro
- データ変換:Blender3.6.4LTS
- モデリング:LightWave 2020.0.3