RealityCaptureから書き出す複数枚テクスチャをUE4で扱う場合に、前記事では書き出し時の注意、本記事では読み込み時の注意について触れます。
破壊されるテクスチャ
RealityCaptureから書き出したモデルをUE4に読み込んでみると自動的に複数枚あるテクスチャも読み込まれますが、そのままだとモデルに適用されたテクスチャが滅茶苦茶になっていてすごく不気味な物体が誕生してしまいます。
何も知らずに突然これが表示されたら鳥肌が立つようなグロい見た目をしています…。
これは何が起こったのかと言うと、UE4に読み込みを行うとモデル(スタティックメッシュ)、マテリアル、テクスチャがコンテンツブラウザの同一階層に読み込まれるため、本来同一名であるマテリアルとテクスチャの名前がコンフリクトを起こしUE4側で勝手にリネームを行ってしまうためです。
この画像を見ると、本来であればマテリアル名とテクスチャ名は同一の物ペアになっているはずが、リネームが行われた結果順序が入れ替わってしまっています。
また、マテリアルが7つあるのに対してテクスチャが4枚しかなく、テクスチャがすべての枚数を読み込んでいないことが分かります。
その結果、マテリアルとテクスチャのリンクがズレてしまい、不気味な物体となってしまった…というわけです。
テクスチャを正しく読み込む
これを解決する方法としては、読み込みの際にテクスチャのみ読み込むことです。
インポートオプションにある"Do Not Create Material"を選択する事でマテリアルが作成されません。
テクスチャだけで読み込むことでリネームされることなく、枚数も正しく読み込まれます。
マテリアルを作成
読み込みでマテリアルの作成しなかったので、UE4で改めて作成する必要があります。
その際、マテリアルインスタンスを利用すると後々楽になるでしょう。
マテリアルインスタンスを利用する事で同じマテリアルをいくつも作るという事をしなくてもすみますし、変更が発生しても大量のマテリアルを一つずつ作業することなくオリジナルのマテリアルだけを修正するだけで変更が反映されるので、フォトグラメトリの様なモデルには適しています。
マテリアルの適用
作成したマテリアルしたらモデルに適用します。
読み込み時にマテリアルを作成しなかったデメリットとして、マテリアルスロットにダミーが入ってしまい複数あるマテリアルがどこにはまるかわからない…と言う点があります。
これは仕方ないので総当たりではめていくしかありません。
全て適用するとこうなります。
順番通りと言うわけでもありません。
こうして滅茶苦茶だったテクスチャが元通りになりました。
バージョンによる違い
この問題はUE4.25以前とUE4.26以降で挙動が違い、テクスチャの破壊が起こるのはUE4.25以前のバージョンとなっています。
UE4.26でも読み込み時にマテリアルの作成を行うとコンフリクトの警告メッセージが出てきますが、リネームの方法が変わったためマテリアルとテクスチャが正しく読み込まれるようになり冒頭の様なカオスな画面になる事はなくなりました。
Twinmotionの方ではUVマッピングの問題と違いこのコンフリクト問題は起こりません。
UE4.26でモデルを読み込んだ状態。マテリアルとテクスチャが交互に通り並んでいる。
ただ、マテリアルに関しては上の方でも述べたように後々の事を考えるとマテリアルインスタンスを利用した方が効率的に作業が行えるので、改めてマテリアルとマテリアルインスタンスを用意した方がいいかもしれません。
まとめ
RealityCaptureから書き出した複数枚テクスチャをUE4に読み込みをする際にマテリアルは作成せず別途UE4で改めて作成する。