2015年06月15日

Blenderを使用してMMDモデルをUE4.8で躍らせる(後編)(実践編)

というわけで前フリが長かったが、ここからが本題である。この記事では、Blenderを使ってMMDモデルとモーションをFBX変換し、UE4内に持っていく手順を記述したい。

使用ソフトと設定

本記事で使用した筆者のBlenderの環境は以下のとおり。

ここでちょっとした小ネタ。私は「ユーザー設定」の「入力」タブで以下のように設定することで、今までBlenderを触って10分で泡を吹いて気絶していたところが、30分くらいまで耐えられるようになりました。

  • 左メニューの「選択:左 右」のボタンで「左」をオンに。
  • 「3Dビュー」>「3D View(Grobal)」を展開し右のリストから「3Dカーソルを設定」をオフ。
  • 「ビューを回転」をRight Mouseに変更。
  • 「ビューを移動」をMiddle Mouseに変更。

また今回は以下のツールも必要。

モデルファイルの調整

Blenderにインポートする前に、Blender上での作業をなるべく減らすためにPMD/PMXファイルに下ごしらえをしておく。モデルファイル(PMD/PMX)をPMXエディタで開き、

  • 「全ての親」ボーンが無い場合は追加しておく。(編集>ボーン>「全ての親」ボーンの追加)
  • ○○先ボーンはなるべく相対化して(消して)おく。(編集>ボーン>〜先ボーンの相対化)
  • ダンスに必要ないアクセサリがある場合は消しておく。

変更できたら別名で保存しておく。くれぐれも上書きはしないように。

PMX Editor

なお今回はサンプルモデルとして東北ずん子さんをお借りしている。入手先はこちら。

東北ずん子

MMDモデルの読み込み

Blenderを起動する。とりあえず真ん中の邪魔なボックスをDeleteボタンで消したあと(この状態で「スタートアップファイルに保存」しておくと良い)、画面左の縦に並んでいるタブから「mmd_tools」を選ぶ。そして「Import Model」をクリック。ここで先ほど手を加えたpmxを読み込む。

Blender mmd_tools 読み込んだ

次に、読み込んだモデルを選択した状態で(選択しないとボタンが表示されない)、mmd_toolsのImport Motionをクリック。左下のオプションで「余白」とあるがこれを「0」に設定しておくこと。その後vmdファイルを指定して読み込み。

読み込んだらテンキーの「1」を押しておくと正面からの視点になって見やすい。その後画面下の再生ボタンをおして、アニメーションが動くことを確認する。髪などを揺らしたい場合は「Rigidbody」の下の「Build」を押せば揺れるようになる。

※なお、Blender内での髪やスカートなどの物理の挙動がおかしくてもFBXにはそのまま出力されてしまう。一度書き出してしまうとUE4上では手が加えられないため出力前にBlender上で破綻の原因を調整し直しておく必要がある。あるいは、MMD等を使用して物理の挙動を予めモーションに焼きこんでしまったうえで問題箇所を調整する方法もある。

ボーンの設定

ボーンの設定をする。これから出力するFBX 7.4バイナリ形式ではUE4インポート時に「Rootボーンが複数ある」モデルはエラーが出て読めない(ASCIIだと読めるらしいが筆者が試した感じでは別の不具合が出てくる)。なのでボーンを編集してRootボーンを一本に絞る。RootとはMMD風に言うなら「全ての親」のことである。

先ほどの下ごしらえでMMDモデルには「全ての親」の下に全てのボーンがまとまっているはずなのだが、なぜかそこからはみ出しているボーンがある。それは高確率で「付与ボーン(他のボーンの影響を受けたり与えたりするボーン)」である。また標準的なMMDモデルには「両目」ボーンが付与ボーンとして存在している。すなわち少なくともこの両目ボーンは「全ての親」の下に移動させなければならない。※今回の例では手と腕の捩りにも付与ボーンが存在している。

標準状態ではMMDモデルのボーンは見えないように隠されている。このままでは編集ができないので、mmd_toolsのDiplay Itemsの中の、名前の欄にあるどれかの項目を適当に選択し(ない場合は右にある+ボタンを押して作成する)、その下にある「選択」ボタンを押す。するとボーンが表示され、画面下の欄にあるモード切り替えのコンボボックスから「編集モード」が選択できるようになる。この状態まできてやっとモデルの編集が可能になる。

編集モードに切り替えたら、アウトライナービューに「モデル名PMXモデル>モデル名PMXモデル_arm>ポーズ」まで展開する。「全ての親」から外に出ている両目ボーンを選択。プロパティの「ボーン(骨のマーク)」タブを選択し、「関係」>「親」の項目を見つけ、そこを「全ての親」に設定する(リストから選ぶのが面倒ならば直接ボーン名を入力(コピペ)してしまっても良い)。両目ボーン以外にはみ出しているボーンがある場合は全てにおいて設定する。

全てのボーンが全ての親の下に収まったら、今度は日本語ボーン名を英語にリネームする。UE4でのインポート時、モデルの最上位のボーン(つまり「全ての親」)は「root」という名前でなくてはならず、そうでない場合はエラーになる。また、日本語ボーンのままだと文字化け状態で認識されてしまいアニメーションが反映されない。ボーン名を書き換えるのは面倒だが、少なくともモーションに関係ある分のボーン(物理ボーンも含む)は名前をアスキー文字に変える必要がある。

これについてはpythonスクリプトを用意したので活用してほしい。使い方は、モデル内の「モデル名PMXモデル_arm」を選択した状態で、Blender内の「テキストエディター」を表示させ、「新規」を押し、以下のスクリプトをコピペして「スクリプト実行」を押す。エラーが出ずにボーン名がなんとなく英語っぽくなったら成功。(このスクリプトは全てのモデルに効果があるわけではないので、過信しないこと)。

https://github.com/chomstudio/mmdbone_rename.blender/blob/master/mmdbone_rename.py

まだ日本語が残っている箇所があれば、手作業で適当なアルファベットに直す。「ahoge」とかそんなのでも良い。ただし他のボーンと名前が被らないようにすること。

エクスポートとインポート

これでようやくBlender上での作業がおわったので、FBX出力を行う。ファイル>エクスポート>FBXを選択。エクスポートオプションは「FBX7.4バイナリ」「ベイク済アニメーションがオン」になっていることをチェックして出力。それなりの時間がかかるので、少し待つ。

出来上がったFBXをUE4のプロジェクト上にD&Dする。インポートオプションが表示されるので「Import Morph Target(ただしモーフのインポートにはかなり時間がかかるので急ぎの時はオフにしてしまっても良いかも)」「Import Animations」にチェック、そしてここでこのチュートリアル最大のポイント、「Import Uniform Scale」に「40」を入力してインポート。なぜ40なのか?それは私が試行錯誤を積み重ねた末に得られた結果である。これを設定しないと、UE4上ではものすごく小さいモデルになってしまう。

インポートが終わったらシーンに設置。プレイボタンを押せば踊りだす。ひとまずMMDモデルとアニメーションのインポートはこれにて成功である。

しかし、踊っているモデルを見てみると、なんだかテクスチャが抜けてるし、白っぽくて色がおかしい…。ここから見栄えを良くするためにはマテリアルの再設定が必要である。だが長くなったので続きは後日。

posted by ちょむ at 00:14| Comment(0) | TrackBack(0) | UnrealEngine
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/141501323
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック