UDN
Search public documentation:

FoliageJP
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 ホーム > フォーリッジ

Foliage (フォーリッジ (葉))


Foliage_Scene.jpg

このドキュメントでは、新たな Instanced Foliage System (インスタンス化フォーリッジ システム) および Edit Mode (編集モード) について解説しています。これは、2011年6月の QA ビルドで初めて使用できるようになったもので、現在も開発中です。

概要


過去、「Unreal Engine 3」には、フォーリッジ ボリュームやテレイン デコレーションを含む、レガシーなフォーリッジ システムがいくつかありました。ただし、これらは柔軟性に欠け、特にすばらしく機能するものでもなく、「Unreal」 ライトマスとあまりうまくインタラクトしませんでした。

この新たな Foliage システムによって、レガシーテレインおよび静的メッシュ、Landscape 上のメッシュ群をすばやくペイントまたは消去することができるようになります。これらのメッシュは自動的に、ハードウエア インスタンシングを使用してレンダリングされるバッチに統合されます。つまり、たった 1 度の描画コールで多数のインスタンスをレンダリングすることができるということです。

Foliage Edit Mode (フォーリッジ編集モード)


Foliage Edit Mode (フォーリッジ編集モード) を起動するには、「Unreal」エディタの左上隅にある [Modes] (モード) ツールバーから葉のボタンをクリックします。

FoliageMode.png

このモードを起動すると、Foliage 編集モードウインドウが現れます。

FoliageWindowInitial.png

Mesh リスト


最初は、フォーリッジメッシュが何もリストされていません。フォーリッジをペイントする前に、コンテンツブラウザから静的メッシュを Foliage 編集モードウインドウの [Mesh] リスト領域にドラッグする必要があります。

FoliageWindowDrag.png

ドラッグすると、メッシュのアイコンが現れ、多数のパラメータが表示されます。複数の静的メッシュを [Mesh] リストにドラッグすることができます。

FoliageWindowAfterDrag.png

[Mesh] リストの各メッシュには 3 つのモードがあります。メッシュ名の左側にあるボタンからアクセスすることができます。 (mesh list mode) 最初のモードは、折りたたまれているため、メッシュ名とアイコンだけが表示されます。2 つ目のモードは、Paint Settings (ペイント設定) モードです。これにはパラメータがあるため、インスタンスをレベルに配置する方法を制御できます。3 つ目のモードは、Instance Settings (インスタンス設定) モードです。このモードによって、レベルに既に配置されているインスタンスの振る舞いを制御できます。これらのモードは、以下の各セクションで詳細に解説しています。

Paint Settings モード、または、Instance Settings モードの場合は、メッシュのアイコンの上に、次のようなボタンが 3 個表示されます。

<- 現在のレベルにすでに配置されているメッシュの全インスタンスを、コンテンツブラウザで現在選択されている静的メッシュと交換します。
X [Mesh] リストからメッシュを削除するとともに、 現在のレベルにすでに配置されているこのメッシュの全インスタンス も削除します。
magnifying glass コンテンツブラウザにおいて静的メッシュの位置を示します。

Foliageのツール


Foliage ウインドウ最上部にある適切なボタンを選択すると、4 つのツールを使用することができます。

Paint Tool ペイントツールです。フォーリッジインスタンスをワールドに追加したり、ワールドから削除するために使います。
Reapply Tool 最適用ツールです。ワールド内ですでにペイントされているインスタンスのパラメータを変更するために使用します。2011年10月のビルドから使用できます。
Select Tool 選択ツールです。移動、削除などのために個々のインスタンスを選択するために使用します。2011年9月のビルドから使用できます。
Paint Select Tool ペイント選択ツールです。ペイントブラシを使って多数のインスタンスを選択するためのツールです。2011年9月のビルドから使用できます。

Paint Tool (ペイントツール)


Paint Tool

Foliage モードがアクティブな場合、透明な球体ブラシがレベル内で描画され、フォーリッジブラシが機能する場所を示します。Ctrl ボタンを押してマウスボタンを押すと、ブラシの領域にフォーリッジが追加されます。Ctrl+Shift ボタンによって、フォーリッジが消去されます。

メッシュをペイントする場合、エンジンは、視線に平行に多数のライントラックを球体内部で実行します。つまり、球体内部に見えるサーフェスはどこもフォーリッジ インスタンスの潜在的なターゲットになり得るということになります。

消去する際は、消去の候補となるインスタンスが、球体内部のすべてのインスタンスからランダムに選択されます。

Mesh リスト内の選択されたメッシュ

