UE4でモデルを更新した時にマテリアル順が変わる…
これ、個人的にかなりやっかいだと思うんですが皆さんはどうでしょう?
このやっかいさを解決するためにルールがあるのか調べてみました!
手順
今回は、MayaからFBXに出力し、出力したFBXをUE4に読み込むやり方をします。
なのでMayaというよりはFBXの仕様…という方が正しいかもしれませんね。
まずは結論!
Outlinerのソート順でマテリアル順は決まることがわかりました。
検証方法
マテリアルを作り、ポリゴンメッシュにアサインしました。
作ったマテリアルとメッシュの状態は以下です。

このメッシュをアウトライナーの順序を入れてエクスポートしてみました。
検証結果その1
MayaのOutlinerの順序を以下のようにして出力した結果です。
Outlinerの順序と、UE4のエレメントIDが一致していることがわかります。

検証結果その2
今度は”検証結果その1”の逆順にして出力してみました。
UE4のエレメントIDも見事逆順になることがわかりました!

これでアウトライナーの順序によってエレメントIDが変わるということがわかりましたね!
めでたしめでたし!
フェイスアサインはどうなる…?
しっかりは検証していませんが、ちゃんとマテリアル順を管理したいのであれば非推奨です。
テストがてらやった時にMayaで出力した時とFBXの結果が異なる現象がありました。
フェイスアサインはMayaのInst Obj Groupsってとこで管理されます。
以下のようにフェイスアサインを繰り返すと配列がどんどん増えます。

ちなみに綺麗にフェイスアサインをすればInst Obj Groupsの順に出力はされましたが…。
ですが、複数のマテリアルのフェイスアサインをする順序なんていちいち覚えておきませんよね。
しっかりID管理するのであれば、フェイスアサインは使わないほうが良いと私は思います。
コメント