[TriLib2]FBXを外部ソースから読み込んだ際、何故か大量のMaterial(Submesh)が生成されてしまう問題
![[TriLib2]FBXを外部ソースから読み込んだ際、何故か大量のMaterial(Submesh)が生成されてしまう問題](/images/uploads/2023/09/image.webp)
![[TriLib2]FBXを外部ソースから読み込んだ際、何故か大量のMaterial(Submesh)が生成されてしまう問題](/images/uploads/2023/09/image.webp)
Materialsがとんでもない数になっている
IssueとかForumとかに無かった問題を踏んでしまったのでメモ
テクスチャが存在しないFBXデータを読み込む時は注意が必要
正規なFBXエクスポーター以外で出力されたFBXで当たった問題なのでもしかしたら、の話になります。
TriLib2を使ってダウンロードしたFBXを読み込む時、 AssetLoader.LoadModelFromStream でassetLoaderOptionsを渡しますが、この時 AssetLoader.CreateDefaultLoaderOptions()でデフォルトのインポート設定を与えて適当にインポートを行った所、Meshの全てがTriangleのSubmeshで分割された凶悪なオブジェクトが生成されました(大量のMaterialがアタッチされているので当然重い)。
Consoleには Mesh [...] has no tangents. TriLib will calculate them using Unity builtin tangent calculator. というWarningも出ており、当初はFBXのデータ自体に問題があると考えていましたが、結局FBXをダウンロードしてEditorの標準機能でImportした際にはSubmeshが生成されなかったことからTriLib2側の挙動によるものとアタリを付けました。
テクスチャインポートの謎挙動
結局「Materialの生成でバグってるならImport時にそれら処理をスキップすれば良いんじゃね」という事でAssetLoaderOptionsの Import TexturesとImport Materialsをオフにしたらすんなり上手く行ったという。
ただしMaterialのインポートを行わない場合はSkinned Mesh Rendererにはデフォルトのマテリアルがアタッチされてしまう(Allocationsに乗らない)ので、がんばってMeshのあるGameObjectから探して適切なMaterialを作ってあげる必要があります。