メッシュを選択 / 非選択するには、[Mesh] リスト内でメッシュをクリックします。(オレンジが選択されている状態です)。エディタビューポート内でペイントする場合、選択されたメッシュだけが影響を受けます。レベル内にすでにある他の静的メッシュのフォーリッジインスタンスは、まったく影響を受けません。また、[Mesh] リストで選択されていないアイテムのインスタンスは、レベルに追加されません。

次は、2 個のメッシュが選択されている例です。SBananaPlant_01 というメッシュは、選択されていないため、ペイントされたりレベルから消去されたりすることはありません。

FoliageWindowTwoSelected.png

ブラシの設定項目

  • Brush Size (ブラシのサイズ) は、Unreal 単位によるブラシのサイズです。
  • Paint Density (ペイント密度) は、Ctrl ボタンを使用しながらインスタンスを追加する際の、目標密度です。
    • この値の範囲は、0 から 1 までです。値が 1 の場合は、各メッシュの Meshu Properties (メッシュプロパティ [下記参照]) にある最大密度で、メッシュインスタンスをペイントします。
    • ブラシ内にあるメッシュの密度がすでにこの値を超えている場合は、メッシュがまったく追加されません。
  • Erase Density (消去密度) は、Ctrl+Shift ボタンを使いながらインスタンスを消去する際に達成すべき目標密度です。
    • この値の範囲は 0 から 1 までです。値が 0 の場合は、メッシュがまったく表現されません。この目標となる消去密度よりもメッシュが少ない場合は、メッシュがそれ以上消去されることはありません。
    • この設定項目によって、すべてのインスタンスを完全に除去することなく、すでにペイントされているメッシュを間引くことができます。
  • Filter (フィルタ) によって、どのような種類のオブジェクト上にインスタンスを配置するか制御できます。
    • フィルタタイプに適合しないオブジェクト上では、フォーリッジ球体ブラシが消えるため、ご注意ください。
    • また、アクティブなストリーミングレベルのオブジェクト上でしかペイントできませんので、ご注意ください。

また、タブレットの圧力感受性がサポートされています。ペンの圧力によって、追加 / 削除されるフォーリッジ メッシュ インスタンスの数を制御することができます。(これは、他のパラメータがすべて考慮された上で実行されます)。

Paint Settings (ペイントの設定項目)

リスト内にある各メッシュにはプロパティが多数あり、ペイント時に、当該メッシュのためにインスタンスをどのように配置するかを制御することができます。プロパティにアクセスするには、中央のペイントブラシのアイコンをクリックします。

Paint Settings Mode

プロパティ 説明
Density (密度) / 1Kuu² 当該メッシュのために、1000x1000 Unreal 単位の面積につき配置されるインスタンス数です。
| Radius (半径) | 当該メッシュのインスタンス間の最短距離です。(2011年10月以前のビルドでは、この設定項目が正しく機能しませんでした)。
Align to Normal (法線に合わせる) フォーリッジメッシュを垂直の方向に向けるか、あるいは、フォーリッジメッシュが配置されるサーフェスの方向に従うかを決めます。
Max Angle (最大角度) ゼロ以外の場合、法線に合わせる場合に従うべき最大角度を指定します。たとえば、グラウンドが 30° のスロープになっていて、Max Angle を 10° にセットした場合、フォーリッジは、グラウンドの方向に従おうとしますが、垂直線に対して 10° の角度で置かれます。インスタンスを 5° のサーフェスに配置すると、その角度が 10° よりも小さいため、フォーリッジは 5° のスロープに合うように方向づけられます。
Uniform Scale (一様なスケーリング) インスタンスの X および Y、Z のスケールを個別にスケーリングするか否かを決めます。
Scale Min/Max (スケール最小 / 最大) スケールの最小 / 最大範囲からランダムに選択してインスタンスをスケーリングします。
Random Pitch (ランダムピッチ) ± 角度を指定し、最大でその角度 ± の変化を加えます。これによって、インスタンスのすべてが同一の方向に向かないようにすることができます。
Ground Slope (グラウンドスロープ) ゼロ以外の場合、ペイントする際に下にあるサーフェスがこの角度よりも急であるならば、フォーリッジインスタンスが配置されません。値がマイナスの場合は、指定角度よりも急なサーフェス上でのみフォーリッジインスタンスが配置されます。
Height Min/Max (高さ 最小 / 最大) これが指定されると、ワールド空間の Z (高さ) 値がこの範囲から外れる場合に、インスタンスが適用されなくなります。
Landscape Layer (ランドスケープ レイヤー) これが入力されていると、他のすべてのパラメータが適用された上で、フォーリッジインスタンスが指定されたランドスケープ レイヤーの密度に応じてペイントされます。

