お世話になっております。
表題の件ですが、UE5.5.4の時は正常にビルドできていたHLODが、UE5.7.1へのアップデートで不具合のような挙動になっております。
RVTを使用しているランドスケープでHLODを作成した場合に、ランドスケープの見た目がHLODマテリアルに反映されません。
RVTの有効・無効を切り替えてHLODを作成した結果が以下になります。
- RVTを使用していないランドスケープ:
- 想定通りのBaseColorTextureが設定されたマテリアルが作成される。
- RVTを使用しているランドスケープ:
- UseBaseColorがオフの状態になっており、BaseColorTextureも初期状態のままになったマテリアルが作成される。
状況を再現したシンプルなテストプロジェクトと参考画像を添付いたします。
本現象につきまして、修正予定はありますでしょうか?
もしくはローカル環境での修正、回避方法などご教授いただければ幸いです。
-----
また補足となりますが
Is there a way to apply different material logic during an HLOD bake?
[Content removed]
の投稿のようにMaterialProxyReplaceノードの使用により、HLODビルド時はRVTを使用しないように対応できるかと考えたのですが、
手元で試したところHLODビルド時に常にRealtimeの方の処理が採用されてしまうようです。
[Attachment Removed]
再現手順
添付の再現プロジェクトを開き以下を実行
- hlod_rvt_offレベルを開き、レベル内のWorldPatitionHLODを選択
- 設定されているHLODのマテリアルがランドスケープの見た目と合っていることを確認
- hlod_rvt_onレベルを開き、レベル内のWorldPatitionHLODを選択
- 設定されているHLODのマテリアルがランドスケープの見た目と合っていないことを確認
RVTを使用しているレベルのHLODマテリアルがおかしくなっていることが確認できるかと思います。
[Attachment Removed]
大変お待たせしており恐縮です。
再現プロジェクトのご用意ありがとうございました。問題を再現することができました。
調査したところLandscapeMeshProxyのテクスチャをレンダリングする際にRVTを使ったランドスケープがうまくレンダリングできていないようです。InstancingのHLODLayerではLandscapeProxyはLandscapeMeshProxyに変換され、天頂方向方向から通常のレンダリングを行った結果をテクスチャとして利用しているためMaterialProxyReplaceでは解決することが出来ません。
現時点で直接問題を修正する方法が見つけられておらず、開発チームに問い合わせを行っており確認後にバグ登録させていただこうと思います。
当面のワークアラウンドとしてはRVTを無効化するか、LandscapeアクターのHLOD Material Overrideに RVT offのものを設定してしまうことで
見た目を優先することが挙げられますが根本的な解決にはなりません。
ひとまず開発チームの見解をお待ちいただけますと幸いです。
[Attachment Removed]
開発チームよりワークアラウンドについて返答がございました。
通常のセットアップでは解決が難しいためStreaming Runtime Virtual Textureと二つのRuntime Virtual Textureを組み合わせて利用します。
構成が複雑なためプロジェクトを添付したのでご参照ください。
この設定ではHLODは静的に作成されたSRVTだけを参照するためランタイムパフォーマンスの向上が期待できます。
またHLOD毎にユニークなテクスチャのビルドを抑制し、HLODのビルド時間を短縮させメモリ消費を抑えます。
設定手順は以下の通りです。
- 1つめのRuntimeVirtualTextureVolume(RVTV)にStreaming Runtime Virtual Texture(SRVT)を設定します
- RVTVの BuildLevelsを0以外に設定します
- すぐ下のビルドボタンが押せるようになるのでビルドします
- メインのRVTにNumber of low mips to remove from the virtual textureを設定して低MIPを省略します
- メインのRVTを複製してHLOD用RVT(RVT_HLOD)を作成します
- RVTVを複製しRVTV_HLODを作成します
- RVTV_HLODのVirtualTextureにRVT_HLODを設定します
- Streaming Textureに同じSVRTを設定します
- Build Levelsは0のままにします
- Use Only Streaming Textureにチェックを入れて、静的なものだけを使うようにします
- Vie in Editorを PIE Onlyに設定してPIEで動作を確認することが出来ます。 ※Always設定にしたまま操作を行うと頻繁にクラッシュするので一時的な利用をお勧めします
- ランドスケープ用のマテリアルインスタンスをもう一つ作成し(MI_landscape_RVT_HLOD)、RVTパラメータをRVT_HLODでオーバーライドします
- ランドスケープのHLOD Material OverrideにMI_landscape_RVT_HLODを設定し、ランドスケーププロキシを再セーブします
[Image Removed]
[Attachment Removed]
いつもお世話になっております。
承知いたしました、ご回答ありがとうございます。
添付していただいたプロジェクトにて、一度確認させていただきます。
[Attachment Removed]