PCG Biome Core と PCG Biome Sample プラグインは、属性セット テーブル、フィードバック ループ、再帰的サブグラフ、実行時の階層生成 などの PCG フレームワーク 機能の使用例を示します。
リファレンス
用語集
ツールおよびこのドキュメントで使用される用語とその定義を示します。
| 用語 | 定義 |
|---|---|
| Biome Core | 体系的なアプローチで構築されたデータ駆動型のバイオーム作成ツールで、カスタマイズ可能なステップを含む、論理的なセクションに整理された固定のパイプラインを提供します。PCG Biome Core プラグインには、バイオームをプロシージャル生成するために使用される PCG グラフとサブグラフのコレクションが含まれます。 |
| Biome Sample | PCG Biome Sample プラグインには、Biome Core を使用したバイオームのプロシージャル生成方法を示すレベル、データ アセット、カスタム PCG グラフが含まれます。 |
| バイオーム アクタ | Biome Core で使用可能なブループリント アクタで、ワールド内にバイオームを設定するために使用します。これには、バイオーム ボリューム/スプラインおよびバイオーム セットアップ アクタが含まれます。 |
| バイオーム | バイオーム定義とバイオーム アセットのリストで定義された空間内のボリューム。 |
| ジェネレータ | タイプ、優先順位、ジェネレータ グラフ プロパティを保持するデータ アセットで、バイオーム アセット エントリにより参照されます。 |
| ジェネレータ グラフ | ワールド内にアセットを配置するために使用されるルート ポイントを生成する PCG グラフ。 |
| バイオーム アセット | アセット プロパティを含むデータ アセットで、Biome Core によりスポーンされます。 |
| バイオーム キャッシュ | ワールド内のバイオームを格納するために使用される 3D ポイント グリッド構造体。 |
| フィルタ | フィルタ グラフのリスト。 |
| フィルタ グラフ | ポイントを処理し、ロジックまたはテクスチャ投影から定義されたフィルタ属性に書き込む PCG グラフ。 |
| トランスフォーム グラフ | ジェネレータから生成されたポイントまたは親からトランスフォームされたポイントを入力として使用してプロパティを変更する PCG グラフ。子ポイントの生成と配置に使用されます。 |
| 投入済みデータ | Biome Core の異なるステージでポイントを除外または追加するために投入される外部データ。パイプライン内のエントリ ポイントに基づいて異なるタイプ (除外、型指定、特定、カスタム バイオーム データ) に分類されています。 |
| パーティション化 | ボリュームと処理をグリッドに細分化してローカル更新をスピードアップし、出力を個別にストリーミング可能な個別のアクタに分割します。 |
| 階層生成 | ボリュームと処理をサイズが異なる複数のグリッドに細分化します。それらに対して PCG グラフの部分が実行されます。階層生成は、計算を異なるグリッド サイズで分散することによりローカル更新をスピードアップし、データをそれぞれストリーミング可能な個別のアクタに出力します。詳細については、「PCG 生成モードを使用する」を参照してください。 |
| 実行時の階層生成 | PCG グラフで構成された各グリッド サイズの生成半径を使用し、ストリーミング ソースまたは PCG 生成ソースに基づいて実行時のグリッド セルを生成します。階層生成と同じマルチレベル グリッド サイズ アプローチを使用します。詳細については、「PCG 生成モードを使用する」を参照してください。 |
| Biome Core Runtime | Biome Core Runtime は、カメラの周りに詳細なアセットをランタイム生成するために使用される個別の PCG コンポーネントとグラフです。 |
| ランタイム アセット | Biome Core Runtime によってスポーンされるアセットのプロパティを含むデータ アセット。 |
| アセンブリ | [Asset Action アセット アクション)] > [Create PCG Assets from Level(s) (レベルから PCG アセットを作成)] を使用して、1 つのレベルのあるすべてのスタティックメッシュとインスタンス化されたスタティックメッシュから作成およびエクスポートされた PCG データ アセット (PCG ポイント データ)。 |
| アセット オプション | アセット オプションは、個別の構造体から作成されたプロパティのサブカテゴリです。デフォルトのアセット オプションは、[Debug Options (デバッグ オプション)]、[Asset Options (アセット オプション)]、[Mesh Options (メッシュ オプション)]、[Assembly Options (アセンブリ オプション)]、[Filter Options (フィルタ オプション)]、[Runtime Options (ランタイム オプション)] です。 |
| グローバル パラメータ | グローバル動作に影響する Biome Core グラフのパラメータ。フィルタ グラフ、デバッグ キャッシュ表示、バイオーム ブレンド範囲、およびオプションのバイオーム マップ投影が含まれます。 |
| ルート ポイント | ジェネレータおよびそのグラフによって供給されるすべてのポイント。 |
| 子ポイント | 子アセットをスポーンするために再帰的トランスフォーム ステップで作成されたすべてのポイント。 |
BiomeCore グラフの概要
BiomeCore グラフは、バイオーム作成ツールの中枢部であり、PCG フレームワークを使用してすべての処理が実行される部分です。
主な処理ステップは次のとおりです。
-
すべてのバイオーム アクタおよびオプションのバイオーム テクスチャ投影からバイオーム キャッシュが計算されます。
-
ワールド内でバイオーム アセットにより参照されるジェネレータ グラフが処理されてバイオーム キャッシュで境界が設定され、使用されるジェネレータごとに固有のルート ポイントが生成されます。
-
バイオームが生成されたルート ポイントに適用されます。ワールド内のすべてのバイオームに含まれるすべてのアセットから、ルート アセット テーブルが構築されます。バイオーム、ジェネレータ タイプ、サブタイプ、重み付けに基づいて、ルート アセット テーブル属性が各ポイントに割り当てられます。
-
このステップでは、各ジェネレータ ルート ポイント データ セット間で優先順位に基づく差分が実行されます。ジェネレータの優先順位プロパティによって処理の順序が決定されます。この処理はオプションでバイパスできます。
-
Biome Core アクタのルート ポイント フィルタ グローバル パラメータにより提供される PCG グラフを使用してフィルタが適用されます。テンプレートのバイオーム アセット クラスには、アセット エントリごとにフィルタリング動作を制御するオプションがあり、必要に応じて拡張できます。
-
トランスフォーム グラフと子アセット参照を使用して、アセットごとに再帰的トランスフォームが適用されます。このアセット参照の階層を使用して、各ルート ポイントに子ポイント データを作成し、最大深度グローバル パラメータで制限できます。
-
スタティックメッシュとアクタがスポーンされます。プロパティのオーバーライド、アセンブリ、コリジョン プリセットのサポートが含まれます。
-
Biome Core Runtime への出力データは、グローバル パラメータで有効にできます。ランタイム ジェネレータで使用されるとマークされたすべてのアセットがエクスポートされます。オプションでメッシュをオフラインでサンプリングすることで、最小コストで Biome Core Runtime にポイントを供給することも可能です。
全般的な概念
バイオーム キャッシュ
バイオーム キャッシュ は、バイオーム定義データをワールドに空間的に保存するために使用される PCG ポイントのグリッドです。
-
バイオーム ボリューム、バイオーム スプライン、およびバイオーム テクスチャにはバイオーム定義の色が関連付けられており、ワールド空間で各バイオームが識別するために、その色がこの 3D グリッドに投影および保存されます。
-
バイオーム キャッシュは 3D 構造体であるため、垂直方向がサポートされており、バイオーム同士のスタッキングや地下洞窟などが可能です。背の高いカラムのようなポイントを指定することにより 2D も可能です。
-
キャッシュの解像度は、Biome Core PCG コンポーネントの [Biome Cache Cell Size (バイオーム キャッシュ セル サイズ)] ベクター パラメータで制御します。
-
キャッシュ内の各ポイントは、一度に 1 つのバイオームのカラー値のみを保存できます。
-
バイオームの優先順位付け (バイオームがオーバーラップした場合にどのバイオームを表示するか) は、バイオーム キャッシュにバイオームの色を保存するときに行われます。
-
キャッシュは Biome Core アクタの境界から初期化され、ランドスケープが見つかると、最適化のためそのサーフェスを使用してグリッドからセルを削除します。
* ボリュームとスプラインは、ランドスケープなしでワールドのバイオームを定義できます。この場合、ジェネレータは World Ray Hit Query を使用してジオメトリをサンプリングする必要があります。
* ランドスケープが存在する場合は、オプションでバイオーム テクスチャをキャッシュに投影できます。
-
ジェネレータ グラフのサーフェス サンプラを使用してポイントを生成する場合、ランドスケープやワールドのバイオームがジェネレータを使用していない部分のサーフェスがサンプリングされないようにするため、バイオーム キャッシュが バウンディング形状 として使用されます。
-
最後に、ルート アセット テーブルからのバイオーム アセットをジェネレータ グラフにより生成されたポイントに一致させる前に、キャッシュを使用してバイオームが解決されます。
ルート アセット テーブル
ルート アセット は、アセット階層の最上位にあります。バイオーム セットアップ、ボリューム、またはスプラインに割り当てられたデータ アセットにより提供され、ジェネレータ、メッシュ、トランスフォーム、境界、レンダリング、コリジョン オプションなどのプロパティが含まれます。
これらのアセット プロパティは、ルート アセット テーブル と呼ばれる PCG 属性セット テーブルに保存されます。テーブルの各エントリは、固有の AssetID 属性で識別されます。
ジェネレータ グラフで生成されたポイントにバイオーム キャッシュからのバイオームが割り当てられると、ルート アセット テーブルのエントリに対応する AssetID 属性が割り当てられます。
アセットからのすべてのプロパティを生成された各ポイントに直接割り当てる代わりに、このルート アセット テーブル セットアップを使用することでポイント属性レイアウトを簡素化および最適化しています。ポイントに AssetID が割り当てられると、これが必要な唯一の属性となります。他の属性も、必要に応じてルート アセット テーブルから簡単にアクセスできます。
ジェネレータ
ジェネレータはルート ポイントを供給するもので、システムを機能させるために必須です。
バイオーム ジェネレータ データ アセット は、固有の名前識別子である ジェネレータ タイプ、Biome Core がバイオーム アセットが割り当てられるポイントを出力するために実行する ジェネレータ グラフ、および ジェネレータ優先順位 を指定する必要があります。
ジェネレータ グラフ は、あらゆるニーズに応じたカスタム ロジックで構築されたスタンドアローンの PCG グラフで、その機能はポイントを生成することです。ジェネレータ グラフの PCG グラフ インスタンスが完全にサポートされており、これを使用してグラフ パラメータから簡単にカスタマイズできるため、同様のケースにそれぞれ新規カスタム グラフを構築する必要はありません。「/Script/PCG.PCGGraph'/PCGBiomeCore/BiomeGenerators/Graphs/BiomeGenerator_Template.BiomeGenerator_Template'」にある BiomeGenerator_Template グラフから開始することをお勧めします。
ジェネレータ優先順位 は、レイヤー化に使用されます。これは、複数のジェネレータをレイヤー化する順序を決定する優先順位ベースの差分に影響します。優先順位値が小さい方が優先順位が高くなります。生成されたポイント データ間の優先順位による差分は、アセットが各ポイントに割り当てられた後に算出されるため、これらの差分演算中にメッシュ境界にアクセスできます。優先順位による差分は、BiomeGenerator アセット内で GeneratorAllowOverlap オプションを有効にするとバイパスできます。
各 バイオーム アセット エントリには、ジェネレータへの参照があります。このリンクは、アセットを割り当てるポイント データを定義するために必要です。バイオーム アセットは、ジェネレータ サブタイプにマップすることも可能です。これについては、「高度なセットアップ」セクションで説明します。
次に例を示します。
-
同じソース グラフを共有し、異なるグラフ インスタンス パラメータ値を使用してサンプリングすることで、ランドスケープから木および岩のポイントを生成できます。岩ジェネレータに優先順位 0、木ジェネレータに優先順位 1 を設定すると、木の境界が岩の境界とオーバーラップしたときに木が自動的に削除されます。
-
World Ray Hit Query を使用してジオメトリ サーフェスをサンプリングすると、スタティックメッシュ上の平らな領域に POI アセンブリをスポーンするためのポイントを生成できます。
-
湖または川スプラインの境界の近くにポイントを生成し、それらをランドスケープに再投影できます。
-
バイオームにマッチする Niagara システムやサウンド ボリュームのポイントを作成できます。
バイオームとアセットのマッピング
バイオームは、バイオーム定義とバイオーム アセットから作成されます。バイオームをワールドに存在させるには両方のデータ アセットが必要で、アセットをルート ポイントに割り当てるためにバイオーム ジェネレータが必要です。
バイオーム定義とアセット間のマッピングは、Biome Core の実行時に行われます。ワールド内のバイオーム ボリューム、スプライン、またはセットアップ アクタに含まれる各固有のバイオーム定義に対して、同じバイオーム定義を共有するすべてのアクタで参照されるすべてのバイオーム アセットのリストが収集され、処理中に特定のバイオームに関連付けられます。
ルート アセット テーブルがすべてのバイオーム アセットとそれらが属するバイオームから構築され、それが適切にフィルタリングされて、バイオーム内の生成されたポイントにマップされます。
状況に応じた例をいくつか示します。
-
固有のバイオーム定義と複数のアセットを持つ 1 つのバイオーム ボリュームは、このボリューム固有のバイオームを生成します。
-
同じバイオーム定義だが異なるアセット リストを持つ複数のバイオーム ボリュームとスプラインは、1 つの共通アセット リストを持つ 1 つのバイオームを生成します。
-
1 つのバイオーム セットアップ アクタが固有のバイオーム定義、複数のアセット、および同じバイオーム定義を共有する複数のボリュームまたはスプラインを持つ場合、構成の 1 つのグローバル ソースを提供するためバイオーム セットアップ クラスが作成されます。これは、1 つのセットアップ アクタを使用して、そのバイオーム定義の参照を他のバイオーム ボリュームまたはスプラインに追加するだけでバイオームを構築できるということです。オプションのバイオーム テクスチャ投影を使用する場合、バイオーム テクスチャの色ごとにバイオーム セットアップ アクタが必要です。
BiomeSampleLevel では、ConiferousForest BP_PCGBiomeSetup アクタを使用して ConiferousForest バイオーム (青) をグローバルに定義しています。そのレベルの BP_PCGBiomeVolume は同じバイオーム定義を参照し、使用される BiomeMap テクスチャ (オプション) には同じバイオームの色の大きなセクションがあります。どちらの場合でも BiomeSetup にアセット リストが含まれ、どちらの入力でも ConiferousForest バイオームが生成されます。
プロジェクトの構成済みバイオーム セットアップ、ボリューム、およびスプラインの子ブループリント クラスを作成でき、それが推奨されます。これにより、同じワールド内または複数のワールド間でバイオームをすばやく簡単に再利用でき、またコンテンツをグローバルに調整することも簡単になります。
優先順位ベースの差分
ジェネレータは個別に処理され、その出力 (ルート ポイント) はジェネレータ優先順位値 (ジェネレータ アセット内で設定) を使用してレイヤー化できます。レイヤー化は、BiomeCoreDifferenceByPriority フィードバック ループ内で各ポイント データが処理されたときに行われます。重要度が最も高いもの (ジェネレータ優先順位値が最小) から最も低いもの (ジェネレータ優先順位値が最大) の順に並べられます。
フィードバック ループ グラフ内では、現在のイテレーションの受信データと前のイテレーションからの残りのポイントにバイナリ差分が順次適用されます。ループが完了すると、ジェネレータの優先順位値が同一でなく、GeneratorAllowOverlap オプションが有効でなければ、オーバーラップするポイントはありません。入力ポイントの境界は割り当てられたアセット メッシュ/アセンブリの境界に一致し、より適切な制御のためアセット オプション内でオーバーライドできます。
ジェネレータ優先順位の高い岩 (赤) とのレイヤー化により、オーバーラップする木は削除されます。
GeneratorAllowOverlap オプションを使用してレイヤー化をバイパスすると、岩と木がオーバーラップします。
フィルタリング
優先順位ベースの差分によるレイヤー化に加え、完全にカスタマイズ可能なコンピュート グラフまたはテクスチャ投影のリストからルート ポイントおよび子ポイントの両方をフィルタリングできます。デフォルトでは、Biome Core アクタは Height、Density、Water Distance フィルタで構成されます。バイオーム アセット フィルタ オプションには、これらの各デフォルト フィルタに公開される範囲があります。
Density フィルタは、ジェネレータから設定された密度に基づいて、ポイントの $Density プロパティでグラフをトランスフォームまたはフィルタリングします。これは、$Density に書き込むどの計算でも使用できることを意味します。Height フィルタはポイントの $Position.z プロパティを使用し、Water Distance フィルタは定義された水位またはそれより下のポイントと残りのポイントの距離を使用します。
Biome Core のルート ポイントと子ポイントのフィルタリング ステップでは、動的グラフ機能が使用されます。この機能では、柔軟性を向上するため、実行されるグラフを動的サブグラフの配列でパラメータ化できます。フィルタ配列の定義方法、フィルタ グラフの作成方法、フィルタ オプション構造体のカスタマイズ方法の詳細については、「フィルタ」を参照してください。
Biome Sample の例には、追加のテクスチャ投影フィルタとカスタム フィルタ オプションが設定されています。2 つのテクスチャ、Flow と Sun Exposure が提供されており、どちらも 2D テクスチャ配列で、タイルごとに投影され、各アセット内で設定されたそれぞれの最小値/最大値でフィルタリングされます。
フロー マップ投影のデバッグ表示。
フロー マップ投影からの 0~0.33 でアセットをフィルタリング。
フロー マップ投影からの 0~0.66 でアセットをフィルタリング。
再帰とトランスフォーム
BiomeCore_ChildTransformLoop サブグラフからそれ自体を呼び出した場合のスクリーンショット。
Biome Core では、ルート アセットに子アセットを含めることができます。子アセット は親と同じアセット タイプを共有し、それ自体にも子アセットを含めてアセットの階層を構成できます。ルート アセットとは異なり、子アセットの生成には ジェネレータ グラフ は使用されません。親アセットのポイントが入力として使用され、トランスフォーム グラフを使用して最終ポイントが生成されます。
ルート アセットを含む全階層レベルのすべてのアセットでは、トランスフォーム グラフを実行した入力ポイントの変更がサポートされています。
トランスフォーム グラフはアセットに割り当てられた単純な PCG グラフで、ルート アセットのジェネレータ グラフから生成された親のポイント データ、または親アセットのトランスフォーム グラフ出力からのポイント データを入力として使用します。
入力ポイントから開始して、複製、ポイントのコピー、ポイントのサンプリングと投影など、PCG フレームワークで提供されるすべての操作を実行できます。これは、子アセットを配置する際に特に便利です。
階層にあるすべての子アセットを配置するには、UE 5.4 の PCG の新機能である 再帰的サブグラフ を使用できます。そのプロセスは次のとおりです。
任意のポイントのセットに対して、アセットごとに次の操作を実行します。
-
ポイントのセットに対してトランスフォーム グラフを実行し、その位置 (子の配置パターン) を複製または変更します
-
スケール/境界を適用します
-
セルフ プルーニングを適用します (オプション)
-
最終アセットスポーン用に Mesh/Material/MeshPropertyOverrides/Assembly/Actor 属性を割り当てます
-
スポーン用にポイントを出力します
-
現在のアセットから潜在的な子アセットを解決します
-
生成されたポイントと子アセットを同じサブグラフに入力します。ここで再帰が行われます。このプロセスは、子アセットまたは入力/親ポイントがなくなるまで、または BiomeCore PCG グラフの [Max Child Assets Depth (最大子アセット深度)] プロパティに達するまで無限に実行されます。
再帰的生成のパフォーマンスを制御するため、子ポイントを生成できる親ポイントの数を制限できます。この制限は、Biome Core グラフの [Child Input Points Rate Multiplier (子入力ポイント レート乗数)] プロパティで制御します。
アセットは、同じ再帰レベルで複数の子アセットを生成できることに注意してください。同じ親を共有している場合、子アセットの分布はウェイト プロパティを使用して重み付されます。
スポーン
ポイントの最終トランスフォームとメッシュ/アクタ/アセンブリ属性が得られたら、アクタおよびメッシュのスポーン ステップを実行できます。
スポーン ステップは比較的シンプルで、次の 3 つのメソッドを非排他的に使用できます
-
アクタ をスポーンする場合、スポーンするアクタ クラスを示す SoftClassPath ポイント属性を使用して、アクタが各ポイントに対してスポーンされます。
-
スタティックメッシュ の場合、メッシュの SoftObjectPath 属性を使用して、ISM コンポーネントを使用して各ポイントでスポーンされるメッシュが指定されます。ポイントごとにさまざまな StaticMesh コンポーネント プロパティを適用するため、プロパティ オーバーライドのリストもサポートされています。
-
bUseDefaultCollision
-
bCastShadow
-
bCastHiddenShadow
-
DetailMode
-
InstanceStartCullDistance and InstanceEndCullDistance
-
WorldPositionOffsetDisableDistance
-
bIncludeInHLOD
-
bVisible
-
bAffectDistanceFieldLighting
-
-
アセンブリまたは PCG データ アセット (事前生成された PCG ポイント クラウドとメッシュ属性を 1 つのアセットとしてスポーン) のスポーンには、アセンブリ インスタンサー のスポーン パスが使用されます。通常のスタティックメッシュ スポナー出力を処理する前に PCG データ アセットのポイント クラウドを最終位置にコピーするため、ポイントのコピー ステップが追加で必要です。このアセンブリ スポーン パスを使用する場合、スタティックメッシュ プロパティのオーバーライドはサポートされていません。
Biome Core Runtime への出力
ランタイム生成への出力 は、Biome Core グラフからデータを出力するオプションのステップで、BiomeCoreRuntime グラフによってカメラの周りでの詳細なランタイム生成に使用されます。
この機能は、PCG の グラフからグラフ への通信機能を示し、次のように説明されます。
-
グラフからの PCG データは、Output ノードを使用してシリアル化されて BiomeCore PCG コンポーネントに配置されます。
-
このデータには、他のグラフから Get PCG Component Data ノードを使用してアクセスできます。
-
BiomeCoreRuntime の場合、BiomeCore グラフ/コンポーネントからのデータは、BiomeCoreRuntime が実行されたときにランタイム時にアクセスされます。
-
複数の名前付きピンを使用して、グラフで複数のデータ セットを同時にエクスポートおよびシリアル化できます。Get PCG Component Data ノードを使用して異なるグラフからデータにアクセスする場合は、ピン名がデータを供給するグラフの出力ピン名に一致した想定ピンの配列を指定する必要があります。
複数のピンを使用して BiomeCore からエクスポートされたデータ。
BiomeCoreRuntime 内の対応する Get PCG Component Data ノード。
BiomeCoreRuntime の主な機能は次のとおりです。
-
ランタイム サンプリングを使用してランドスケープにポイントをスポーンする
-
BiomeCore でスポーンされたメッシュ上にポイントをスポーンする
-
BiomeCore ポイントを影響として使用して、ランタイム生成ポイントを引き付けるか遠ざける
これらの機能をサポートするため、BiomeCore_PrepareRuntimeData サブグラフを使用して、BiomeCore が実行されるたびに 4 つの個別のポイント データ セットが事前に計算されます。
-
BiomePoint は BiomeCache からのポイントで、そのポイントで最終アセット ポイント位置とバイオームの色を使用してバイオーム キャッシュが更新され、バイオームのブレンド ジッター プロセスが考慮されます。BiomeCoreRuntime は、キャッシュを使用してバイオーム情報を解決し、スポーンするアセットを決定します。
-
InfluencePoint は影響として機能する BiomeCore からのポイントで、BiomeAsset の RuntimeOptions セクションにある InfluenceType プロパティを使用します
-
インスタンス ポイントは、ランタイムの詳細を受信するメッシュのターゲット位置として使用されます
-
メッシュ ポイントは、メッシュ サンプラ プロセスを使用してローカル空間に生成されます。このプロセスは、BiomeAsset の RuntimeOptions セクションの ExportPoints プロパティを使用します。
バイオーム ブレンド前の BiomeCache。
バイオーム ブレンド後の BiomeCache。
このデータを使用した詳細アセットのランタイム生成については、「BiomeCore Runtime」セクションに説明されています。
PCG フレームワークのランタイム階層生成機能の詳細については、「実行時の階層生成」を参照してください。
投入済みデータ
Biome Core の投入済みデータは、手動制御、半手動制御、より芸術的な制御を追加するために、異なる主要な手順でシステムに送信される外部データです。投入済みデータ型には主に、除外、型指定、特定、および カスタムバイオーム データの 4 つがあります。すべての投入済みデータ入力は、BiomeCore PCG グラフの青いコメント ボックスに含まれます。すべての投入済みデータ型は、事前作成されたブループリント クラスを持ち、拡張可能です。
除外
ボリューム、プリミティブ、またはスプラインからのバイナリ除外は、それらの除外データとオーバーラップする生成ポイントを削除します。POI、建物などの手動配置や、特定のアート/ゲームプレイのニーズに応じてエリアを分離するのに最適です。
除外は、ボリューム、プリミティブ、およびクローズド スプラインに「BiomeExclusion」というタグの付いたコンポーネント、またはオープン スプラインの場合は「BiomePath」というタグの付いたコンポーネントを使用する「PCG_BiomeExclusion」というタグの付いたアクタを検索します。
次に例を示します。
次に示す図では、事前構成済みの BP_PCGBiomeExclusionVolume とスプラインが右下の象限に追加され、領域が空になっています。黄色のオープン スプライン パスは、制御ポイント スケール プロパティに基づいて、スプライン ボリュームに沿って木を削除します。
型指定バイオーム データ
バイオームとアセットをポイントに適用する前に、ジェネレータと並行してパイプラインに投入されるポイントです。
これらの投入済みポイントは、手動で配置された型指定バイオーム データ アクタ (ジェネレータ タイプ プロパティ、PCG コンポーネント、PCG グラフを持つブループリント クラス) から供給され、参照されるジェネレータでマークされたポイントを出力します。これらの投入済みポイントは、ジェネレータからのポイントとして機能し、ジェネレータに割り当てられたアセットがバイオーム アセット リストに含まれている必要があります。複数のバイオーム/アセットで共有ジェネレータ参照を使用すると、型指定ポイント出力上にスポーンする選択されたアセットは、アクタが配置されるバイオームによって異なります。
次に例を示します。
ジェネレータ タイプとして Trees を使用する型指定バイオーム アクタ。この位置にスポーンされる木、選択されるアセットは、バイオーム定義とバイオーム アセットに基づきます。結果スポーンされるメッシュ/アクタは、バイオームによって自動的に選択されます。
BiomeSampleLevel では、型指定バイオーム データが Shared_Trees ジェネレータを参照する場合、砂漠バイオームにサボテン、広葉樹林バイオームに落葉樹、針葉樹バイオームにトウヒを自動的にスポーンできます。
砂漠バイオームのサボテン
広葉樹林バイオームの落葉樹
針葉樹バイオームのトウヒ
特定バイオーム データ
バイオームとアセットの適用後、再帰的トランスフォームとスポーンの前に、他のポイントとともにパイプラインに投入されるポイント。これらのポイントは、特定バイオーム データ アクタ (アセット変数、PCG コンポーネント、PCG グラフを持つブループリント クラス) のアセット セットで定義され、それらが表す特定のアセットでマークされたポイントを出力します。
特定バイオーム データ アクタを使用する利点は、PCG グラフから特定のロジックを使用してスポーンするアセットを正確に制御できること、最適化された ISM の Biome Core からのデータ アセット構造体、トランスフォーム グラフ、フィルタリング、スポーンをトランスフォームを活用できることで、ランタイム バイオーム コアに送信することも可能です。
次に例を示します。
特定アクタが BirchTree01 アセットを使用して設定されています。完全に一致する BirchTree01 メッシュと再帰的子アセットは、どのバイオームのどこに配置されていても、このポイントにスポーンされます。
BiomeSampleLevel には、1 つの木アセットをスポーンする 1 つの特定アクタと、農地ジェネレータ アクタの 2 つの例が含まれています。農地ジェネレータ アクタには、スプラインと投影を使用する独自のカスタム PCG グラフ ロジックと、出力ポイントに割り当てられ、Biome Core によりトランスフォーム、フィルタリング、スポーンされるアセット参照の独自のセットが指定されています。これは個別のツールで、その出力は Core システムにより収集され、処理されます。
カスタム バイオーム データ
カスタム バイオーム データは独立しており、独自の独立したカスタム ロジックと出力を持ちます。そのポイント データ出力は、パイプラインの最後、スポーンの前に投入され、Biome Core Runtime に出力されます。完全にカスタイズでき、スタンドアローンであるため、メッシュをスポーンするなどアーティファクトを生成することがありますが、データが Biome Core に出力されるため、グローバル スポーンを活用できます。また、Biome Core に関連しない他のグラフ用のデータも出力できます。ポイントをスポーンするために出力を Biome Core に渡す際は、ポイントにスポーンに必要な属性 (主に「Mesh」ソフト オブジェクト パス) が必要です。
次に例を示します。
-
カスタム洞窟ツールは、PCG グラフ ロジック、ブループリント、および変数のセットから構築されています。洞窟アクタには、独自のトリガー ボックス、ゲームプレイ アクタ、およびスポナーが含まれている必要がありますが、すべてのメッシュを Biome Core でスポーンできます。
-
手動で作成されたキャビンを含むレベル インスタンス アクタは、メッシュのセットから環境を生成し、Biome Core からアクタがスポーンされるため、バイオームの除外データでもあり、カスタム データでもあります。
入力
バイオーム アクタとセットアップ
バイオーム アクタは、Biome Core で使用可能なブループリント クラスで作成され、ワールド内にバイオームをセットアップするために使用されます。これには、バイオーム ボリューム/スプラインおよびバイオーム セットアップ アクタが含まれます。
ブループリント クラスは、次の場所にあります。
/Script/Engine.Blueprint'/PCGBiomeCore/Blueprints/BP_PCGBiomeVolume.BP_PCGBiomeVolume'
/Script/Engine.Blueprint'/PCGBiomeCore/Blueprints/BP_PCGBiomeSpline.BP_PCGBiomeSpline'
/Script/Engine.Blueprint'/PCGBiomeCore/Blueprints/BP_PCGBiomeSetup.BP_PCGBiomeSetup'
バイオーム ボリュームおよびスプライン
バイオーム ボリュームおよびスプライン アクタは、Biome Core を使い始めるのに最も簡単な方法です。一度セットアップすると、ワールド全体でスケールまたは形状変更 (スプライン)、複製、インスタンス化でき、子ブループリント クラスとしてエクスポートして複数のワールドで再利用しながら、1 つのソース クラスで制御できます。
次にプロパティを示します。
-
アクタのトランスフォームとコンポーネント:アクタのトランスフォーム (位置、回転、スケール) がサポートされます。スプラインの形状はカスタマイズ可能で、新規制御点をワールドに直接追加できます。スプラインはクローズド スプラインにする必要があります。ボリュームの場合、「BiomeVolume」ボックス コリジョン コンポーネントを変更できます。
-
定義:バイオーム定義データ アセットへの参照で、このアクタが表すバイオームを色、名前、優先順位で識別します。各バイオーム ボリューム/スプラインには、バイオーム定義を指定する必要があります。
-
アセット配列:バイオーム アセットへの参照で、このバイオーム内で処理およびスポーンするアセットのリストです。このプロパティは配列であるため、使いやすさと分類のため複数のバイオーム アセットを追加したり、異なるバイオームで同じアセットを共有したりできます。ワールド内にアセット配列がすでに設定された同じ定義を共有する別のバイオーム ボリューム、スプライン、またはセットアップが存在する場合、同じリストを複製する必要はありません。
-
ランタイム アセット:バイオーム アセット データ アセットへの参照で、Biome Core Runtime 生成内でこのバイオームに使用されます。これらはオプションで、Biome Core Runtime を使用する場合にのみ必要です。
-
ZExtents:バイオーム スプライン アクタを使用する場合にバイオームの高さを定義します。値が非常に大きい場合は、このバイオームが BiomeCore ボリュームの高さ全体に 2D で適用され、値が小さい場合は、スプラインをサーフェスに対して調整する必要があります。
バイオーム セットアップ
バイオーム セットアップ アクタは、ワールド内でバイオームをグローバルに定義するために使用します。バイオーム セットアップ (定義 + アセット) のソースと考えると便利で、オプションの BiomeMap テクスチャ投影を使用する場合に必要です。また、子ブループリント クラスにエクスポートして別のワールドで再利用することもでき、信頼できる 1 つのソースを使用して簡単にワールドをセットアップできます。
次にプロパティを示します。
-
定義:バイオーム定義データ アセットへの参照で、このアクタが表すバイオームを色、名前、優先順位で識別します。各バイオーム セットアップにバイオーム定義を割り当てる必要があります。
-
アセット配列:バイオーム データ アセットへの参照で、このバイオーム内で処理およびスポーンするアセットのリストです。このプロパティは配列であるため、使いやすさと分類のため複数のバイオーム アセットを追加したり、異なるバイオームで同じアセットを共有したりできます。バイオーム セットアップはグローバルと考慮することもできるため、バイオーム ボリューム、スプラインを同じバイオーム定義を参照するバイオーム セットアップ アクタと組み合わせる場合は、アセットは必要ありません。
-
ランタイム アセット:バイオーム アセット データ アセットへの参照で、Biome Core Runtime 生成内でこのバイオームに使用されます。これらはオプションで、Biome Core Runtime を使用する場合にのみ必要です。
バイオーム定義
バイオーム定義テンプレートは、BiomeDefinitionTemplate から継承された PrimaryDataAsset クラスです。
BiomeDefinitionTemplate の例と対応する構造体は、次の場所にあります。
/Script/Engine.Blueprint'/PCGBiomeCore/BiomeDefinitions/Setup/BiomeDefinitionTemplate.BiomeDefinitionTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeCore/BiomeDefinitions/Setup/BiomeDefinition.BiomeDefinition'
各バイオーム ボリューム/スプライン/セットアップ アクタでバイオーム定義アセットを参照し、それらが表すタイオームを定義する必要があります。
次にベース BiomeDefinition 構造体のプロパティを示します
-
BiomeName:Biome Core をデバッグおよび検査するときにバイオームを識別します。生成には影響しません。
-
BiomeColor:バイオームを識別し、生成されたポイントをルート アセット テーブルのアセット エントリに一致させる固有の色 (RGB)。バイオームには固有の色が必要です。
-
BiomePriority:バイオーム キャッシュにオーバーラップするバイオームが挿入された場合に使用されるバイオームに特定の優先順位。値が小さい方が優先順位が高くなります。
バイオーム アセットと構造体
BiomeAsset テンプレートは、BiomeAssetBaseTemplate から継承された PrimaryDataAsset クラスです。BiomeCore との互換性のため、BiomeAssetBaseTemplate のサブクラスで BiomeAssets という名前の 構造体の配列 を指定する必要があります。
BiomeAssetBaseTemplate の例と対応する構造体は、次の場所にあります。
/Script/Engine.Blueprint'/PCGBiomeCore/BiomeAssets/Setup/BiomeAssetTemplate.BiomeAssetTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeCore/BiomeAssets/Setup/BiomeAsset.BiomeAsset'
/Script/Engine.Blueprint'/PCGBiomeCore/Runtime/BiomeRuntimeAssetTemplate.BiomeRuntimeAssetTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeCore/Runtime/BiomeRuntimeAsset.BiomeRuntimeAsset'
(BiomeSample プラグイン)
/Script/Engine.Blueprint'/PCGBiomeSample/BiomeAssets/Setup/BiomeSample_BiomeAssetTemplate.BiomeSample_BiomeAssetTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeSample/BiomeAssets/Setup/BiomeSample_BiomeAsset.BiomeSample_BiomeAsset'
BiomeAsset 構造体には通常、プロパティの分類に使用される複数のサブ構造体があります。プロジェクトのニーズに応じて、1 つまたは複数のサブ構造体を共有する、異なるタイプの BiomeAsset テンプレートを簡単に作成できます。
次にベース BiomeAsset 構造体のプロパティを示します。
-
Enabled:アセット配列から削除せずにアセットを無効にします。
-
Weight:共通のジェネレータ グラフを共有するアセットが生成されるポイントに割り当てられる際に、この重みプロパティを使用してアセットが選択される確率に影響を与えます。
-
Generator:BiomeGenerator アセットへの参照で、PCG ポイントを生成する PCG グラフを指定します。
-
GeneratorSubType:(オプション) 使用されるジェネレータ出力を選択するのに使用するジェネレータ サブタイプのコンマ区切りリスト。
-
TransformGraph:(オプション) ジェネレータからのポイントを、アセットをスポーンする前にトランスフォームする PCG グラフへの参照。
-
Mesh:スタティックメッシュ アセットへの参照
-
Assembly:PCG データ アセットへの参照
-
Actor:アクタ クラスへの参照
-
ChildAssets:このアセットの子としてスポーンする BiomeAsset の配列ChildAsset は、そのトランスフォーム グラフを使用して、親との相対位置を生成します。
-
DebugOptions:BiomeAsset_DebugOptions サブ構造体
-
Isolate:True の場合、分離されているアセットのみがスポーンされます
-
ShowBounds:アセットに関連付けられているポイントのワイヤーフレーム境界を描画します。
-
-
AssetOptions:BiomeAsset_AssetOptions サブ構造体
-
OverlapWithChildren:False の場合、現在のアセットがオーバーラップした子アセットを削除するために、ポイントの境界が差分として使用されます。
-
ForceAssetScale:トランスフォーム グラフで適用されるスケールにかかわらず、スケール プロパティをポイントに適用します。スケールをトランスフォーム グラフで制御する場合は、False のままにします。
-
ExtentsMultiplier:デフォルトでは、ポイントの境界は、アセットのメッシュ/アクタ/アセンブリで構成された境界から計算されます。このプロパティは、計算された境界に対する乗数として機能し、他のジェネレータ/子アセットからのポイントとの差分結果と、セルフ プルーニング操作に影響を与えます。木のアセットで樹冠境界が幹に対して大きすぎる場合に便利です。
-
Translation/Rotation/Scale:アクタ/スタティックメッシュ/アセンブリに適用するオフセットで、ピボット配置の補正に使用されます。サイズ/向きが異なるアセットが同じジェネレータを共有している場合に便利です。
-
OrientUpward:ジェネレータから Z アップ(サーフェス サンプル ベースのジェネレータのランドスケープ法線) までアセットの向きを徐々にブレンドします。
-
SelfPrune:生成されたポイントに対して、範囲乗数係数を適用したアセット計算済み境界を使用して、セルフ プルーニング操作を適用し、オーバーラップしたポイントをクリーンアップします。
-
SelfPruningExtentsMultiplier:セルフ プルーニングのみ用にポイント範囲に適用する追加の乗数。アセット境界を使用する他の操作に影響を与えずに、セルフ プルーニング中に使用される境界を制御できます。
-
-
MeshOptions:BiomeAsset_MeshOptions サブ構造体
-
Material:(オプション) オーバーライドとしてスタティックメッシュ マテリアルに適用する単一マテリアル。
-
AllowCollision:True の場合、アセットでスタティックメッシュからのコリジョン プリセットが使用されます。False の場合、NoCollision プリセットが使用されます。
-
*Visible:スタティックメッシュ コンポーネントの同様の名前のプロパティに変換します。
-
CastShadow:スタティックメッシュ コンポーネントの同様の名前のプロパティに変換します。
-
CastHiddenShadow:スタティックメッシュ コンポーネントの同様の名前のプロパティに変換します。
-
AffectDistanceFieldLighting:スタティックメッシュ コンポーネントの同様の名前のプロパティに変換します。
-
DetailMode:スタティックメッシュ コンポーネントの同様の名前のプロパティに変換します(0 から 3 = Low から Epic)。
-
StartCullDistance/EndCullDistance:スタティックメッシュ コンポーネントの同様の名前のプロパティに変換します。
-
WorldPositionOffsetDisableDistance:スタティックメッシュ コンポーネントの同様の名前のプロパティに変換します。
-
IncludeInHLOD:スタティックメッシュ コンポーネントの同様の名前のプロパティに変換します。
-
-
AssemblyOptions:BiomeAsset_AssemblyOptions サブ構造体
- AllowCollision:True の場合、アセットでアセンブリ/PCG データ アセットのスタティックメッシュからのコリジョン プリセットが使用されます。False の場合、NoCollision プリセットが使用されます。
-
FilterOptions:BiomeAsset_FilterOptions サブ構造体
-
DensityMin/Max:この範囲外の密度値を持つポイントを破棄します。
-
HeightMin/Max:この範囲外の Position.Z 値を持つポイントを破棄します。
-
WaterDistanceMin/Max:BiomeFilter_WaterDistance_Level_Inst で水位より下と設定されているポイントは水面下とみなされ、Distance ノードを使用して、水面より上にあるポイントから水面下の最も近いポイントまでの 3D 距離を計算します。WaterDistanceMin/Max 範囲内のポイントが保持されます。
-
-
RuntimeOptions:BiomeAsset_RunTimeOptions サブ構造体
-
ExportPoints:アセットのスタティックメッシュのサンプリングを有効にし、ワールド空間のアセット ロケーションをエクスポートして、スタティックメッシュを覆う追加の詳細のポイントをランタイム時に生成します。
-
MeshSamplingRadius:メッシュ サンプラで生成されるポイント数を制御します
-
NormalOffset:メッシュ サンプラで生成されたポイントを法線方向に基づいて削除します。
-
ScaleMultiplier:メッシュ サンプラで生成されるポイント数をスケールします
-
ZMin/ZMax:メッシュ サンプラで生成されるポイントの最小/最大高さ範囲を制御します。
-
InfluenceType:ランタイム時に生成されるアセットの周囲の詳細を追加または削除するかを制御します。
-
InfluenceRadius:InfluenceType を適用するアセット ポイントを中心とする範囲の半径を指定します。
-
ジェネレータ
バイオーム ジェネレータ テンプレートは、BiomeGeneratorTemplate から継承された PrimaryDataAsset クラスです。
BiomeGeneratorTemplate の例と対応する構造体は、次の場所にあります。
/Script/Engine.Blueprint'/PCGBiomeCore/BiomeGenerators/Setup/BiomeGeneratorTemplate.BiomeGeneratorTemplate'
/Script/Engine.UserDefinedStruct'/PCGBiomeCore/BiomeGenerators/Setup/BiomeGenerator.BiomeGenerator'
各バイオーム アセット エントリでバイオーム ジェネレータ アセットを参照し、それらが属するルート ポイント データを定義する必要があります。子アセットには、ルート アセットと子アセットの両方として使用するのでなければ、ジェネレータ参照は必要ありません。
次にベース BiomeGenerator 構造体のプロパティを示します。
-
GeneratorType:ジェネレータを識別するために使用される固有の名前。すべてのジェネレータに固有の名前が必要です。ジェネレータは複数のバイオームの複数のアセットで再利用できます。
-
GeneratorPriority:優先順位ベースの差分フィードバック ループを使用してポイント データをレイヤー化する際に使用される優先順位。値が小さい方が優先順位が高くなります。同一の値を持つジェネレータがオーバーラップした場合はお互いに影響を与えません。
-
GeneratorAllowOverlap:有効にすると、優先順位ベースの差分を使用したレイヤー化プロセスが完全にバイパスされます。ジェネレータで生成されたすべてのポイントが保持され、このプロセス中他のジェネレータのポイントに影響を与えません。
-
GeneratorGraph:ルート ポイントを生成するために実行する必須の PCG グラフまたは PCG グラフ インスタンス参照。
-
GeneratorSpatialNoiseSettings:PCG グラフを介した空間ノイズ PCG ノードからエクスポートされるオプションの SpatialNoiseSettings アセット参照。指定した場合、アセットの重み付け分布の制御に、ランダム ポイント シードではなくこの空間ノイズ設定が使用されます。
トランスフォーム
トランスフォーム グラフは、ジェネレータから生成されたポイントまたは親からトランスフォームされたポイントを入力として使用し、それらをスポーン ステップの前に変更します。
これらのグラフは、ルート アセットではオプションですが、子アセットにはほとんどの場合必須です。トランスフォーム グラフがないと、子は親と同じ位置にスポーンされます。アセットごとにトランスフォーム グラフの動作をパラメータ化して制御するグラフ インスタンスの使用をお勧めしますが、グラフを直接使用することも可能です。
BiomeCore によりシンプルなトランスフォーム グラフがいくつか提供されています。最も興味深い例は BasicSecondaries と DuplicatePattern です。
/Script/PCG.PCGGraph'/PCGBiomeCore/Transforms/BasicSecondaries.BasicSecondaries'
/Script/PCG.PCGGraph'/PCGBiomeCore/Transforms/DuplicatePattern.DuplicatePattern'
BasicSecondaries は、各入力ポイントの周りに数個のポイントを作成し、それらをランドスケープに投影します。
このプロセスは次のように機能します。
-
入力ポイントを取得します。
-
CreatePointsGrid ノードを使用してポイントの 2D グリッドを構築します。
-
グリッドのコーナー ポイントを削除して、より円形に近くなるようにします。
-
CopyPoints を使用してグリッドを各入力ポイントにコピーします。
-
コピーしたポイントの 50 パーセントをランダムに削除します。
-
ポイントにランダム トランスフォームを適用します。
-
各グリッドの中心からの距離に基づいてポイントをスケールします。
-
結果をランドスケープに投影します。
BasicSecondaries トランスフォーム グラフ
BasicSecondaries トランスフォーム グラフを子アセットの 2 世代に適用 (赤/緑)
DuplicatePattern は、Duplicate Point ノードを使用して回転する星形状を作成します。
-
入力ポイントの回転をリセットします。
-
入力ポイントを 9 回複製し、各コピーを Z 軸を中心に 36 度回転させます。
-
9 つのコピーをそれぞれ 10 回複製し、Z 軸を中心に 10 度回転させ、ローカル X 軸に沿って平行移動させ、ポイントを 80% スケールダウンします。
-
ランドスケープに投影します。
DuplicatePattern トランスフォーム グラフ
DuplicatePattern トランスフォーム グラフを子アセットの 2 世代に適用 (赤/緑)
DuplicatePattern トランスフォーム グラフを子アセットの 1 回目の生成に適用し (赤)、BasicSecondaries トランスフォーム グラフを子アセットの 2 回目の生成に適用 (緑)
フィルタ
ルート ポイントと子ポイントは、BiomeCore_Filters PCG グラフのカスタマイズ可能なフィルタ リストまたはそのインスタンスを使用してフィルタリングできます。フィルタ配列の各フィルタ エントリには、FilterGraph、FilterAttribute、FilterRangeMinAttribute、FilterRangeMaxAttribute があります。BiomeCore の実行中、各 FilterGraph は、フィードバック ループを使用してフィルタ リストに示される順序で処理されます。
処理するフィルタ グラフは、BiomeCore グラフ パラメータである [Root Points Filters (ルート ポイント フィルタ)] と [Child Points Filters (子ポイント フィルタ)] を使用してグローバルに設定されます。デフォルトでは、Biome Core は Height、Density、および WaterDistance でフィルタリングする BiomeCore_Filters_Inst を使用するよう設定されています。
次に BiomeCore グラフ パラメータの [Root Points Filters] と [Child Points Filters] を示します。
次に BiomeCore_Filters_Inst リストと各エントリのプロパティを示します。
BiomeCore フィルタ グラフは次の場所にあります。
/Script/PCG.PCGGraph'/PCGBiomeCore/Core/BiomeCore_Filters.BiomeCore_Filters'
/Script/PCG.PCGGraphInstance'/PCGBiomeCore/Core/BiomeCore_Filters_Inst.BiomeCore_Filters_Inst'
BiomeSample フィルタは、リストをカスタマイズし、テクスチャ投影フィルタを含める方法を示すため拡張されています。ファイルは次の場所にあります。
/Script/PCG.PCGGraphInstance'/PCGBiomeSample/Setup/BiomeSample_Filters_Inst.BiomeSample_Filters_Inst'
/Script/PCG.PCGGraphInstance'/PCGBiomeSample/Filters/BiomeFilter_Flow_Projection.BiomeFilter_Flow_Projection'
/Script/PCG.PCGGraphInstance'/PCGBiomeSample/Filters/BiomeFilter_SunExposure_Projection.BiomeFilter_SunExposure_Projection'
動的フィードバック ループは、フィルタ配列の FilterGraphs セットを繰り返すことにより、受信されたすべてのルート ポイント データと子ポイント データを処理します。現在のイテレーションで残ったポイントは次のイテレーションの入力となり、アセット フィルタ オプションに基づいてポイントが徐々にカリングされます。
処理ステップは次のとおりです。
-
現在のループ イテレーションで処理されるポイント データを受信します。最初のイテレーションはすべてのポイントで開始し、次のイテレーションが前のイテレーションで残ったポイントを受信し、そのプロセスがすべてのフィルタが処理されるまで繰り返されます。
-
フィルタ配列エントリで設定されている動的 FilterGraph セットを適用します。すべてのポイントを処理し、セット FilterAttribute に書き込むと想定されます。$Density や $Position などのシンプル ポイント プロパティをフィルタリングする場合はこのグラフはオプションですが、必要に応じてフィルタ グラフでこれらのプロパティをオーバーライドできます (入力ポイント $Density に乗算として空間ノイズを適用するなど)。
-
各アセット フィルタ オプションで設定された FilterRangeMinAttribute および FilterRangeMaxAttribute 値内の FilterAttribute を使用した範囲でポイントをフィルタリングします。
-
フィルタリング後に残ったすべてのポイントをフィードバック ポイント出力ピンに出力します。これらは次のイテレーションで処理する入力ポイントとなるか、すべてのイテレーションが完了した場合はフィルタリング プロセスの最終出力になります。
高度なセットアップ
Biome Core グラフ パラメータ
BiomeCore PCG コンポーネントのグラフ パラメータ オーバーライドとして表示されるグローバル パラメータの概要
Biome Blending Range (バイオーム ブレンド範囲)
ジェネレータで生成されたポイントに、バイオーム キャッシュからのバイオームの色を割り当てる前にジッターを適用します。これは、生成されたすべてのポイントに適用されるグローバル ジッター値です。
バイオーム ブレンド範囲値 0
バイオーム ブレンド範囲値 2500
Debug - Display Biome Cache (デバッグ - バイオーム キャッシュの表示)
バイオーム キャッシュのビジュアル表現 (バイオームの色とキャッシュ セル サイズを含む) を表示します。
Biome Cache Cell Size (バイオーム キャッシュ セル サイズ)
キャッシュの解像度を設定します。
-
値は cm で指定します。
-
大きい Z 値を使用すると、2D キャッシュを生成できます。
-
セル サイズ値を小さくすると、セル数が多くなり、より正確なバイオーム定義が得られますが、パフォーマンスが低下します。
キャッシュ セル サイズ値 3200、3200、1024000
キャッシュ セル サイズ値 3200、3200、3200
キャッシュ セル サイズ値 800、800、1600
Max Child Asset Depth (最大子アセット深度)
子アセットをスポーンするときの最大再帰レベルを制御します。
-
値が 0 の場合、子アセットのスポーンは完全に無効になります。
-
高レベルのバイオーム配置でのイテレーションまたは異なるプラットフォームに最適化されたコンテンツを生成する場合に、パフォーマンスと詳細レベルのトレードオフとして使用できます。
-
子アセットはそれ自体を参照でき、無限再帰が作成される可能性があります。[Max Child Assets Depth (最大子アセット深度)] パラメータは、この状況を回避します。
-
詳細については、「再帰とトランスフォーム」セクションを参照してください。
[Max Child Assets Depth] 値を 0 に設定
[Max Child Assets Depth] 値を 1 に設定
[Max Child Assets Depth] 値を 2 に設定
Child Input Points Rate Multiplier (子入力ポイント レート乗数)
子アセットで生成できるポイントの数を制限します。
[Child Input Points Rate Multiplier] を 1 に設定
[Child Input Points Rate Multiplier] を 10 に設定
[Child Input Points Rate Multiplier] を 100 に設定
Output Data for Runtime Generation (ランタイム生成用にデータを出力)
BiomeCoreRuntime PCG グラフで使用するため、BiomeCore グラフ出力データの BiomeCore PCG コンポーネントへのシリアル化を有効にします。パフォーマンスのためデフォルトでは無効になっています。Biome Sample では、BiomeCore Runtime の例として有効になっています。
-
BiomeCoreRuntime で使用されるアセット メッシュのサンプリングも有効になっています。
-
「スポーン」と「BiomeCore Runtime への出力」セクションを参照してください。
Bypass Global Filters (グローバル フィルタをバイパス)
グローバル ポイントのフィルタリング ステップをスキップします。このドキュメントの「フィルタリング」セクションを参照してください。
バイオーム テクスチャ投影
ワールドにバイオームをレイアウトするオプションの方法として、バイオーム テクスチャを使用でき、バイオーム ボリュームまたはスプラインと共存させることができます。このアプローチはワールド内の BiomeCore アクタにグローバルに適用されるため、BiomeCore にバイオーム テクスチャ投影インスタンス グラフを割り当てる必要があります。テクスチャの各色に対して、ワールドのバイオーム アクタで同じ色を使用するバイオーム定義を指定する必要があります。
BiomeSampleLevel にこのアプローチが示されています。BiomeSample_BiomeTextureProj_Inst は、テクスチャと 2D テクスチャ配列投影を異なるタイリングおよび UV 座標オプションでサポートするよう設定されています。
現在のところ、Biome Core では、バイオーム キャッシュの初期化でバイオーム テクスチャ データを受信できるキャッシュ ポイントを生成するためにランドスケープが必要です。
ファイルは次の場所にあります。
汎用テクスチャ投影ソース グラフ:/Script/PCG.PCGGraph'/PCGBiomeCore/Core/BiomeCore_ProjectTexture.BiomeCore_ProjectTexture'
BiomeSample インスタンス:/Script/PCG.PCGGraphInstance'/PCGBiomeSample/Setup/BiomeSample_BiomeTextureProj_Inst.BiomeSample_BiomeTextureProj_Inst'
BiomeSample グラフ インスタンスのプロパティ。
セットアップすると、左のテクスチャがバイオーム キャッシュ ポイントに投影され、バイオーム定義がテクスチャの色にバインディングされます。
ジェネレータ サブタイプ
ジェネレータには固有の GeneratorType があり、バイオームごとにアセットを生成されたポイントにマッピングします。ジェネレータ グラフは、オプションで複数のポイント データ (ジェネレータ サブタイプ) を出力できます。
サブタイプは複数のユース ケースで便利であり、リッチで複雑なバイオームを作成するために必要なジェネレータ グラフの量を大幅に削減できます。BiomeCore パイプラインでは処理中に他のジェネレータからのポイントにアクセスできないため、異なるアセットのポイント間の高度なインタラクションは、ジェネレータ サブタイプで処理する方が適しています。異なるジェネレータ ポイント データ間のインタラクションのみが、優先順位ベースの差分レイヤー化中に発生します。
次にユースケース サンプルを示します。
-
上の図に示すように、ランドスケープに木のポイントを生成し、ランドスケープ レイヤーの重みに基づいてサブタイプを作成します。これにより、1 つのジェネレータを使用してペイントに基づいてアセットを分布させて全体的な視覚的複雑性を追加することにより、ランドスケープ ペイント レイヤーがバイオームの結果に影響を与えるようにすることができます。これをシンプルな入力で少ない処理で管理できます。
-
1 つのジェネレータからのポイントを、異なるアセンブリまたはメッシュで使用するために、傾斜角に基づいて分離します。
-
ジェネレータ内のポイントを複製して、Niagara システム、サウンド、デカール、ゲームプレイ アイテムなどのアクタをスポーンするための特定のトランスフォームを適用できます。
ジェネレータ グラフにジェネレータ サブタイプを作成するのを支援するため、属性に基づいてデータをフィルタリングし、2 つの個別の出力を生成する作成済み PCG サブグラフが BiomeCore で提供されています。このサブグラフをループで使用すると、3 つ以上の個別のサブタイプを作成できます。
作成済みの PCG サブグラフは、次の場所にあります。
/Script/PCG.PCGGraph'/PCGBiomeCore/BiomeGenerators/Graphs/BiomeGenerator_SubGeneratorSetup.BiomeGenerator_SubGeneratorSetup'
次の図では、ランドスケープ サーフェスをそのレイヤーの重みに応じてサンプリングし、サブグラフを使用して各レイヤーにサブタイプ (Land、Mountain、Shore) を作成しています。
ジェネレータ グラフからサブタイプが出力されたら、GeneratorSubType プロパティを使用して、アセットを割り当てるジェネレータ サブタイプを指定する必要があります。コンマ区切りリストを使用して、1 つのアセットを同時に複数のサブタイプに割り当てることができます。
先ほど示したランドスケープ ペイントの例では、Biome Sample の Broadleaf Forest アセットを、各ランドスケープ ペイント レイヤーに基づいて異なるサブタイプに割り当てています。他のアセットが Shore および Land レイヤーにスポーンされるときにトウヒの木が Shore および Mountain レイヤーにスポーンされますが、トウヒの木は Mountain レイヤーの 1 つのジェネレータを使用してペイントされた部分にのみ表示されます。
パーティション化と階層生成
BiomeCore PCG コンポーネントはデフォルトではパーティション化されていませんが、BiomeCore グラフはパーティション化を考慮して構築されています。
-
パーティション化を有効にするには、BiomeCore PCG コンポーネントで [Is Partitioned (パーティション化されている)] オプションを有効にします。デフォルトでは、PCG ワールド アクタの [Partition Grid Size (パーティション グリッド サイズ)] 設定に応じて、生成が 256 x 256 メートルのチャンクに分割されます。
-
高度な 階層生成 も有効にできます。これには、PCG コンポーネントの [Is Partitioned] と、BiomeCore PCG グラフ設定の [Use Hierarchical Generation (階層生成を使用)] オプションの両方を有効にします。このモードでは、バイオーム キャッシュとルート アセット テーブルが境界なしのレベルに生成され (ワールド全体で 1 回)、残りの生成は、グラフの複数のポイントで Grid Size ノードを使用して 256 x 256 メートルのチャンクに分割されます。
グラフのパーティション化と階層生成を有効にするオプション。
調査ツリー表示で BP_PCGBiomeCore PCG コンポーネントを選択すると、境界なしレベルで実行されるノードがハイライトされます。
エディタでパーティション化と実行時の階層生成を有効にすると、完全な再生成にかかる時間は増加しますが、ワールドでバイオーム ボリュームやバイオーム スプラインを操作したときのバイオームの部分的な更新は高速になります。
PCG コンポーネントのパーティション化は、BiomeCore で WorldPartition レベルを使用してゲームを生成して PCG パーティション アクタをランタイム時にストリーミングする場合にも推奨されます。
BiomeCore Runtime
BiomeCoreRuntime デバッグ表示:BiomeCoreRuntime で使用されるバイオーム キャッシュからのポイントと、バイオームの色が表示された出力ポイント。
概要
BiomeCore Runtime は個別の PCG コンポーネントとグラフで、カメラの周りの詳細なアセットをランタイム時に生成するために使用されます。BiomeCore で事前生成されたデータを使用し、ランタイム階層生成を活用して、ランタイム時に大量の PCG ポイントを生成します。
ランタイム生成を有効にする
エディタでランタイム生成をプレビューするには、PCGWorldActor の [Treat Editor Viewport as Generation Source (エディタ ビューポートを生成ソースとして扱う)] オプションを有効にします。
これによりポイントが生成され、カメラの周りにアセットがスポーンされます。PIE セッションまたはクック済みビルドでは、プレイヤーの位置がランタイム生成ソースとして自動的に使用されます。
ランタイム アセット
ランタイム生成に使用されるアセットは、バイオーム アセットの単純化されたタイプで、セットアップ、スプライン、ボリュームなどの BiomeActor に割り当てられます。BiomeActor ごとに、重み付けされたアセットの配列を含むランタイム アセットが 1 つのみサポートされます。
MountainForest バイオーム セットアップ アクタに割り当てられた MountainForest RuntimeAsset。
MountainForest RuntimeAsset のプロパティ
ランタイム階層生成のセットアップ
ランタイム階層生成は、次の設定を使用して有効にします。
BiomeCore ランタイム コンポーネントの設定:[Generation Trigger (生成トリガー)] を [Generate At Runtime] に設定し、Is Partitioned プロパティを `True に設定します。
BiomeCoreRuntime グラフの設定:Use Hierarchical Generation プロパティを [true] に設定し、Higen Default Grid Size を Unbounded に設定します。これは、Grid Size ノードの前に配置されているすべてのノードが境界なしのグリッド レベルで 1 回のみ実行されることを意味します。
また、グラフ設定で、生成距離を制御する半径パラメータをグリッド サイズごとに定義します。Grid Size 400 は現在のところ 1600 cm に設定されています。この値を大きくすると、詳細がより遠くまで生成されるようになり、処理するランタイム パーティション アクタの数が増加します。
BiomeCoreRuntime の階層生成は、2 つのレベルで機能します。
-
Unbounded (境界なし) レベル は、レベル全体で 1 回のみ実行する必要のある操作に使用します。
-
400 cm Grid Size レベル でのランタイム パーティション アクタのグリッドは、カメラの周りで頻繁に更新する必要のある操作に使用します。
グラフ パラメータ
次の 2 つのプロパティは、グラフ パラメータとして表示されます。
-
[Biome Blending Range (バイオーム ブレンド範囲)]:BiomeCore Runtime では、ランタイム アセットの基本的なブレンドがサポートされます。ブレンドの距離をこのパラメータで制御します。
-
[Display Points (ポイントを表示)]:BiomeCore Runtime でスポーンされたポイントと、個別のバイオームの色を使用して色が付けられたバイオーム キャッシュからのポイントを表示します。
[Display Points (ポイントを表示)] オプションを有効にした場合、関連付けられたバイオームを使用して色が付けられたポイントが表示されます。赤と青のバイオームの間にバイオームのブレンドが見られます。
グラフの概要
BiomeCore でエクスポートされ、BiomeCore Runtime で入力として使用されるデータの説明は、このドキュメントの「Biome Core Runtime への出力」セクションを参照してください。
入力
-
メッシュ ポイントは、サンプリング BiomeCore アセット メッシュから生成されます。
-
インスタンス ポイントは、ワールドにメッシュ ポイントを配置するターゲット位置です。
-
InfluencePoint は、ランドスケープに生成されるポイントの量を増加または削減するローカルの影響として機能する BiomeCore からのポイントです。
-
BiomePoint は、BiomeCache からのポイントで、ワールド内のバイオームの位置を表します。
サンプリングされたメッシュ ポイントのワールド内での配置
BiomeCore Runtime CopyPoints ループ サブグラフ では、メッシュ ポイントはインスタンス ポイントで表されるワールドの対応する位置にコピーされます。このプロセスは、パーティション アクタのグリッド内で 400 cm Grid Size レベル で実行されます
赤いワイヤーフレーム キューブは 400 cm パーティション アクタ、大きな軸ギズモはターゲット インスタンス ポイント、小さなグレーのポイントは各インスタンス ポイント位置でコピーされたサンプリングされたメッシュ ポイントを表します。
ランドスケープ サーフェス サンプラと BiomeAssets の影響
サーフェス サンプラは、各 400 cm パーティション アクタのランドスケープ サーフェス上で実行されます。空間ノイズは密度として結果に適用され、影響ポイントが InfluenceType の値に応じて最終密度に加算/減算されます。
トウヒの木の影響 (RemoveGrass)
サボテンの木の影響 (AddGrass)
最終密度値
最終結果
バイオームの重みとブレンドを計算する
各 400 cm パーティション アクタに対して、バイオーム キャッシュからのポイントが [Biome Blending Range] で指定された範囲内で収集されます。キャッシュ ポイントはその色プロパティを使用して分割され、各個別のバイオームの色のポイント数を使用して、パーティション アクタの各バイオームの相対重みが計算されます。
バイオームの色は、計算された相対重み値に応じて、各パーティション アクタで収集されたポイントに分配されます。
たとえば、最初のステップでパーティション アクタの周りで収集されたバイオーム ポイントが 3 つのバイオームを表しており、それぞれ 33% の割合だとすると、パーティション アクタで収集された最終ポイントはその割合を尊重し、33% がバイオーム A、33% がバイオーム B、33% がバイオーム C に割り当てられます。
密度ポイント グラフ プロパティの使用:[Biome Blending Range] の値 400 cm
密度ポイント グラフ プロパティの使用:[Biome Blending Range] の値 800 cm
密度ポイント グラフ プロパティの使用:[Biome Blending Range] の値 1600 cm
密度ポイント グラフ プロパティの使用:[Biome Blending Range] の値 3200 cm
バイオーム アセットを解決する
メインの Biome Core グラフで行われたのと同様に、レベルのバイオーム アクタにあるランタイム アセットからアセット プロパティのテーブルが構築されます。このテーブルには、アセットの重み、メッシュ パス、マテリアル パス、スケールおよびバイオームの色が含まれます。グラフのこの部分は境界なしのグリッド レベルで生成されます。つまり、パーティション アクタごとではなく 1 回のみ実行され、その出力は小さいグリッド レベルすべてで使用できます。
BiomeCoreRuntime コンポーネントにより境界なしのグリッド レベルで処理されたアセット テーブル出力の確認。
最後に、ポイントとアセットの色値を使用して、最終メッシュ スポーン ステップの前に、Match And Set Attributes ノードを使用してアセット プロパティがポイントに追加されます。
BiomeCore Runtime の出力。