Reapply Tool (最適用ツール)


Reapply Tool

最適用ツールを使用すると、ワールド内に配置済みのインスタンスのパラメータを選んで変更することができます。

Reapply Settings

使用できる設定項目は、Paint Tool の場合とよく似ていますが、左側にチェックボックスが追加されています。これは、最適用するパラメータを選択するためのものです。

Reapply Checkboxes

チェックボックスにチェックを入れると、既存のインスタンスの上をブラシでペイントしながら、そのチェックボックスに対応するパラメータを最適用することができます。ほとんどの設定項目は、Paint Tool の場合と同様に使用できますが、相違点もいくつかあります。

Density Adjust (密度調整) 既存のインスタンスのための密度乗数です。スライダーを 2.0 にセットすると、特定のエリアにあるインスタンスの数が 2 倍になります。値を 0.5 にすると、インスタンスのうちの 50% しかペイント後に残らないことになります。
Ground Slope グラウンドのスロープ基準に適合しないインスタンスを削除します。新たなインスタンスは追加されません。
Height Min/Max 高度範囲基準に適合しないインスタンスを削除します。新たなインスタンスは追加されません。
Landscape Layer 指定したレイヤー密度に合わせてインスタンスを削除します。新たなインスタンスは追加されません。

Selection Tool (選択ツール)

Select Tool

選択ツールが有効になっている場合は、個々のインスタンスをクリックすることによって選択が可能になります。Control キーを押下しながらクリックすることに、複数の選択が可能です。インスタンスの選択が完了すると、豊富なアクションを使用することができます。

動作 結果
ウィジェットの軸をドラッグする 選択されているインスタンスが、ウィジェットのモードに応じて、ウィジェットに従って動いたり、回転したり、スケーリングしたりします。
| Alt キーを押下しながらウィジェットの軸をドラッグする | 選択されているインスタンスがまず複製され、さらに、ウィジェットに従って動きます。 | Dlete キー | 選択されているインスタンスが削除されます。
End キー 選択されているインスタンスが、フロアにスナップしようとします。元々この設定項目が有効な状態で配置されている場合は、インスタンスが法線に平行になります。

Selection Tool

Paint Selection Tool (ペイント選択ツール)

Paint Select Tool

Paint Selection ツールを使用することによって、多数のインスタンスを同時に選択できるようになります。そのためには、Paint Tool でも使用された球体ブラシを使います。通常のメッシュペイントの場合と同様に、メッシュリスト選択とフィルタ設定項目が適用されます。shift キーを押下しながらペイントすると、インスタンスの選択が解除されます。選択が完了すると、通常の Selection Tool に切り替えて、上記に掲載されている動作を実行することができます。

Paint Select Tool

Instance Settings Mode (インスタンス設定モード)


注意 : このモードが追加されたのは、2011年7月の QA ビルドにおいてです。

Instance Settings Mode

プロパティ 説明
Instance Count (インスタンス数) 現在のストリーミングレベル内に現在配置されている当該メッシュのインスタンス数を示します。
Cluster Count (クラスター数) 現在のストリーミングレベル内にある当該メッシュのインスタンスをレンダリングするために使用するクラスターの個数を示します。インスタンスのグループが単一の描画コール (クラスター) でレンダリングされることによって、レンダリングの効率が向上します。クラスターへの割り当ては、自動的に決まります。クラスター内にすでに存在するインスタンスの個数、および、ワールド空間内にあるクラスタの半径に基づいて決まります。次の 2 つのパラメータによって調節することができます。
Instances Per Cluster (クラスター毎のインスタンス) クラスター毎に含まれるインスタンスの最大数を設定します。なお、単一のクラスター内にあるすべてのインスタンスは、単一の描画コールでレンダリングされ、トライアングルの総数は、クラスター毎のインスタンスによって乗じられたメッシュ毎のポリゴン数と等しくなります。理想の個数は、メッシュのポリゴン数に依存します。
Cluster Radius (クラスター半径) クラスターの最大サイズです。これを超えると、インスタンスが新たなクラスターに割り当てられます。この数値を減らすと、クラスの数が増えます。ただし、クラスターのバウンディングボックスが小さくなるため、オクルージョンが向上します。
Cull Distance Start (カリング距離始点) インスタンスがフェードアウトし始める距離です。(ワールド単位)。なお、これはマテリアルで設定する必要があります。以下のカリングのセクションを参照してください。
Cull Distance End (カリング距離終点) インスタンスが完全にカリングされる距離です。(ワールド単位)。個々のインスタンスがフェードされるようにマテリアルが設定されていない場合は、クラスター全体が一遍に消滅したり再表示されたりします。以下のカリングのセクションを参照してください。

