ランドスケープのテクニカル ガイド

ランドスケープの技術的な設定

Windows
MacOS
Linux

ランドスケープ システムで最高のパフォーマンスを実現するには、特定の技術的制約に順守する必要があります。以下のドキュメントでは、こうした制約について説明すると共に、ランドスケープで美しさとパフォーマンスとの間で最適な均衡をとることができるように重要な情報を示します。

技術的な詳細

最初から誰もが、ランドスケープの有効なサイズについてすぐに理解できるわけではありません。ハイトマップの有効なサイズを判断する (最適なサイズの判断を可能にする) には、ランドスケープの基本的なアーキテクチャについて十分に理解していなければなりません。メモリおよびパフォーマンス上の効率を下げずに巨大なテレインを実現するシステムを構築するには、アーキテクチャによって暗黙の制限がハイトマップのサイズに対して課せられることになります。つまり、あるももに有効でも他方では無効な場合もあるということです。これまでのアンリアル エンジンのテレインシステムには、制限はまったくない (あらゆるサイズが有効であり、機能した)、あるいは、あってもかなり単純なものでした (2 つの高さマップの平方のみを許可など)。ランドスケープのハイトマップには、もっと複雑で厳格な制限が課せられます。

Landscape アクタは、各セクションが何を行うかが簡単にわかるように色分けされています。ランドスケープのエッジは黄色、各コンポーネントのエッジは明るい緑、セクションのエッジ (2x2 セクションの場合) は普通の緑、ランドスケープの個々のクワッドは深緑でハイライトされます。

カラー:

Landscape コンポーネント

黄色:

Landscape アクタのエッジ

明るい緑:

Landscape コンポーネントのエッジ

普通の緑:

ランドスケープ セクションのエッジ

深緑:

ランドスケープの個々のクワッド

Landscape_Create_Preview.png

Landscape コンポーネント

ランドスケープは複数のコンポーネントに分割されます。コンポーネントは、レンダリングおよびビジビリティの計算、コリジョンにおいて、「Unreal」の基本単位となります。ランドスケープのコンポーネントは、すべて同じサイズで、常に正方形です。ランドスケープのコンポーネント サイズは、作成時に決定されます。作成するランドスケープのサイズと詳細度に合わせて選択します。

各コンポーネントの高さデータは、1 個のテクスチャに格納されます。そのため、サイズを表す頂点の数が 2 の累乗でなければなりません。2 つの隣り合うコンポーネントがお互い接するエッジ上で共有する頂点の列は、各コンポーネント内で複製されて格納されます。このため、各コンポーネント内のクワッド数について検討することが有効となります。

下図は非常に単純なランドスケープです。全体の輪郭が緑で示され、4 つのコンポーネントが含まれています。各コンポーネントは 1 個のクワッドからできています。コンポーネント同士が接している部分の頂点がどのように複製されるかを示すために、1 個のコンポーネントを分離させたところです。

Landscape_Components.jpg

コンポーネント セクション

コンポーネントはオプションで 1 個または 4 個 (2x2) のサブセクションに分割することができます。サブセクションは、ランドスケープの LOD を計算する際に基本単位となります。

4 個 (2x2) サブセクション オプションを利用すれば、 1 つのサブセクションだけで 4 倍のコンポーネントを使用するので、同じサイズの高さマップに分割することができますが、コンポーネントの使用数が少ない方が通常は高いパフォーマンスを得られます。

頂点で表した各セクションのサイズも、 2 の累乗でなければなりません (最大値は 256 です)。これによって、異なる LOD レベルをテクスチャのミップマップに保存することが可能になります。こうすることで、1 個のコンポーネント内のクワッド数が、2 の累乗から 1 を引いた数 (コンポーネント 1 個につき セクションが 1 個の場合) となるか、あるいは、2 の累乗から 2 を引いた数 (コンポーネント 1 個につき セクションが 4 個の場合) となります。

次の図では、1 個の独立したコンポーネントが 4 つのセクションを含んでいます (全体の輪郭が緑で示されています)。各セクションは、 9 個 (3x3) クワッドからできています。ここでも、セクション同士が接している部分の頂点が、複製されていると分かります。

Landscape_Component_Sections.jpg

ハイトマップのサイズを計算する

