💫

3Dモデルを動かしてみる(Unity編・導入)

に公開

今回の目標

今回はUnityで3Dモデルにアニメーションをつけていきます。
使用するのは前回と同じく天音かなたさんの公式3Dモデルと、「きゅーぴっど。」のモーションデータを使わせていただきます。

前回はPMXファイル形式の3Dモデルデータを使ってBlenderで動かしてみましたが、UnityではPMXファイルが扱えないようです。なので、まずはUnityで扱える3Dモデルデータ形式であるFBXに変換を行います。

3DモデルデータをFBXに変換

前回作成したBlenderプロジェクトでは3Dモデルデータとモーションデータが合体してる状態なので、新しくBlenderプロジェクトを立ち上げて、PMXを読み込ませます。

かなたさんの3Dモデル特有の事象なのか不明ですがここでひと手間必要だという事がわかりました。
まず「編集モード」に切り替えたあと、「Scene」欄の中の「天音かなた_arm」を展開していき「親指0.R」「中指0.R」「人指0.R」の3つの親を「小指0.R」に変更します。

変更するとこんな状態になります。

これをやっておかないと、後述のRig設定でヒューマノイドに切り替えたときにエラーが発生します。このアーマチュアの関係性変更はUnityではできなさそうなのでBlender側で実施しておく必要があります。

続いて、[ファイル] > [エクスポート] > [FBX]でFBX形式でエクスポートします。

エクスポート画面にはなにやら設定がいろいろありましたが、よくわからないのでひとまずデフォルト設定のまま行こうかと思います。この辺の設定はまた別記事で調べてまとめようかと。

ひとまずこれでFBXファイルの準備ができました。

Unityの環境構築

Unityはだいぶ前にインストールしていたので今回の記事ではUnityHubのインストール手順はスキップします。
UnityHubのホーム画面から「NewProject」をクリックし、「3D(Build-in Render Pipeline)」を選択。プロジェクト名やプロジェクトの保存場所を指定して「プロジェクトを作成」をクリックします。

今回使用した環境は「Unity Hub 3.12.0」、エディターバージョンは「2022.3.61f1」。
この辺のバージョンはなるべく新しい方がいいと思いつつも、関連ツールのバージョン相性とかもあるので悩ましいところ。。。ひとまずローカルにあったバージョンそのままでいってみます。

UnityにFBXをインポート

Unityの画面が立ち上がったら「プロジェクト」のエリアにFBXファイルをD&D(ドラッグ・アンド・ドロップ)で放り込みます。

3Dモデルの調整

「プロジェクト」エリアに追加された3Dモデルを「ヒエラルキー」エリアにD&Dで放り込むと、画面中央の「シーン」エリアに3Dモデルが表示されます。
…なんだか風船みたいな状態になっちゃいました。

いろいろ試していたところ、「rigidbodies」というグループを非表示にしたらこの風船が消えました。
rigidbodiesってなんぞやと思い調べてみたところ、「リジッドボディ」と読むらしいです。
このリジッドボディを設定することによって物理演算の影響を受けられるようになるとのこと。つまり重力の影響を受けたり、接触判定されるようにするものらしい。ということは3Dオブジェクトとしては表示する必要がないパーツということっぽいので、非表示にするのがよさそうです。
ヒエラルキー欄の目のマークを押して非表示にすると、物理演算の効果もなくなってしまうようなので表示だけ消えるように設定していきます。
ヒエラルキー欄の「rigidbodies」を展開して、子要素を選択します(shiftを押しながらクリックで範囲選択できました)。その後、インスペクター欄の「Mesh Renderer」のチェックをはずすと一括で非表示状態にできます。これで表示(レンダリング)だけ無効化して、物理演算機能は有効にするという状態になるようでした。

