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を作ってあげる必要があります。
エンジニアとして働く90年生まれ。Web系技術を追っかけたり、PCガジェットや自転車いじりが趣味。オーディオオタク。