【UE5】HLODを掘り下げてみよう
以前紹介した記事だが覚えているだろうか?
この中でHLODレイヤーについて話をしたが、デフォルト設定のまま使用(ビルドも含め)することはあまり好ましくないと思うので、もうすこし掘り下げて説明します。
とはいうものの、全然情報がない!
一つ言えるのは公式ドキュメントはWorldPartitionシステムに準拠していない!
そのため、参考にならない!と断言できます!
というか、WorldPartitionシステムでHLODの設定はHLODレイヤーで行うように変更されたようだ。
これは、難儀なことになりそうだ・・・。
■HLODレイヤーについて
この中のレイヤータイプ、これが今回の説明になりそうだ。
このレイヤータイプには
この五つが用意されている。
- Instanced
セル内のメッシュをまとめてインスタンススタティックメッシュ(InstancedStaticMesh:ISM)にする
効果:表示メッシュのみになり、複数のISMで構成される。末端のLODで表示されます。
所感:デフォだな - Merged Mesh
一つのスタティックメッシュにまとめる
効果:1コンポーネントになり合成マテリアルになる
所感:アクタをマージと変わらないような・・・、頂点数に依存してしまう。 - Simplified Mesh
一つのスタティックメッシュにまとめ、さらにリダクションもしてくれる!
効果:頂点数の削減
所感:こちらもアクタをマージ1と変わらないようだが、使える気もする。 - Approximated Mesh
ボクセル化して近似メッシュを作成してくれる
効果:近似化
所感:CitySampleはこちらを使用しているようだ
※どうもアクタをマージと酷似している内容に思える。
HLODは未完成なのかもしれない・・・。
- Cell Size
ストリーミングの設定と同じ - Loading Range
同じくストリーミングの設定と同じ
■アクタにも設定が必要
- Include Component in HLOD
HLODにコンポーネントを含めるかどうかのチェック - Include Actor in HLOD
HLODにアクタを含めるかどうかのチェック - HLOD Layer
HLODレイヤーを指定できます。 - HLOD Batching Policy
強制的にメッシュセクションでバッチを行うのか?
もしくはInstancingでバッチを行うのか?を選択 - Exclude from HLOD Levels
特定のレベルのHLODから除外するかどうか指定できる
■まとめ
HLODのセルやロード範囲の設定はWorldPartitionに一蓮托生に思える。
(※WorldPartitionを使用しなければそんなことも言うことはないが)
そのため、別段設定というものは不要にも思えるが、大量のアクタが存在する場合は注意して設定した方がよいだろう。
グリッドサイズ25600→12800にするなど決めてた方がよさそうだ。
一つのセルの中に大量にある場合の方がビルド時間は少なくなる。ただしHLOD生成時に大量のメモリを使用するため、ビルド時間が多くかかってしまう。そのためギリギリまで配置を変更するなどの調整は行わない方がよさそうだ。
すべては計画を立てて行う必要がありそうだ!
それにしても、公式も内容が曖昧、世に出ている動画や記事も中途半端となっているのが難儀だ・・。
ここで出たまとめも中途半端なため、検証をしっかりと行った方がよさそうである。
またその時は記事を更新しますので、また一読のほどよろしくお願いします!
ちなみに、
↑↑こちらで紹介している「階層LODアウトライナー」だが、WorldPartitionを使用したレベルデータでは使用できないので注意してほしい。
■詳細
- マージアクタについての記事を過去に作成しているので一読してみるとよいかも ↩︎