最近Project PLATEAUの3DCGモデルを軽量化する方法をまとめており、表示結果の確認のためにUnityも使っています。
ただ、Blenderでfbxで出力するときにテクスチャが入らなかったり、Unityで読みこむとテクスチャが反映されなかったりという問題がありました。色々探しましたが、すぐに見つかる情報が古いものが多かったので、改めてまとめてみました。
動作確認環境
・Blender 2.93
・Unity2019.4.12f1
なお、使用したPLATEAUのモデルは、東京都23区の533936の一部です。
3D都市モデル(Project PLATEAU)東京都23区(FBX 2020年度) - 533936
1. Blenderでfbx出力 (テクスチャあり) する方法
Blender2.79のときはわかりませんが、少なくともBlender2.93では、Blender単体でテクスチャ付きのfbx出力ができました。
こちらの解説を参考にさせていただきました。
具体的には、File > Export > FBX を選択して出力先と設定が書かれた画面を表示させます。この画面において、Path ModeをAutoからCopyに変更し、その横にある書類?のようなアイコンを1回クリックします。
このアイコンをクリックすると、テクスチャが埋め込まれるようです。
あとの設定は任意です。これで出力したfbxをAutodeskのFBX Reviewで表示させた結果がこちらです。
FBX Reviewのダウンロード場所はこちらです。
FBX Review | Cross-platform 3D model viewer | Autodesk
なお、YouTube動画でのコメントによると、Blenderを使って自分でモデリングしたものにテクスチャを当てている場合、"File > External Data > Pack All into .blend"から、使用したテクスチャをBlenderのプロジェクトファイルに埋め込む必要があるようです。
今回はPLATEAUの3DCGモデル (fbxですでにテクスチャが埋め込まれている) を使ったため、この処理を実行しても"No new files have been packed"というメッセージが出るだけでした。PLATEAUの3DCGモデルを使う場合は不要ということですね。
2. Unityでfbx (テクスチャあり) を読み込む方法
fbxが埋め込まれている3DCGモデルをそのままUnityにインポートすると、このようになります。
テクスチャが表示されておらず、全体的にクリーム色?のようになっています。
テクスチャを表示させるには、インポートした3DCGモデルをProject Viewで選択して、Locationが"Use Embedded Materials"となっていることを確認します。
次に、その下のExtract Textures..を選択します。
Extract (抽出する) 先フォルダをAssets以下の任意の場所に指定すると、テクスチャが反映されます。
しかし、まだ色が実際と異なっています。色を正しく反映するには、materialから指定する必要があります。
まず、同じようにmaterialをExtractします。次にExtractしたmaterialをProject Viewで全て選択して、InspectorからShaderの設定を変更します。具体的にはStandardから、Ulint > Textures に変更します。
すると、このように色合いが合います。
3. おわりに
基本的な話ですが、探すのに時間がかかったので備忘録も兼ねてまとめました。
現在、PLATEAUの3DCGモデルを軽量化、位置調整するBlenderのスクリプトを作っています。今回の調査で出力方法の目処もたったので、もう少ししたら公開します。
追記:こちらです。 www.crossroad-tech.com