World Partition システムは、グリッドを使用して、ワールドを実行時に動的にロードおよびアンロードができるセルに分離します。さらに、遠くの山、木、崖など、遠くにあり、インタラクティブではないアクタを引き続き表示したい場合があります。
|
|
---|---|
HLOD オフ。セルにロードされたコンテンツのみが表示されます。 |
HLOD オン。ロードされていないセルのコンテンツのみ HLOD で置き換えられます。 |
World Partition - Hierarchical Level of Detail (HLOD) システムは、カスタム HLOD レイヤーを使用して、大量のスタティックメッシュ アクタを編成し、単一のプロキシメッシュとマテリアルを生成します。この手法は、アンロードされた World Partition グリッド セルを視覚化し、フレームあたりの描画呼び出しの数を減らします。大規模なオープン ワールドで使用する場合は特にパフォーマンス向上のために使用されます。
ランドスケープやウォーター コンポーネントなどの一部のワールド コンポーネントは、現在 HLOD アクタによってサポートされていません。
HLOD レイヤーを作成する
World Partition HLOD は、HLOD レイヤー アセットによって制御されます。これらの特殊なアセットには設定が含まれており、プロジェクトは複数の HLOD レイヤーを使用することができます。
コンテンツ ドロワー を開き、[+ Add] をクリックしてメニューを開き、新しい HLOD レイヤー アセットを作成します。[Miscellaneous (その他)] メニューに移動し、[HLOD Layer] アセットを選択します。(コンテンツ ドロワー を右クリックしても、同じメニューが開きます。)
作成された HLOD レイヤーをダブルクリックして、アセット エディタで開きます。
設定 |
説明 |
---|---|
Layer Type |
次のオプションからレイヤー タイプを選択します。
|
Mesh Merge Settings/Proxy Settings |
Merged Mesh または Simplified Mesh レイヤー タイプが選択されている場合、追加のオプションを表示します。 |
Always Loaded |
このレイヤーによって生成された HLOD プロキシ メッシュを常にロードするかどうかを決定します。 |
Cell Size |
このレイヤーに HLOD アクタを含めるために作成されたランタイム グリッドのセル サイズを設定します。HLOD レイヤを Always Loaded に設定している場合、このオプションは使用できません。 |
Loading Range |
ランタイム グリッドがセルをストリーミングする距離を設定します。HLOD レイヤを Always Loaded に設定している場合、このオプションは使用できません。 |
Parent Layer |
この HLOD レイヤによって作成されたアセットを、指定された HLOD レイヤに自動的に割り当てることができます。 |
HLODMaterial |
Merged Mesh および Simplified Mesh レイヤー タイプのマテリアルのベイク処理に使用するベースマテリアルを設定します。 これは詳細設定です。ほとんどのユースケースでは、デフォルトのマテリアルで十分です。 |
レイヤー タイプを選択する
HLOD レイヤを使用するためには、まず初めにレイヤー タイプを選択します。
レイヤータイプ |
説明 |
---|---|
Instancing |
このタイプのレイヤのスタティックメッシュ アセットは、それらのアセットで最低の詳細レベル (LOD) 設定を使用して、インスタンス化されたスタティックメッシュ (ISM) コンポーネントに置き換えられます。このタイプは、木や葉などのインポスタ メッシュに最適です。 |
Merged Mesh |
このタイプのレイヤのスタティックメッシュ アセットは、単一のプロキシ メッシュを作成するためにマージされます。 |
Simplified Mesh |
このタイプのレイヤーのスタティックメッシュ アセットは、単一のプロキシ メッシュにマージされ、メッシュの簡略化が実行されます。 |
メッシュ マージ設定
これらの設定は、マージされたメッシュが選択されている場合にのみ使用できます。
設定 |
説明 |
---|---|
Generate Lightmap UV |
マージされたメッシュのライトマップ UV を生成します。この新しいレイアウトは、ターゲット ライトマップ UV チャネルに配置されます。 |
Target Lightmap Resolution |
生成されたスタティックメッシュでライトマップ UV 座標を生成するために使用されるライトマップ解像度を指定します。これにより、UV アイランド間の距離が制御されます。解像度が高いほど、各 UV アイランド間のスペースが狭くなります。 |
Computed Lightmap Resolution |
入力メッシュ コンポーネントのライトマップ解像度を合計して、ライトマップ解像度を計算する必要があるかどうかを決定します。 |
Pivot Point at Zero |
マージされたメッシュのピボットポイントの位置がワールド原点にあるか、最初にマージされたコンポーネントにあるかを決定します。 |
Merge Physics Data |
メッシュ コンポーネント、特にコリジョン プリミティブの物理データをマージするかどうかを決定します。 |
Merge Materials |
ソース マテリアルを単一のフラット マテリアルにマージします。これは、LODSelection Type によって決定されるため、単一の LOD レベルをマージする場合にのみ使用できます |
Material Settings |
Merge Materials が有効になっている場合に作成される簡略化されたマテリアルのマテリアル設定が含まれます。 |
Gutter Size |
トップミップ レベルのベイク処理されたマテリアルのサブチャートにスペースを追加します。テクセルで測定されます。 |
Create Merged Materials |
すべてのソース コンポーネント マテリアル、および新しい UV 座標のセットからフラット マテリアルを作成します。この資料は、デフォルトではどのセクションにも適用されません。 |
Bake Vertex Data to Mesh |
頂点の色や法線などの頂点データを、結果のプロキシ メッシュにベイクします。 |
Output UVs |
指定された UV チャネルをマージされたメッシュに出力します。ソース メッシュ コンポーネントには、指定されたチャネルの有効な UV が含まれている必要があります。 |
LODSelection Type |
マージされたスタティックメッシュを生成するときに使用する LOD 選択モードを決定します。
|
Specific LOD |
ソース メッシュからエクスポートする LOD レベルを指定します。 |
Use Vertex Data for Baking Material |
頂点の色や法線などの頂点データを、ベイクアウトされたマテリアルにベイク処理します。Merge Materials が選択されている場合にのみ使用できます。 |
Use Texture Binning |
最終的なアトラス テクスチャでの重要性に応じて、さまざまな出力テクスチャ サイズを計算します。Merge Materials が選択されている場合にのみ使用できます。 |
Reuse Mesh Lightmap UVs |
マテリアルをベイク処理するときに、ソースメッシュからのライトマップ UV を再利用するかどうかを決定します。False の場合、エンジンは新しい UV セットを生成します。 |
Merge Equivalent Materials |
同等と見なされるマテリアルをマージしようとします。ワールド位置またはアクタ位置を使用して出力カラーを決定する場合、このプロセスにより、マージされたメッシュにアーティファクトが発生する可能性があります。 |
Use Landscape Culling |
使用可能なランドスケープ ジオメトリを用いて、非表示の三角形をカリングします。たとえば、最も低い三角形がランドスケープの表面の下になる位置にツリー メッシュが配置されている場合、遮られた三角形はマージ時に削除されます。 |
Include Imposters |
ソース メッシュ コンポーネントの一部であるインポスタ LOD が含まれます。 |
Allow Distance Fields |
このメッシュの距離フィールドを計算できるようにします。これを無効にすると、マージされたメッシュが遠くにのみレンダリングされる場合にメモリが節約されます。 |
Generate Nanite Enabled Mesh |
生成されたメッシュで Nanite を有効にします。 |
プロキシ設定
これらの設定は、SimplifiedMesh が選択されている場合にのみ使用できます。
設定 |
説明 |
---|---|
Screen Size |
結果のプロキシ メッシュのサイズをピクセル単位で決定します。 |
Calculate Correct LODModel |
指定された画面サイズに基づいて、どの LOD モデルで十分かを計算します。これは、各入力メッシュを分析し、各 LOD 遷移サイズに基づいて正しい LOD を選択することによって行われます。 |
Override Spatial Sampling Distance |
プロキシ LOD マージのために複数のソースメッシュを変換するときにオーバーライドします。 サンプリングが少ない大きなジオメトリは、メモリ コストが非常に高くなります。 |
Material Settings |
材料を簡略化するための設定が含まれています。 |
Merge Distance |
メッシュをマージする必要がある距離。これにより、離れた形状のドアや窓などの隙間を埋めることができます。 |
Unresolved Geometry Color |
マージ距離によって閉じられたドアや窓など、マージされたジオメトリをソースジオメトリに関連付けることができない場合に表示されるベース カラーを割り当てます。 |
Transfer Distance Override |
簡略化されたジオメトリのテクスチャ値を検出するときに使用される検索距離をオーバーライドします。ゼロ以外の Merge Distance 設定が凹状のコーナーに新しいジオメトリを生成する場合に使用されます。 |
Hard Edge Angle |
面の間にハードエッジが導入される角度。これにより、頂点の数が増え、UV シームが追加される可能性があります。法線マップを使用しない場合にのみ推奨されます。 |
Normal Calculation Method |
簡略化されたジオメトリの法線を計算するために使用される方法を制御します。
|
Lightmap Resolution |
新しく生成されたライトマップの解像度を設定します。 |
Compute Lightmap Resolution |
マージ プロセスに含まれる各メッシュの寸法を合計することにより、ライトマップの解像度を計算します。 |
Enable Volume Culling |
ボリュームをカリングしてジオメトリを除外できるようにします。 |
Allow Distance Fields |
このメッシュの距離フィールドを計算できるようにします。これを無効にすると、マージされたメッシュが遠くにのみレンダリングされる場合にメモリが節約されます。 |
Reuse Mesh Lightmap UVs |
マテリアルをベイク処理するときに、ソースメッシュからのライトマップ UV を再利用するかどうかを決定します。False の場合、エンジンは新しい UV セットを生成します。 |
Group Identical Meshes for Baking |
同一のメッシュまたはメッシュ インスタンスを 1 回だけベイクします。焼きたてのテクスチャの品質が向上し、焼き時間が短縮されます。マージされたメッシュとソースメッシュのビジュアルの間に不一致が生じる可能性があります。 |
Create Collision |
マージされたメッシュのコリジョンを生成します。 |
Allow Vertex Colors |
マージされたメッシュに頂点の色を保存することができます。 |
Generate Lightmap UVs |
マージされたメッシュのライトマップ UV を生成します。 |
Generate Nanite Enabled Mesh |
生成されたメッシュで Nanite を有効にします。 |
HLOD レイヤーを使用する
HLOD プロキシ メッシュを生成するには、アクタを HLOD レイヤーに追加して、HLOD を生成するように指示する必要があります。これが完了すると、コマンドレットが実行されてプロキシ ジオメトリが生成されます。
現在、コマンドレットは HLOD プロキシ ジオメトリを生成する唯一の方法です。
アクタを追加する
アクタは現在、次の方法で HLOD レイヤーに追加されています。
アクタの [Details] パネルの HLOD プロパティ。
Data Layer の Default HLOD Layer プロパティ。
ワールド設定の Default HLOD Layer プロパティ。
WorldPartitionConvertCommandlet を使用する場合にも、HLOD レイヤー オプションを使用できます。変換 ini ファイルを使用して、HLOD レイヤーのプロパティを指定できます。
[/Script/UnrealEd.WorldPartitionConvertCommandlet]
[HLODLayer_Default HLODLayer]
[HLODLayer_Tree HLODLayer]
この構成で変換されたワールドは、 DefaultHLODLayerName (この例では HLODLayer_Default ) を指定します。これは、一致する .ini セクションで指定されたプロパティを使用して作成されます。HLODLayer_Default によって作成されたアクタは、.ini ファイルのそのセクションで定義されたプロパティを使用して HLODLayer_Tree に割り当てられます。
HLOD を生成する
HLOD は WorldPartitionHLODsBuilder コマンドレットを使って生成されます。このコマンドレットを実行すると、HLOD レイヤーで指定した生成設定に従って、ワールド パーティション セルの HLOD アクタが作成されます。
ソース アクタに変更が加えられていない場合、HLOD アクタは再作成またはビルドされません。アクタ自体、またはそのメッシュ、マテリアル、テクスチャに変更を加えると、コマンドレットを再実行したときに HLOD が再構築されます。
次の手順でコマンドレットを使用します。
Windows で、コマンド プロンプト ウィンドウを開きます。
まず、プロンプトで、UE4Editor.exe ファイルが格納されているディレクトリに移動します。例:
C:\Program Files\Epic Games\UE_4.26\Engine\Binaries\Win64
次に、コマンドレット UE4Editor.exe を実行する .exe ファイルの名前でコマンドを開始します。
次の引数を追加します。
YourProject YourMap -run=WorldPartitionBuilderCommandlet -AllowCommandletRendering -Builder=WorldPartitionHLODsBuilder
YourProject はプロジェクト フォルダの名前であり、 YourMap は HLOD をビルドするマップ ファイルの名前です。
さらに、このコマンドの動作を変更するために、次のオプションのいずれかを提供できます。
オプション |
説明 |
---|---|
-SetupHLODs |
World Partition セルの HLOD アクタを設定しますが、それらのジオメトリは作成しません。新しいアクタを更新、削除、または作成できる可能性があります。 |
-BuildHLODs |
既存のすべての HLOD アクタのジオメトリを構築します。 |
-DeleteHLODs |
すべての HLOD アクタを削除します。 |
HLOD を視覚化する
HLOD アクタはエディター ビューポートで視覚化でき、HLOD セルのステータスは実行時に視覚化できます。
エディタ内
エディタで、[View Mode (表示モード)] を [Level of Detail Coloration (LOD の色付け)] に変更し、[Hierarchical LOD Coloration (階層 LOD の色付け)] を選択します。HLOD レイヤーに割り当てられたアクタは緑色になります。ビューをズームアウトすると、HLOD が青色で表示されます。
ビューポートで、[View Mode] を [Level of Detail Coloration] に変更し、[Hierarchical LOD Coloration] を選択すると、HLOD レイヤーに割り当てられたアクタが緑色で表示されます。
カメラをアクタから遠ざけると、HLOD プロキシ メッシュが青色で表示されます。
ランタイム
実行時にコンソール コマンド wp.Runtime.ToggleDrawRuntimeHash2D を実行すると、緑色で読み込まれた HLOD セルが表示されます。