このように、ランドスケープのサイズは、各セクションに含まれるクワッドの数、および、各コンポーネントに含まれるセクション数、ランドスケープ内にあるコンポーネントの数に基づきます。コンポーネントの数とそれらコンポーネントそれぞれの解像度が決まれば、ランドスケープ全体のサイズを計算するのは、簡単なことです。

以下はその計算手順の例です。

サンプル 1

まず、 1 個のコンポーネントが 1 個のセクションからできていて、そのセクションが 64x64 個の頂点を含んでいる場合、このコンポーネントのサイズは 63x63 個のクワッドであることになります。たとえば、これらのコンポーネントがランドスケープに 10x10 個含まれているならば、ランドスケープには総計で 630x630 個のクワッドがあることになります。ここで、このようなランドスケープの高さをインポートするならば、631x631 個の頂点からなる高さマップにする必要があります。これは、存在するクワッド数よりも常に頂点の列が 1 つ多くなるためです (1x1 のクワッドは、4 つの頂点が必要となります)。したがって、631x631 が有効なランドスケープのサイズとなります。

サンプル 2

1 個のコンポーネントを 4 個のサブセクションに分割した場合、各セクションが 64x64 個の頂点からできています。すなわち、各セクションは 63x63 個のクワッドからなり、各コンポーネントは 126x126 個のクワッドから構成されることになります。このようなコンポーネントが 32x32 個あるならば、縦横各方向に総計 126 * 32 = 4032 個ずつのクワッドがあることになります。したがって、ランドスケープ総計では、 4033x4033 個の頂点があることになります。

上記例では正方形のランドスケープを扱いました。しかし、正方形ではないランドスケープを作成することも可能です。たとえば、最初の例では、10x10 は特別ではありません。各コンポーネントに 63 個のクワッドがあるとして、AxB 個のコンポーネントからなるランドスケープを作ることができ、そのトータルのサイズは、頂点数で (A*63+1 , B*63+1) となります。

パフォーマンスへの配慮

パフォーマンスへ配慮する場合、コンポーネント サイズとコンポーネント総数がトレードオフとなります。コンポーネントのサイズが小さくなると、LOD の遷移が速くなるとともに、より多くのテレインのオクルージョンが可能になります。ただし、サイズが小さくなると、より多くのコンポーネントが必要となります。

各コンポーネントではレンダリングスレッドの CPU 処理負荷がかかります。また、各セクションで描画コールが起こります。したがって、コンポーネントの数を最小限に抑える必要があるのです。最大のランドスケープについては、最大 1024 コンポーネントという値を推奨しています。

推奨されるランドスケープのサイズ

以下に列挙したサイズは、エリアを最大化しながらランドスケープ コンポーネントの数を最小化するものです。

全体のサイズ (頂点)

クワッド / セクション

セクション / コンポーネント

コンポーネントのサイズ

トータルのコンポーネント

8129x8129

127

4 (2x2)

254x254

1024 (32x32)

4033x4033

63

4 (2x2)

126x126

1024 (32x32)

2017x2017

63

4 (2x2)

126x126

256 (16x16)

1009x1009

63

4 (2x2)

126x126

64 (8x8)

1009x1009

63

1

63x63

256 (16x16)

505x505

63

4 (2x2)

126x126

16 (4x4)

505x505

63

1

63x63

64 (8x8)

253x253

63

4 (2x2)

126x126

4 (2x2)

253x253

63

1

63x63

16 (4x4)

127x127

63

4 (2x2)

126x126

1

127x127

63

1

63x63

4 (2x2)

レイヤーのデバッグ モード

Layer Debug モードは、特定レイヤーのウェイトをビューポートのランドスケープ上で視覚化できるようにします。Landscape Visualizers の配下にあるビューポートの [View (表示)] メニューで Layer Debug モードを有効化できます。ビューポートのランドスケープ関連のビューモードの情報については、Landscape Visualizers を参照してください。

Layer Debug モードを有効にすると、各カラーチャンネルを選択できるラジオ ボタンがターゲット レイヤーと共にリストに表示されます。

Landscape_Target_Debug.png

チャンネルを選択すると、選択したターゲットレイヤーのチャンネルがカバーするエリアを表示するシェーダーがランドスケープに反映されます。

Landscape_Target_Debug_Demo.png

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信