Let’s play Kawaii dress-up with Daz Studio, and explain how to make a Kawaii image.

Daz Studio UnityにエクスポートしたフィギュアにMMDモーションを付ける(応用編)

今回はDaz to Unity BridgeでUnity上にエクスポートしたフィギュアに、MMDモーションを適用して踊ってもらうという楽しい企画です。

MMDモーションとは、MikuMikuDanceという和製アニメーション作成ツールを使って作成したダンスモーションです。MikuMikuDance用のかわいらしいキャラクター(MMDモデル)を作っている方も大勢いらっしゃいます。「ニコニコ立体」「MMDモデル」「配布あり」と検索をかけるとたくさんの作品がDLできます。作者さんによってさまざまな使用許諾条件を明示していますので、作者さんの決まりにしたがって利用することができます。
今回は、暮井慧さんのPronama-chan_Ver4.3(MMDモデル)と、づなうじさん作成のモーション、ファンサ(VMDファイル)をUnityに読み込み、MMD4MecanimというUnityのアセットでMMDモデルとモーションをFBXファイルに変換。変換したFBXファイルの中に出来たファンサのアニメーションファイルをDazフィギュアに当てるということをやってみます。

ことばの整理

  • FBXファイル…一般的な3Dモデルのファイル形式。Daz to Unity BridgeでエクスポートしたフィギュアはこのFBXファイル形式。UnityのHDRP(高品質なシェーダーを扱うレンダリング形式)環境下で美しいリアルタイムレンダリングが可能です。
  • MMDファイル…MikuMikuDance用フィギュアのファイル形式。アニメ系のフィギュアなので、UnityのHDRP(高品質なシェーダーを扱うレンダリング形式)環境に持ち込むとマテリアルが飛んでピンク色になります。
  • VMDファイル…MikuMikuDance用アニメーションファイル形式。
  • MMD4Mecanim…Unity用のアセット。MMDファイルをFBX形式に変換することができます。無料のアセット(感謝)です。

適切なバージョンのUnityでプロジェクトを作成する

まずは、Dazフィギュアを読み込むUnityを作成しておく必要があります。

Daz to Unity BridgeはUnityの2020.1.17バージョンで安定して動作します。
また、今回利用するMMD4Mecanim_Beta_20201105バージョンは同じくUnityの2020.1.17バージョンで安定して動作します。

Unityはバージョンが違うと動作しないことがよくあるので、まずはバージョンを確認してプロジェクトを作成します。

HDRPでプロジェクトを作成します。適当なファイル名を付けます。

HDRPは余計なセットや照明がセットされたサンプルシーンが開くので、これをまず閉じて、New Sceneを作成します。

シーンにエクスポートしたフィギュアを配置する

以下の記事を参考に、DazからUnityにフィギュアをエクスポートします。

時間がかかりますが、DazフィギュアがUnityに読み込まれました。
G8ベースのフィギュアです。
読み込まれた直後のフィギュアはヒエラルキーウインドウのフィギュア名を右クリックして削除してしまいます。

なぜ削除するのでしょう。このエクスポート直後にヒエラルキーに配置されるプレハブファイルはなぜかヒューマノイドに変換できません。そこで削除します。

エクスポートによって作成されたフォルダ(ここではYuna_export)の中にあるFBXファイル(ここではYuna_exportというファイル名)をヒエラルキーにドラッグして配置します。

この時、目と睫毛のマテリアルがおかしくなるので、以下の記事にしたがって直してください。

ヒエラルキーウインドウでYuna_exportを選択した状態でインスペクターウインドウにあるSelectボタンをクリックします。

FBXフィギュアをUnity専用のアニメーションタイプHumanoidにする

インポートセッティングが開くので、アニメーションタイプをHumanoidにします。

ヒューマノイドはUnity専用のリグ(ボーン)です。

アゴのリグを無効にする

Dazの顎のボーンはUnityのヒューマノイドではうまく変換されないので、アゴボーンをなしにします。

まずはコンフィギュアをクリック。

全身のリグが表示されています。

Headに変えます。

Jawの右端のアイコンをクリックします。

Noneを選択します。

最後にApplyをクリックします。

MMD4Mecanimをアセットに加える

フォルダから「MMD4Mecanim.unitypackage」を選択、ドラッグして、アセットの中にコピーします。

出現したダイアログの一番下、Importをクリックします。
(何も触らず、Importだけクリック)

