AIゲーム開発研究室
第10回 TripoモデルをBlenderからUnityへ受け渡す
AIゲーム開発研究室
3Dモデル制作ドキュメント
第10回 TripoモデルをBlenderからUnityへ受け渡す
研究代表 大川 博
主任研究員 Arc(ChatGPT)
はじめに
前回までの検証では、Tripoで生成したパンタの3Dモデルについて、高精細モデルと軽量モデルを比較し、ゲームで使用するモデルデータの検討を進めてきた。
今回は、新たなモデルを生成するのではなく、これまで制作したモデルを実際のゲーム開発環境へ受け渡すための確認を行った。
対象としたのは、主にCタイプのモデルである。
Cタイプは、高精細なBタイプをTripo上で軽量化したモデルであり、約1万フェイスまで削減しながら、元の外観を比較的よく維持している。
今回は、このモデルを
Tripo → Blender → Unity
と受け渡しながら、モデル形式、座標軸、テクスチャ、Normal Map、UV展開について確認した。
1.OBJとFBXを改めて比較する
前回の検証では、OBJ形式で読み込んだモデルのテクスチャ表示に問題が発生していた。
そこで今回は、BタイプとCタイプのモデルデータを、それぞれ改めて
OBJ形式
FBX形式
でTripoからエクスポートした。
どちらもBlender用の設定を使用し、アーマチュアは含めていない。
Blenderへ読み込み、シェーダーエディターを確認した。
FBX形式では、
Base Color
Roughness
Metallic
Normal
などのテクスチャが読み込まれ、それぞれPrincipled BSDFへ接続されていた。
Normalについても、Normal Mapノードを経由して接続されている。
モデルの表示も正常である。
一方、OBJ形式ではFBXとはマテリアルの構成が異なり、モデルの質感にも違いが発生した。
この結果から、今回のモデルをBlenderからUnityへ受け渡す形式として、以後はFBXを使用することにした。
2.TripoのFBXをそのままUnityへ読み込む
次に、TripoからエクスポートしたCタイプのFBXを、そのままUnityへインポートした。
ところが、Unityへ読み込んだモデルは横倒しになった。
同じFBXをBlenderで確認すると、モデルは正常に立っている。
今回Tripoからエクスポートする際には「Blender」用の設定を使用している。
そのため、Blenderでは正常に扱える座標軸になっているが、そのデータをそのままUnityへ持ち込むと、座標系の違いによる回転が発生することが確認できた。
3.BlenderからFBXを再エクスポートする
そこで、Tripoから読み込んだCタイプをBlenderから改めてFBX形式でエクスポートした。
今回はFBXエクスポート設定にある、
「トランスフォームを適用」
の設定を変更し、その有無による違いをUnityで比較した。
適切な設定でエクスポートしたFBXをUnityへ読み込むことで、モデルを正常な向きで扱えることを確認した。
Unity側のTransformについても、
Rotation X = 0°
Scale = 1
という扱いやすい状態にすることができた。
今回の結果から、TripoでBlender用として書き出したモデルをUnityで使用する場合、
一度Blenderを経由してFBXを再出力する
という方法が有効であることが確認できた。
4.Unityでテクスチャ表示が崩れる
座標軸の問題を解決したあと、もう一つ問題が発生した。
Blenderでは正常に表示されていたモデルが、Unityではテクスチャや表面の陰影が大きく崩れて表示された。
そこで、Blenderのシェーダーエディターに戻り、どのテクスチャが原因なのかを調べることにした。
Base Color、Roughness、Metallic、Normalなどの接続を一つずつ外し、その都度FBXを書き出してUnityで確認した。
その結果、
Normal Mapを外した場合には正常に表示される
ことが判明した。
これまで授業では、このような問題を避けるため、カラーマップ以外のテクスチャを外して使用していた。
しかし今回は一つずつ検証したことで、少なくとも今回のモデルでは、Normal Mapが表示異常に関係していることまで絞り込むことができた。
5.Normal MapはUnityでも使用できる
しかし、Normal MapそのものがUnityで使用できないわけではない。
そこで、Normal Mapを接続した元のFBXを使用して、Unity側の設定を確認した。
Normal用テクスチャを選択し、
Texture Typeを「法線マップ」に設定
して再度確認した。
すると、モデルは正常に表示された。
今回のモデルでは、
「緑のチャンネルを反転」
を使用する必要もなかった。
つまり、問題はNormal Mapそのものではなく、Unity側でNormal用テクスチャを法線マップとして正しく設定する必要があったことになる。
これにより、Normal Mapを削除することなく、Unityでも利用できることが確認できた。
6.カラーマップを拡大して確認する
次に、モデルを大きく拡大してカラーマップの状態を確認した。
通常の表示では非常にきれいに見えるが、クローズアップすると、白い毛と黒い毛の境界など、部分的に粗い箇所が確認できる。
AIによって生成された3Dモデルをそのまま使用する場合、このような細部の修正が必要になることも考えられる。
そこでUV展開を確認した。
7.AI生成モデルのUV展開
CタイプのUVをBlenderで表示すると、一般的なキャラクターモデルのように、顔、胴体、腕、リュックなどが分かりやすいパーツ単位で配置されているわけではなかった。
非常に多くの細かなUVアイランドに分割され、それらがテクスチャ全体へ高密度に配置されている。
この状態では、カラーマップ画像を画像編集ソフトで開き、
「顔のこの部分を修正する」
「腹部のこの色を直す」
といった方法で直接編集することは難しい。
ただし、修正そのものができないわけではない。
Blenderには、3Dモデルの表面へ直接描画するTexture Paintの機能がある。
これを利用すれば、モデルを見ながら必要な部分へ直接修正を加えることができる。
ただし、その具体的な操作方法やテクニックについては、今回の検証では扱わない。
8.TripoからUnityまでの受け渡し工程
今回の検証によって、Tripoで生成・軽量化したモデルをUnityへ持ち込むまでの実際の工程が見えてきた。
今回採用した流れは、
Tripo
↓
FBXでエクスポート
↓
Blenderでモデル・マテリアルを確認
↓
必要な調整を行う
↓
BlenderからFBXで再エクスポート
↓
Unityへインポート
↓
Normal MapなどUnity側のマテリアル設定を確認
というものである。
TripoからFBXを書き出し、そのままUnityへ読み込むこともできる。
しかし、実際のゲーム制作で使用することを考えると、Blenderを中継することで、座標軸、マテリアル、テクスチャ、UVなどを確認しながらデータを整えることができる。
今回のまとめ
今回の検証では、Tripoで制作したモデルを実際のゲーム開発環境であるUnityへ受け渡す工程を確認した。
その過程で、
OBJとFBXではマテリアル情報の受け渡し方が異なること。
TripoのBlender用FBXをUnityへ直接読み込むと、座標軸の違いによる回転が発生すること。
Blenderを経由してFBXを書き出すことで、Unityで扱いやすい状態に調整できること。
Normal MapはUnityでも使用できるが、Unity側で法線マップとして正しく設定する必要があること。
AI生成モデルのUVは非常に細かく分割されており、必要なテクスチャ修正にはTexture Paintが有効であること。
を実際のモデルデータによって確認することができた。
AIによって3Dモデルを生成することと、そのモデルをゲームで使用できる状態にすることは、同じではない。
しかし、生成されたデータの問題点を一つずつ確認し、BlenderとUnityで必要な調整を行うことで、AI生成モデルを実際のゲーム制作へつなげることができる。
今回の検証によって、
Tripo → Blender → Unity
という3Dモデル制作からゲーム実装へ向かう実用的なワークフローが、さらに具体的になった。
