Water のデバッグとスケーラビリティ オプション

プロジェクトのニーズに合った Water のデバッグとスケール方法について説明します。

Water システム には、デバッグ目的やビジュアライゼーションの提供、プロジェクトのスケーラビリティ オプションの設定のための関連情報をレベル ビューポートに表示するのに役立つ独自のコマンドが含まれます。

Water レベルの統計情報

エディタでの作業中、バッククォート (`) キーを使用して **コンソール** を開き、いずれかの統計コマンドを入力すると、現在ロードしているレベルの Water システムに関する情報を表示することができます。

Stat Water

コマンド「stat water」を使用して、現在のシーンで使用されている水に関連する関数について CPU 統計の表示を切り替えます。

Statistical data about the water system displayed on screen.

統計情報名

説明

IsUnderwater Test

関数のコスト。フレームごとに呼ばれる回数とコスト (最大 / 平均) をテストします。このテスト関数は、水中のポスト プロセスをアクティブにするかどうかを検出するために使用されます。

WaterBody_ComputeWaterInfo

水に関連する情報を計算するためにエンジン全体で使用される関数のコスト。ゲームプレイ システム、物理、その他のシステムによって多くのクエリが実行される場合、フレームに非常に多くの時間が追加される可能性があるため、フレーム時間をチェックするのに役立ちます。

WaterBody_ComputeWaterDepth

水深に関するデータを計算する WaterBody_ComputeWaterInfo 関数の一部として実行されます。

WaterBody_ComputeWaveHeight

水位に関するデータを計算する WaterBody_ComputeWaterInfo 関数の一部として実行されます。

WaterBody_ComputeLandscapeDepth

ランドスケープの深さに関するデータを計算する WaterBody_ComputeWaterInfo 関数の一部として実行されます。

WaterBody_ComputeWaterDepthWaterBody_ComputeWaterHeight、および WaterBody_ComputeLandscapeDepth の統計は実行できる情報を提供しません。これらは WaterBody_ComputeWaterInfo 統計の一部であり、いくつかはその機能で最もコストのかかる部分になります。代わりに、Unreal Insights を使用してシーンをプロファイルすると、何が起きているのかをより理解することができます。

Stat WaterMesh

コマンド「stat watermesh」は、ウォーター メッシュと水面のレンダリング に関する情報を表示します。レベルで使用されている水のさまざまな部分について設定や割り当てを調整することにより、この表示の統計に従って実行することができます。

Statistical data about the water meshes being rendered on screen.

統計情報名

説明

Vertices Drawn

現在のビューのすべての Water Body に描画されている頂点の数を表示します。

Tiles Drawn

r.Water.WaterMesh.ShowTileBounds 1

Draw Calls

Number of Drawn Materials の数値は Tiles Drawn

Number of Drawn Materials

このフレームに描画されている異なる水のマテリアルの数。たとえば、異なる水のマテリアルを持つさまざまな Water Body を使用している場合、フレームごとに描画されるマテリアルの数が多くなります。対象的に、すべての Water Body が同じマテリアルを共有している場合、描画されるマテリアルが少なくなるため、フレームごとのドローコールの数が減少します。

デバッグ コンソール コマンド

次のコンソール コマンドは、レベルにある Water システムをデバッグする際に役立ちます。

変数名

説明

デフォルト値

r.Water.WaterMesh.ShowTileGenerationGeometry

Water グリッドの交差と Water メッシュ タイルの生成に使用されるジオメトリを表示します。

0

r.Water.WaterMesh.ForceRebuildMeshPerFrame

すべてのフレームで Water タイル メッシュ全体を強制的にリビルドします。

0

r.Water.WaterMesh.Enabled

Water メッシュをレンダリングするかしないかを設定します。これはレンダリングと Water メッシュ タイル生成の両方に影響します。

0

r.Water.WaterMesh.ShowWireframeAtBaseHeight

ワイヤーフレームのレンダリング時に、Water タイル メッシュをディスプレイスメントなしに表示します。

0

r.Water.WaterMesh.EnableRendering

シーン プロキシ内からのすべての水のレンダリングをオフにするかどうかを設定します。

1

r.Water.WaterMesh.ShowLODLevels

レベルの高さが 0 のカメラ位置の周囲に、同心円状に詳細度を表示します。

0

r.Water.WaterMesh.ShowTileBounds

Water メッシュ タイルのタイル境界を r.Water.TileBoundsColor で色付けして表示します。

デフォルトでは、タイルは Water Body タイプまたはトランジション タイプによって色付けされます。

  • 赤:

  • :** 湖

  • :** 海

  • 黄色:** 川から湖へのトランジション

  • 紫: 川から海へのトランジション

0

r.Water.WaterMesh.TileBoundsColor

r.Water.ShowTileBounds を使用して視覚化する場合に、Water メッシュ タイルの境界の色を設定します。「0」に設定すると、色は詳細度 (LOD) のトランジションを表します。「1」に設定すると、色は Water Body のタイプを表します。

1

r.Water.WaterMesh.ShowWireframe

水のワイヤーフレーム レンダリングを強制します。

0

r.Water.VisualizeActiveUnderwaterPostProcess

「1」に設定すると、水中のポスト プロセスでどの Water Body が現在選択されているかを示します。「2」に設定すると、カメラ位置で実行される Water Data Query に関する追加情報が提供されます。これは、Water Data Query のデバッグに役立ちます。

0

r.Water.OverrideWavesTime

値が「0」以上の場合、波に使用される時間を強制します。

-1

r.Water.FreezeWaves

波の時間を停止します。

0

r.Water.OceanFallbackDepth

クエリ位置の下にテレインが見つからない場合に報告する海の深さ。この深度値は、「0」以下に設定されていると使用されません。

3000

r.Water.DebugBuoyancy

水の相互作用のデバッグ描画を有効にします。

0

r.Water.WaterInfo.ForceUpdateWaterInfoNextFrames

次の N フレームでの水の情報テクスチャの再生成を強制します。マイナスの値は、フレームごとの更新を強制します。

0

タイル境界と色

コンソール コマンド「r.Water.WaterMesh.ShowTileBounds 1」を使用して、現在レベルで使用されているさまざまなタイプの Water メッシュ タイルの色付けされたボックスを表示します。

タイル境界の表示方法に、次のいずれかを選択します。

  • 0」は無効です。

  • 1」は Water Body タイプによって決まります。

  • 2」は詳細度によって決まります。

  • 3」は密度インデックスによって決まります。

Example scene with water bodies and their tile bounds color.

Water Body およびトランジション タイプによって色付けされている Water タイル境界を表示しているサンプル シーン。

デフォルトでは、タイルは Water Body タイプと他の Water Body 間でのトランジションによって色付けされます。

  • 赤:

  • :** 湖

  • :** 海

  • 黄色:** 川から湖へのトランジション

  • 紫: 川から海へのトランジション

アクティブな水中のポストプロセスを視覚化する

コンソール コマンド「r.Water.VisualizeActiveUnderwaterPostProcess」を使用して、現在カメラによってオーバーラップしている水中のポスト プロセスに関する情報をレベル ビューポートに表示します。

1」に設定すると、現在使用されている水中のポスト プロセスに関する基本のデバッグ情報が提供されます。

Debug information displayed on screen about the current underwater post process.

2」に設定すると、カメラ位置で実行される Water Data Query に関する追加情報が表示されます。

Additional debug information displayed on screen about the current underwater post process.

スケーラビリティ コンソール コマンド

次のコンソール コマンドは、レベルとプロジェクトにある Water システムのスケーラビリティ オプションの設定に役立ちます。

変数名

説明

デフォルト値

r.Water.WaterMesh.LODCountBias

値を各 Water メッシュ コンポーネントの LOD 数に追加します。マイナスの値にすると品質が低下し (Water メッシュの密度が下がります)、値を大きくするほど品質が向上します (Water メッシュの密度が上がります)。

0

r.Water.WaterMesh.TessFactorBias

値を各 Water メッシュ コンポーネントのテッセレーション係数に追加します。値をマイナスにすると、全体的な密度 (解像度) または頂点グリッドが低下します。値を大きくするほど、Water メッシュ コンポーネントの密度 (解像度) が高くなります。

0

r.Water.WaterMesh.LODMorphEnabled

異なる詳細度間のトランジションでスムーズな LOD モーフィングを使用するかどうかを設定します。これを無効にすると LOD レベル間でポッピングが発生することがありますが、頂点シェーダーの計算がスキップされ、シーン内の水による負荷が小さくなります。

1

r.Water.WaterMesh.LODScaleBias

値を各 Water メッシュ コンポーネントの LOD スケールに追加します。値をマイナスにすると全体的な密度 (解像度) または頂点グリッドが低下し、LOD が小さくなります。値を大きくするほど Water メッシュ コンポーネントの密度 (解像度) が高くなり、LOD は大きくなります。許可されている最小値は「-0.5」です。これにより、可能な限り内部 LOD を小さく最適化することができます。

0

r.Water.WaterMesh.PreAllocStagingInstanceMemory

過去の最大値に合わせてステージング インスタンス データ メモリを事前にアロケートします。

これにより、配列を大きくする必要がある場合のオーバーヘッドを削減できますが、使用するメモリは増える可能性があります。

0

r.Water.EnableUnderwaterPostProcess

水中のポスト プロセスを有効にするかどうかを制御します。カメラがサーフェスの下に行かないようにする場合、これを無効にする必要があります。

1

r.Water.EnableShallowWaterSimulation

浅瀬の流体シミュレーションを有効にするかどうかを制御します。

1

r.Water.ShallowWaterMaxDynamicForces

一度に流体シミュレーションに登録する動的な力の最大数。

6

r.Water.ShallowWaterMaxImpulseForces

一度に流体シミュレーションに登録する衝撃力の最大数。

3

r.Water.ShallowWaterRenderTargetSize

矩形の浅瀬の流体シミュレーション レンダー ターゲットのサイズ。有効なディメンションは「サイズ x サイズ」です。

1024

r.RayTracing.Geometry.Water

レイ トレーシング エフェクトに水を含めます。

0

r.Water.WaterSplineResampleMaxDistance

Water スプライン形状をポリゴンに変換するときのサンプル セグメントとスプライン間の最大距離。距離が短くなると、頂点数が増加して物理形状はより正確になり、Water メッシュ タイルはより一致するようになりますが、計算コストも増加します。

50

Water Body Spline Resampling Max Distance

Lake Water Body コリジョン コンポーネント (および Water メッシュ タイルの生成) は、スプライン評価に基づいています。Lake と Ocean の両方の Water Body スプラインは、変換プロセスによってポリゴンに変換され、どの Water メッシュタイルをカバーするのか確認するために処理されます。ポリゴン化は、サンプリングされたスプライン セグメント間の距離が元のスプラインから離れすぎている場合、スプラインが再サンプリングされるイテレートなプロセスです。これにより、曲率の高いセクションのポイント数が多くなり、より直線的なセクションのポイント数は少なくなります。

コンソール変数 r.Water.WaterSplineResampleMaxDistance を使用して距離を調整します。デフォルトでは、「50 cm」が使用されます。値が大きいほど頂点は少なくなり、Lake の スプラインの形状に一致するコリジョン コンポーネントが少なくなります。小さな値を使用する場合、より多くの頂点が作成されます。

生成されたタイル ジオメトリを表示するように「r.Water.WaterMesh.ShowTileGenerationGeometry 1」を設定します。

「50 cm」(デフォルト) の最大距離は、中間の適切な数値です。

最大距離が「400 cm」になると、頂点が少なくなります。

「10 cm」の最大距離は、頂点の数が大きく増加します。

画像をクリックすると拡大表示されます。

フォートナイトを開発し、水のある大きなワールドを使用した経験から、通常サイズの湖を正しく近似する中間の適切な数値として「50」を推奨します。距離をあまりにも短く設定すると、物理形状が十分に一致せず、これにより一部の Water タイルが失われることがあります。

このコンソール変数を調整すると、結果を確認するには、スプライン ポイントを少し動かすなど、Water スプラインに何か変更を加える必要があります。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル