UDN
Search public documentation:

LandscapeCreatingJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > ランドスケープ > 新たなランドスケープの作成

新たなランドスケープの作成


概要


ランドスケープを作成するには、複数の方法があります。編集ツールによって次の機能が提供されています。すなわち、まったく新たなランドスケープを作成する機能、Unreal Editor または外部ツールで以前に作成された高さマップをインポートする機能、「Unreal Engine 3」において以前のテレインシステムを使用して作成された既存のテレインを変換する機能。外部ツールを使用して作業のとっかかりとなるベースを作成する方法は、ランドスケープ作成プロセスを速める良い方法です。その後このベースは、インポートおよび除去、変更することが可能です。その際、Unreal Editor 内部の編集ツールを使用することによって、ランドスケープをカスタマイズするとともに、ワールドにフィットさせ、理想的なゲームプレイを実現することができます。当然のことながら、レガシー テレインを変換できるならば、テレインを含んでいる既存のマップをサルベージすることが可能になるとともに、これらに新たなシステムとツールを適用することができるようになります。変換プロセスは、ほぼ自動化されているため、かなり容易に実行することができます。

ランドスケープのサイズ


始めの頃は、ランドスケープの有効なサイズが、いつもただちに分かるとは限りません。高さマップの有効なサイズを判断できるようになるには (またそれ以上に、最適なサイズを判断できるようになるには)、ランドスケープの基本的なアーキテクチャに精通する必要があります。メモリおよびパフォーマンス上の効率性を損なうことなく、巨大なテレインを実現できるシステムを構築するには、アーキテクチャによる暗黙の制限が、ハイトマップのサイズに対して課せられることになります。つまり、サイズには有効なものもあれば、無効なものもあるのです。「Unreal Engine 」における以前のテレインシステムでは、まったく制限がないか (あらゆるサイズが有効で機能した)、あるいは、制限があってもかなり単純なものでした (2 つの高さマップの平方のみが許されていた)。ランドスケープの高さマップに課せられる制限は、これよりも複雑で厳格なものです。

ランドスケープのコンポーネント

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

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

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

Landscape_Components.jpg

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

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

頂点で表した各セクションのサイズも、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 コンポーネントという値が我々の最大値となっています。

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

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

全体のサイズ (頂点) セクションあたりのクワッド コンポーネントあたりのセクション コンポーネントのサイズ (クワッド) トータルのコンポーネント
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 コンポーネント)
509x509 127 4 (2x2) 254x254 4 (2x2 コンポーネント)
505x505 63 4 (2x2) 126x126 16 (4x4 コンポーネント)
255x255 127 4 (2x2) 254x254 1
253x253 63 4 (2x2) 126x126 4 (2x2 コンポーネント)
127x127 63 4 (2x2) 126x126 1
127x127 63 1 63x63 4 (2x2 コンポーネント)

新たなランドスケープの作成


まったく新しいランドスケープを作成するには、[Landscape Edit] (ランドスケープ編集) ウインドウの [ Create New ] (新規作成) セクションを使用します。このセクションを展開すると、次のように、利用可能なオプションが表示されます。

Landscape_Create_Section.png

[ Heightmap Size ] (高さマップのサイズ) セクションが、新たなランドスケープを作成する際に使用されます。

Landscape_Heightmap_Size.png

Size (vertices) (サイズ (頂点)) の値を、ランドスケープの適切なサイズにセットします。 Component Size (コンポーネントのサイズ) プロパティが、入力されたサイズに基づいて自動的に選択されます。

注記 : このサイズは、新たなランドスケープを作成するために以前に論じられた条件にしたがって、コンポーネントとセクションの作成を容易にすべきものです。トータルのコンポーネントは、0 以外の値になります。また、値が条件を満たした場合、[ Create Landscape ] (ランドスケープを作成する) ボタンが有効になります。

Landscape_New_Heightmap_Size.png

quads per section (セクションあたりのクワッド) と sections per component (コンポーネントあたりのセクション) から選べるオプションもありますが、選択には注意しなければなりません。コンポーネント数が劇的に上昇し、ビルド時間に影響を与えるのみならず、パフォーマンスにも影響を及ぼす可能性があるからです。

Landscape_Create_Button.png をクリックして、新たなランドスケープを作成します。これが完了すると、デフォルトのマテリアルが適用された平らな平面として、ランドスケープがビューポート内に表示されます。

Landscape_NewTerrain.jpg

高さマップとレイヤーをインポートする


高さマップ (必要であればレイヤーも) を Unreal Editor にインポートすることによって、そこからランドスケープを作成することができます。このプロセスは、[Landscape Edit] (ランドスケープ編集) ウインドウの [ Create New ] (新たに作成) セクションから開始することもできます。

高さマップの形式

高さマップの場合、.raw/.r16 は、サンプル 1 個につき 16 ビットで、符号なしの値、頂点 1 個につき1 個、ヘッダその他データなしとなります。すなわち、PC のバイトオーダーで、頂点 1 個につき 2 バイトとなります。したがって、127x127 の場合は、32258 バイトが必要となります。Photoshop から高さマップを保存するには、image mode (イメージモード) を 16 ビットのグレースケールに変更します。さらに、RAW file format (RAW ファイル形式) を選択し、1 channel (1 チャンネル) 、16 bits per pixel (ピクセル 1 個につき 16 ビット)、PC byte order (PC バイトオーダー) を選択します。

レイヤーの形式

レイヤーのアルファマップについては、ピクセル 1 個につき 8 ビットで、単一チャンネルの RAW ファイルが必要となります。

Heightmap Import (高さマップのインポート)

[ Heightmap Import ] (高さマップのインポート) セクションを使用して、高さマップのためにインポートするファイルを指定します。

Landscape_Heightmap_Import.png

このファイルは、16 ビットの .raw ファイルか .r16 ファイルのどちらかでなければいけません。また、データの形式を指定できるオプションがあります。

  • Unsigned/Singed -
  • PC/Mac -

Landscape_Import_Heightmap.png

高さマップを指定すると、[ Heightmap Size ] (高さマップのサイズ) セクションが、その高さマップに合致する値で満たされます。また、[ Create Landscape ] (ランドスケープの作成) ボタンが有効になります。

Landscape_New_Heightmap_Size.png

高さマップだけをインポートする場合は、この時点で、 Landscape_Create_Button.png をクリックしてインポートします。 そうでない場合 (インポートすべきレイヤーがある場合) は、続いて以下のセクションに入ります。

レイヤーのインポート

[ Layers ] (レイヤー) セクションを使用して、インポートすべきレイヤーのためのファイルを指定します。

Landscape_Layers_Import.png

これらのファイルは、8 ビットの .raw ファイルか .r8 ファイルでなければいけません。複数のレイヤーファイルを指定してインポートすることが可能です。

Landscape_Import_Layers.png

レイヤーファイルを選択したら、 Landscape_Create_Button.png をクリックしてインポートします。

インポート結果

インポートが完了すると、ランドスケープがビューポート内に表示されます。

Landscape_Import_Terrain.jpg

レイヤーが高さマップとともにインポートされた場合は、インポートされたレイヤーに適合する正しい設定を含む ランドスケープ マテリアル が割り当てられることによって、完全にテクスチャ化されたランドスケープを表示できるようになります。

Landscape_Import_Terrain_Material.jpg

レガシー テレインをランドスケープに変換する


既存のテレインシステムを使用して作成されたテレインを含むマップのために、[Landscape Edit] (ランドスケープ 編集) ウインドウの [ more ] (さらに) セクションにおいて、変換パスがランドスケープによって提供されています。変換プロセスは、非常に簡単です。次のようにします。 Landscape_Convert_Button.png ボタンを押すと、マップ内のあらゆるテレインが変換されます。

既存のテレインをランドスケープ テレインに変換する場合、以下のような一定の制限があります。

  • Max Component Size (最大コンポーネントサイズ) が、2 の累乗から 1 を減じたものを 1 倍ないしは 2 倍、3 倍したものであること。(例 : 1、2、3、6、7、9、14、15、21、30、45)
  • Num Patches [X/Y] (数 パッチ [X/Y]) が、 Max Component Size の倍数であること。
  • Max Tessellation Level (最大テセレーションレベル) が 1 にセットされていること。

これら制限は、上記で指定された順序で適用されます。これら条件のどれかが満たされない場合、メッセージボックスが表示されて、どの条件が満たされていないかを特定します。

Landscape_Convert_Dialog_1.jpg

Landscape_Convert_Dialog_2.jpg

Landscape_Convert_Dialog_3.jpg

条件全部が満たされた場合は、テレインが変換プロセスを開始します。進行ダイアログが表示されます。

Landscape_Convert_Progress.jpg