さて、ここでテクスチャがない状態になっていることが判明。。。
BlenderでFBXにエクスポートする際にテクスチャが含まれていない状態だったようです。今回使用した3DモデルがMMD用のデータだったので、Blenderで読み込んだ際のテクスチャ設定がBlender標準ではなく、MMD用の設定のままだったことが原因の模様。Blender側でテクスチャ設定を修正しておけばおそらくテクスチャ込のFBXファイルが作成できるのではないかと考えてます。
今回はUnity側でテクスチャを設定しなおす方向で進めようと思います。

まずは3Dモデルと同梱されていたテクスチャフォルダをAssetsエリアにD&Dで放り込みます。

続いてAssetsエリアの中にある3Dモデルデータを選択して、インスペクター欄の「Materials」を選択します。

この「再マッピングされたマテリアル」の解釈にとまどったのですが、左側(MMT_PPT_ClothesやMMT_PPT_Eye)がFBXファイル内で定義されているマテリアル、右側(なし(マテリアル))がUnity側で管理しているマテリアルということのようです。Unity側が参照できるマテリアルが何もない状態なので、3Dモデルがのっぺらぼう状態になっているということと理解しました。

というわけでまずはUnityが参照できるマテリアルを作ることにします。インスペクター欄の「位置」を「外部マテリアルを使用(古い機能)」、「命名規則」を「モデルのマテリアル名」に設定して「適用する」ボタンをクリックします。すると、Assetsの「Materials」フォルダ内にマテリアルが作成されました。この状態ではマテリアルは真っ白なままなので、このマテリアルにテクスチャを貼っていきます。
1つめマテリアルを選択するとインスペクターにこんな内容が表示されます。

この「Secondary Maps」の「詳細アルベド×2」というところは一見チェックボックスなんですが、画像を登録できるエリアになっているのでAssetsの「texture」から適切な画像をD&Dするとテクスチャを設定できます。


これで洋服のテクスチャが設定できました!同じ要領でテクスチャを設定していきます。

どのマテリアルにどのテクスチャを設定すればいいのかわからない場合はBlenderの画面でマテリアルとテクスチャのひも付きを確認できます。
BlenderのSceneで対象のマテリアルを選択したあと、マテリアルプロパティ(赤い丸のアイコン)を表示すると「MMD Texture」欄にテクスチャのファイルパスが表示されます。これを参考にテクスチャファイルを選択するとよいかと。

これでようやく3Dモデルに色がつきました!

モーションの追加

3Dモデルの準備ができましたので、ここからは3Dモデルを動かしてくフェーズになります。
Assetから3Dモデルファイルを選択したあと、インスペクター欄の「Rig」を選択して「アニメーションタイプ」を「ヒューマノイド」に設定したあと、「適用する」をクリックします。

ここでアーマチュアの設定修正を行います。インスペクター欄の「設定」ボタンをクリック。

デフォルト状態では左腕の設定と右腕の設定がずれていました。このあと実際に動かしてわかったんですが、どうやら右腕の設定がずれていたようなので右腕の設定を左腕にあわせて修正していきます。

変更したら「Apply」→「Done」で適用します。

つづいてモーションデータのFBXファイルをD&DでAssetsに追加。

こちらも3Dモデルと同様にインスペクター欄の「Rig」を選択して「アニメーションタイプ」を「ヒューマノイド」に設定したあと、「適用する」をクリックします。

つづいて、Assetsエリアで右クリックして「作成」>「アニメーターコントローラー」を選択。CupidMotionという名前に変更してみました。

このCupidMotionを3Dモデルにアタッチします。ヒエラルキー欄の3Dモデルを選択後、インスペクター欄の「Animater」で「コントローラー」に「CupidMotion」を設定します。

つぎにAssets欄の「CupidMotion」をダブルクリックしたあと、インポートしておいたモーションデータをD&Dで登録します。

これで最低限の設定は完了。

再生してみる

「シーン」タブに戻って、再生ボタンを押すと動いているのが確認できました!

とはいえ、よく見てみると顔にオレンジの影が入ってたり、スカートを足が突き抜けてたりとまだまだ改善できそうです。
これからも継続して調整を試みようと思います。

Discussion