カリング


注意 : この機能が追加されたのは、2011年8月の QA ビルドにおいてです。

フォーリッジインスタンスがクラスターとして単一の描画コールでレンダリングされるため、各クラスターは、オクルージョンに基づいてレンダリングの可否が決定されます。 Cull Distance End (カリング距離終点) パラメータの値がセットされていると、この距離を超えてもクラスターがカリングされます。ただし、クラスター全体が範囲外になると、メッシュのグループが突然消滅してしまうことになります。

この現象を緩和するには、 Cull Distance Start (カリング距離始点) パラメータを追加し、マテリアルを適切に設定します。頂点シェーダーにおいて、インスタンス毎の係数が計算されます。係数は、距離の始点で 1.0 から始まり、終点で 0.0 となります。この係数は、Vertex Color (頂点カラー) マテリアルノードのアルファチャンネルで、マテリアルに渡されます。この係数をオパシティまたはマスクの値と接続することによって、インスタンスが Cull Distance End (カリング距離終点) に達する前にフェードアウトさせ、レンダリングから除外できます。

次のサンプルマテリアルでは、フェード係数によってマテリアルのマスクが乗じられています。その結果、フォーリッジメッシュの葉が、完全に消えるまで間引かれていきます。

Culling Material Example

マテリアルと頂点アニメーション

風のシミュレーション効果を出すといった頂点アニメーションは、InteractiveFoliageActorJPで説明したように適切なマテリアルの使用によって可能となります。フォーリッジのインスタンス化を正確に実行するにはマテリアルを多少変更する必要があります。Object World Positionマテリアルノードで、各インスタンスの位置というよりは、ユーザーレベルのInstancedFoliageActorの位置がわかります。 Object World Positonを使わずにTransform Positionノードを使用することによって、ローカルからワールドスペースへconstant 4-vector(0、0、0、1)の変換が可能となります。これによって各インスタンスのワールド座標の位置がわかります。 

静的メッシュの設定


フォーリッジの編集に静的メッシュを使用する際に、Static Mesh Editor(静的メッシュエディタ)におけるいくつかの設定があります。まず、静的メッシュの bUsedForInstancing が有効化されていなくてはいけません。そして静的メッシュは、Elements配列へのエントリがひとつのみであることを確認してください(LODImfo配下でみれます)。

LOD


2011年10月のビルドから、静的メッシュ LOD が Foliage でサポートされています。以下は、注意事項です。

  • マテリアル上で Screen Door Fading (スクリーンドア フェーディング) を有効にすることが推奨されています。
  • すべての LOD レベル間で光源とシャドウマップが共有されているため、全 LOD で同一のアンラッピングが使用される必要があります。
  • 現在のところ、インスタンスの全クラスタが、LOD を同時に変更します。将来、インスタンスごとに距離ベースのフェーディングをサポートする可能性があります。

光源処理


各メッシュインスタンスは、それ自身のシャドウまたはライトマップ (またはその両方) が Lightmass によって生成されます。これらは、事前計算された各バッチについて、ともにタイリングされます。事前計算された光源処理がインスタンス化されたフォーリッジについて適切に機能するためには、静的メッシュ上でいくつかの設定項目をチェックしなければなりません。インスタンス化されたメッシュのためにシャドウマップを生成する場合、Lightmass はより厳格です。不適切な設定を行うと、光源処理を再ビルドした後にメッシュが黒くなる場合があります。

  • Light Map Coordinate Index (ライトマップ座標インデックス) - ユニークな UV ラッピングを有する有効な UV チャンネルにセットされなければなりません。静的メッシュエディタの Generate Unique UVs (ユニークな UV を生成する) 機能を使用すると、ユニークなラッピングをすばやく作成することができます。
  • Lightmap Resolution (ライトマップ解像度) - この値を充分に小さくすることによって、(デフォルトでは 100 である) 単一のクラスター内にあるインスタンスのための全シャドウマップが、最大テクスチャ解像度 (4094x4096) を超えることなくタイリングされるようにしなければなりません。

2012年4月以前のエンジンは、フォーリッジモードのシャドウマップとライトマップアロケーションにバグが存在しました。バグが原因で、完全に影となっているインスタンスに光沢が出たり、影のないインスタンスに影が生じる不具合が生じていました。このバグは2012年4月バージョンで修正され、同時にライトマップの最大解像度を超えると表示される、ユーザーへの警告が追加されました。