以下はGo Aheadを選択。

インストール作業が始まります。

MMDとVMDファイルの読み込み

まずMMDはフォルダごと、アセットフォルダにコピーします。

続いてモーションファイルもフォルダごとアセットフォルダにコピーします。

アセットにコピーしたMMDファイルの入ったフォルダを開きます。図のようなアイコンを目印に、MMDフィギュアの名前に.MMD4.Mecanimという拡張子のついたファイルをクリックします。
すると、FBXに変換するに当たっての注意事項が出てくるので、よく読んでください。

よく読んだ上で、下の3つの項目にチェックをつけて同意をします。「同意」ボタンを押します。

モーションファイルを追加してFBXファイルに変換

「同意する」をクリックすると、図のようにインスペクターがVMDを加える表示に切り替わります。
アセットからモーションファイルが入ったフォルダを開き、モーションファイルをインスペクターのVMDにドラッグしてください。

Processボタンを押します。

MMDフィギュアのFBXファイルへの変換が始まります。
結構時間がかかるので、気長に待ちましょう。

FBXファイルに変換されました。アイコンの横の横向き三角形をクリックして開くと、三角形の左横に3本の線が入ったアニメーションファイルができているのがわかります。

FBXに変換されたフィギュアのRigをヒューマノイドにします。

Applyをクリックして適用するのを忘れずにしてくださいね。

シーンに変換したFBXフィギュアを配置する

それではフィギュアをヒエラルキーにドラッグしてください。
この時、アイコンもフィギュアもオレンジ色になってしまっていますが、これはHDRPに配置しているために、シェーダー(マテリアル=フィギュアの表面に貼り付けた画像)が飛んでしまったためです。
ここではこのフィギュアは使わず、Dazからエクスポートしたフィギュアを使うのでほったらかしにしておきましょう。
ついでにオレンジ色のFBXフィギュアのPosisionのXを−6ぐらいにして、Dazフィギュアの横、見えないくらいのところにいてもらいましょう。

変換したアニメーションファイルをDazフィギュアに当てる

まずはアセットのフォルダが表示されている空白の部分を右クリックして、Createからアニメーターコントローラーを作成します。

オレンジ色のFBXフィギュアに作成したアニメーションコントローラーを当てます。
ここではアニメーションコントローラーをMMDという名前にしています。オレンジ色フィギュアのインスペクターのアニメーション設定のControllerにMMDをドラッグします。

続いて、Dazフィギュアにも同じアニメーションコントローラーを当てます。

アニメーターコントローラーMMDをダブルクリックして、アニメーターを開きます。

アニメーターが開かない時は、図のように開いてください。

FBXフィギュアの中にあるアニメーションファイルをアニメーターにドラッグしてください。

アニメーションを再生する

アニメーションを再生するために、ゲームの再生ボタンを押します。
画面上部中央の再生ボタンがそれです。
再生されたアニメーションはGame画面で見ることができます。

今回はわかりやすくするために、MMDを変換したFBXフィギュアをすぐ横に配していますが、必要ないならXの数字を大きくして、画面外に配置してください。

管理人のコメント

MikuMikuDance用のダンスモーションは素晴らしい作品がたくさん配布されています。
このアニメーションをDazフィギュアに適用することができるのは本当に素晴らしいことだと思います。

ではなぜわざわざUnityにDazフィギュアを持っていってアニメーションを動かすのでしょうか。
それは、Dazのアニメーションが高品質なレンダリングをするために、恐ろしく時間がかかってしまうからです。
UnityのHDPR(Dazフィギュアがそこそこ美しく見えるレンダリング)ならリアルタイムにレンダリングしてしまいます。そこでDazフィギュアをUnityに持っていって、そこでアニメーションさせるというわけです。

しかし、ここで問題が生じます。
今回はオレンジ色になってしまったMMDフィギュアを、HDRPではなく普通の3Dでプロジェクトを作成し、そこでFBXに変換してみてください。そのフィギュアを再生すると、髪の毛やスカートが揺れていることがわかります。
でも、Dazからエクスポートしたフィギュアは髪もスカートも揺れません。

そこで次回は、Unityの別のアセットを使って揺れものを作る方法に挑戦してみたいと思います。
その前に、「タイムライン」というDazのAnimate2に似たツールで今回のアニメーションを複数のカメラショットで捉え、それを動画ファイルとして書き出す方法を解説する予定です。