Electric Dreams 環境 には、プロシージャル コンテンツ生成 (PCG:Procedural Content Generation) フレームワークを使って Unreal Engine 内で従来のワークフローとプロシージャルなワークフローの両方が直接組み込まれています。このドキュメントでは、Electric Dreams デモのコンテキストに沿って PCG フレームワークについて説明するとともに、このサンプルに含まれている次のような重要な構成要素についても解説します。
Unreal Engine のプロシージャル コンテンツ生成フレームワークの詳細については、「Procedural Content Generation Content フレームワーク」ドキュメントを参照してください。
用語集
Electric Dreams 環境サンプル プロジェクトでは、プロシージャル コンテンツ生成フレームワークで使用されるさまざまな構造体を表すために、いくつかの専門用語が使用されています。このセクションには、そういった用語とその定義、さらにこのドキュメントで使用される用語や表現に慣れるための追加情報が含まれています。
-
[PARAM:Term]
PCG グラフ は PCG の中心的な構成要素で、データフロー グラフで実行される一連の演算を通じた処理を表すグラフです。PCG グラフは、別のグラフ内でサブグラフとして使用できます。
PCG グラフ
[/PARAM]-
[PARAM:Term]
PCG 要素 は PCG グラフ 内で使用されるノードです。要素は C++ コード、または PCG ブループリント要素クラスを使ってデータ内で作成できます。
PCG 要素
[/PARAM]-
[PARAM:Term]
PCG Settings は、クラスと設定プロパティを含むノード設定です。
PCG Settings (PCG 設定)
[/PARAM]-
[PARAM:Term]
空間データ は空間内に存在し、次を表現できるデータです。
- 3 次元 (3D) ボリューム。
- 2 次元 (2D) サーフェス。高さフィールドやテクスチャなどです。
- 1 次元 (1D) ライン。スプラインや点群などです。
空間データ
[/PARAM]-
[PARAM:Term]
ポイント データ は、3D 空間内のポイント (点) を、関連する境界、定義済みのプロパティ、属性を使って表現します。これは、演算における最も一般的な PCG データ型です。
ポイント データ
[/PARAM]-
[PARAM:Term]
ポイント プロパティ は、PCG ポイント データ に含まれるすべてのポイントの、事前定義された一連のプロパティです。プロパティは属性の演算で使用できます。プロパティ名にはプレフィックスとしてドル記号 ($) を付ける必要があります (例:
$Density
、$Position.x
、$Rotation.forward
)。これらのプロパティは次のとおりです。
- Transforms:位置 (vec3)、回転 (Rotator)、スケール (vec3) で構成されたトランスフォーム。
- Density (float):ポイント密度関数の最大値 (0 ~ 1)。この値は、差分、結合、ノイズ、フィルタリングといった複数の演算で使用されます。
- BoundsMin/Max (vec3):ポイント境界ボリュームの最小値と最大値。
- Color (vec4):ポイント カラー値。
- Steepness (float):ポイントの密度関数の傾斜を表現する、0 ~ 1 の範囲の値。「1」の値では、密度関数によってポイントの境界内の最大密度が返され、境界外の 0 が返されます。「1」未満の値では、密度関数により、ポイントの境界の最小値と最大値の中央に 0 にまで線形補間された最大密度値が返されます。
- Seed (int64):ポイントの位置、ノード シード、コンポーネント シードから算出されたポイント シード。
プロパティ
[/PARAM]-
[PARAM:Term]
属性
[/PARAM]-
[PARAM:Term]
アセンブリ は、単一のアセットを構成する一連のアクタとビジュアル要素の組み合わせです。Electric Dreams におけるアセンブリでは、手動で作成してレベル周辺に配置されるレベル インスタンスまたはパックされたレベル アクタと組み合わせて Quixel アセットが使用されます。アセンブリは、Level to PCG アセット ユーティリティによる支援を通じて、ソース コンテンツとして PCG グラフ および PCG アセンブリで使用されます。
アセンブリ
[/PARAM]-
[PARAM:Term]
PCG アセンブリ は、PCG フレームワークでプロシージャルに生成されるアセンブリです。PCG アセンブリは一連の演算を通じて複数の方法で PCG グラフ 内で構築でき、コンポーネントや公開パラメータといった入力を調整することでカスタマイズできます。これらの演算には、個別のメッシュやアクタのスポーンから、手作りの完全なアセンブリまでが含まれます。
PCG アセンブリ
[/PARAM]ツール
このセクションでは、Electric Dreams 環境デモのプロシージャルなコンテンツの生成に使用したツールについて説明します。
Level to PCG アセット ユーティリティ
説明
Level to PCG アセット ユーティリティ は、選択されたレベル内のすべてのスタティックメッシュ、階層的なインスタンス化されたスタティックメッシュ (HISM)、インスタンス化されたスタティックメッシュ (ISM) を PCG Settings アセットにエクスポートします。これらのデータは PCG ポイント データ として格納されます。具体的に、これらはトランスフォーム、メッシュとマテリアルのソフト オブジェクト パス、アクタ タグ、アクタ シーン階層に関する情報が 属性 としてともにエクスポートされた、すべてのビジュアル要素の点群データです。
その結果となる PCG Settings アセットは、インスタンス化されたノードとしてあらゆる PCG グラフ に追加できます。その後、この PCG ポイント データ は、拡張またはスポーンのためにプロシージャルなルール (PCG グラフ) によって処理されます。
セットアップ
ブループリント アセットユーティリティは PCG プラグインによって配布され、[Show Plugin Content (プラグイン コンテンツを表示)] を有効にした後にアクセスできるようになります。
Level to PCG アセット ユーティリティのコンテンツ ファイル パスは「/PCG/Utilities/PCGUtility_LevelToPCG
」です。
Electric Dreams のすべての PCG Settings とそのソース レベルのコンテンツ ファイル パスは「/PCG/Assets/PCGAssemblies
」です。
使用方法
Level to PCG アセット ユーティリティのワークフローを使用するには、次の手順に従います。
- コンテンツ ブラウザ 内でレベルを選択します。
-
右クリックして、[Scripted Asset Action (スクリプト化されたアセット アクション)] > [PCG - Level To PCG Settings (PCG - Level to PCG 設定)] を選択します。
画像をクリックすると拡大表示されます。
選択したレベルで World Partition または One File Per Actor (OFPA:アクタあたり 1 つのファイル) が使用されている場合は、最初にこのレベルをエディタで開いてそのコンテンツをロードする必要があります。OFPA を使用していないレベルについては、エディタで開くことなくコンテンツ ブラウザで操作を直接実行することができます。
- 前の手順により、レベル名に「_PCG」サフィックスが付いたレベル名で、選択したレベル ファイルの隣に PCG Settings アセットが作成されます。同じ名前を持つ PCG Settings アセットがすでに存在する場合は、新しいアセットを作成するのではなく、その既存のアセットが更新されます。
- PCG Setting ファイルを コンテンツ ブラウザ から PCG グラフ に、インスタンス化 されたノードとして直接ドラッグアンドドロップします。
-
PCG グラフ 内でこのアセット ノードの Points 出力を Copy Points ノードのソース入力につなげて、ソース ポイントをコピーする先の一連のポイントをターゲットにします。
可能な場合は処理を高速化できるように、Copy Points ノードの [Attribute Inheritance (属性の継承)] を [Source Only (ソースのみ)] に設定します。
-
[Mesh Selector Type (メッシュ セレクタ タイプ)] が [PCGMeshSelectorByAttribute] に、[Attribute Name (属性名)] が [Mesh] に設定された Static Mesh Spawner ノードに Copy Points の出力をつなげます。
画像をクリックすると拡大表示されます。
エクスポートしたビジュアル要素でマテリアル オーバーライドが使用されていた場合は、Index0 の値として「マテリアル」を使用して By Attribute Material Overrides を有効にできます。
また、エクスポートした アクタ タグ 属性を使用して、PCG グラフ で Point Filter ノードを使ってポイントをフィルタリングすることもできます。「タグのフィルタリング」のユースケースとしては次の例があります。
- NoCol:ポイントのコリジョン要件に応じてポイントをフィルタリングして、それに従ってポイントをスポーンします。
- Clutter:アセンブリを拡張するために、ランダム ノイズとパラメータ化された密度を加えます。
- Helper:ルールに特別な目的を持ちながらも、スポーンされるべきではないポイントをフィルタリングします。
Actor Tagger エディタ ユーティリティ ウィジェット

説明
Actor Tagger エディタ ユーティリティ ウィジェット は、レベル内のアセットでアクタ タグを作成する際に役立ちます。このユーティリティ ウィジェットでは、PCG Settings アセットへのエクスポートを目的とした、レベルのタグ付けワークフローが高速化されます。
Unreal Engine にはアセットのアクタ タグを追加、編集、削除できる十分なワークフローが備わっていますが、現時点では一括編集に適したものではありません。この例として、選択したいくつかのアクタに異なるアクタ タグを適用する状況が挙げられます。この場合、結果として [Details (詳細)] パネル内でこれらのアクタ タグが曖昧でわかりづらくなります。
これは現在のエディタ アクタ タグの動作の一つであり、これを緩和するために Actor Tagger エディタ ユーティリティ ウィジェットが開発されました。また、このユーティリティ ウィジェットでは、ユーザーが 3D ビューポートでのタグ付けの作成に集中できるように、ローカライズされた一連のアクションも提供されます。
セットアップ
Actor Tagger エディタ ユーティリティ ウィジェットのコンテンツ ファイル パスは「/Game/PCG/Utilities/ActorTagger/EUW_ActorTagger
」です。
使用方法
Actor Tagger を実行するには、次の手順に従います。
- コンテンツ ブラウザ 内で Actor Tagger を選択します。
- Actor Tagger を右クリックして [Run Editor Utility Widget (エディタ ユーティリティ ウィジェットを実行)] を選択します。
機能
Select Tag (タグを選択)
[Select Tag] フィールドに入力されたタグを持つ、ロードされたレベル内のすべてのアクタを選択します。アウトライナーでの現在の選択内容がその結果に置き換わります。
Remove Tag (タグを削除)
現在選択しているすべてのアクタから [Remove Tag] フィールドに入力されたタグを検索します。アクタにそのタグが含まれる場合は、そのタグが削除されます。
Add Tag (タグを追加)
[Add Tag] フィールドに入力されたタグを、現在選択しているすべてのアクタに追加します。選択したアクタにそのタグがすでに存在する場合は追加されません。
Hide (非表示)
現在選択しているすべてのアクタを非表示にします。アクタを選択していない場合は、以前に非表示にされたアクタが表示されます。
Unlit / Lit (非ライティング / ライティング)
ビューポートのライティング モードのステートをライティング/非ライティングに切り替えます。
ツール セクション
レベル タグの出力
ロードされたレベルに含まれるすべてのユニークなタグは [Output Log (アウトプット ログ)] に表示されます。これにより、ロードされたレベルに含まれるすべてのアクタ タグの概要をすばやく確認することができます。

Make Tags Unique
この関数は現在ロードされているレベル内のすべてのアクタに対して実行され、アクタごとに重複するタグを単一のタグ エントリへと削減します。
Reference Level
この関数は、指定された参照レベルをロードまたはアンロードします。これには、PCG Settings アセットとしてエクスポートされるレベルの構築を支援するライティングと参照オブジェクトが含まれる場合があります。

Actor Tagger エディタ ユーティリティ ウィジェットの実行時にはデフォルトの参照レベルが割り当てられます。このデフォルトの参照レベルは「/Game/PCG/Utilities/ActorTagger/ActorTagger_ReferenceLevel
」にあります。
このデフォルト設定は、ウィジェットのコンストラクション スクリプト内で割り当てられているレベルを変更することでカスタマイズできます。
画像をクリックすると拡大表示されます。
Set Reference Level
この関数では、ロード/アンロードのための独自の参照レベルを割り当てることができます。独自の参照レベルを割り当てるには、World Partition が設定されていないレベルを コンテンツ ブラウザ 内で選択し、このボタンを選択します。割り当てた参照はウィジェットでは保存されないため、ウィジェットを実行するたびに再度割り当てる必要があります。
カスタム ノードとサブグラフ
このセクションでは、特定の目的のために Electric Dreams 環境の PCG グラフ 内で作成される PCG カスタム ノードとサブグラフについて説明します。
Copy Points With Hierarchy と Apply Hierarchy

説明
SG_CopyPointsWithHierarchy ノードと ApplyHierarchy ノードは、Level to PCG アセット ユーティリティで作成される PCG Settings アセットと組み合わせて使用されます。
これらのノードを使用して、レベル内のアクタの階層と同じようにポイントの階層を操作することができます。ポイントは親ポイントのトランスフォームから継承できます。たとえば、この機能を使って、木の幹を表すポイントをランダムに回転してスケールすることができます。木の枝を表すそれらの子ポイントは、その親である幹のトランスフォームに従いつつ、その親のトランスフォームに重ねる形でそれぞれ独自のランダムな回転やスケールも追加します。
ポイントは Point Filter 演算子を使って削除することができ、その子ポイントも自動的に削除されます。複雑なポイントのセットアップにランダムなバリエーションを加える際に便利です。
セットアップ
SG_CopyPointsWithHierarchy ノードと ApplyHierarchy ノードは、Electric Dreams 環境サンプル プロジェクトの ノード パレット にあります。また、グラフ領域の PCG エディタ のコンテキスト メニューからこれらのノードにアクセスすることもできます。
SG_CopyPointsWithHierarchy サブグラフのコンテンツ ファイル パスは「/Game/PCG/Assets/PCGCustomNodes/SG_CopyPointsWithHierarchy
」です。
ApplyHierarchy カスタム ノードのコンテンツ ファイル パスは「/Game/PCG/Assets/PCGCustomNodes/ApplyHierarchy
」です。
これらのノードは次の PCG グラフ で使用されています。
/Game/PCG/Graphs/Ditch/PCGDemo_DitchBP
/Game/PCG/Graphs/Ground/PCGDemo_GroundBP
/Game/PCG/Assets/BP_PCG_LargeAssembly
/Game/Levels/PCG/Breakdown_Levels/ElectricDreams_PCGSplineExample
使用方法
PCG グラフにおける典型的な階層ノードの使用。(画像をクリックすると拡大表示されます)
これらの階層ノードの PCG グラフ における典型的な使用方法は次のとおりです。
- Level to PCG アセット ユーティリティ により、レベルが、メタデータ 属性 として格納された、関連するシーン階層情報とともに、PCG ポイントを含む PCG Settings アセットに変換されます。
- SG_CopyPointsWithHierarchy サブグラフにより、ターゲット ポイント トランスフォームを使って複数の場所で PCG Settings アセットが複製されます。Copy Points ノードの動作に似ていますが、階層属性値も維持されてオフセットされるため、親子関係の情報が元のアセットのポイントの各コピーに対してユニークになります。
- Point Filter ノードによって属性でポイントが選択されます。
- ApplyToAttributes オプションを含む Transform Points ノードにより、選択したポイントの相対的なトランスフォーム属性がトランスフォームされます。
- Merge ノードにより、同じデータ ストリームの同じ階層内ですべてのポイントが再び結合されます。
- ApplyHierarchy ノードにより、親のトランスフォームと結合された相対的なトランスフォーム属性がポイントに適用されます。
PCG Settings ノードによって生成される階層属性
FallenTree PCG Settings アセットの階層属性の表示。(画像をクリックすると拡大表示されます)
レベル アクタを PCG Settings アセットにエクスポートする際は、ソース レベルに含まれるアクタ階層情報が、「メタデータ属性」によってそれぞれの PCG ポイントに関連付けられます。これらのメタデータ属性は次のとおりです。
メタデータ属性 | 型 | 説明 |
---|---|---|
ActorIndex | int | ポイントのユニークな識別子。 |
ParentActorIndex | int | ポイントの親ポイントのユニークな識別子。 |
HierarchyDepth | int | ペアレント階層におけるポイントの深度。言い換えると、ポイント自体とルート ポイントとの間に親がいくつ存在するかを表します。 |
RelativeTransform | transform | PCG Settings アセットのソース レベルにおける、ポイントとその親との間のオフセット トランスフォーム。 |
ダミー ポイントは、次のメタデータ属性で階層ルート ポイントを表します。
- ActorIndex:0
- ParentActorIndex:-1
- HierarchyDepth:0
- RelativeTransform:Unit Transform
ソース レベル階層で親が指定されていないすべてのポイントは、オーファンやルート ポイントに向けた特殊なケースの処理を避けるために、このルート ポイントでペアレント化されます。
SG_CopyPointsWithHierarchy でトランスフォームされる階層属性
SG_CopyPointsWithHierarchy で生成された PCG アセットの各コピーに向けて生成されたアクタと親アクタのインデックス。6 つの異なるルート ポイント ActorIndex 値に注目してください。(画像をクリックすると拡大表示されます)
SG_CopyPointsWithHierarchy サブグラフ。(画像をクリックすると拡大表示されます)
階層インデックスを処理するには、カスタム バージョンの Copy Points ノードが必要になります。これは、ポイントがその親ポイントを探す際に、ポイントとその解決済みの親の両方が同じコピー、または Copy Points ノードによって生成された一連のポイントに属することを確実にする役割を担うものです。
このカスタム Copy Points ノードは、次を含むサブグラフの形で実装されます。
- 通常の Copy Points ノード。
- 元のインデックス、コピー番号、ユニークなタスク ID から算出されたユニークな一連の ID を各コピーに割り当てる PostCopyPoints-OffsetIndices ブループリント ノード。
- IgnoreParentRotation ブール属性と IgnoreParentScale ブール属性を false に初期化する際に使用される 2 つの Create Attributes ノード。
階層におけるポイントの操作
SG_CopyPointsWithHierarchy ターゲット ポイントによって指定された場所にポイントがコピーされると、Point Filter ノードを使って、PCG Settings アセットに含まれる属性で結果のポイントをフィルタリングできるようになります。

階層内のポイントをランダムに削除するための、Clutter 属性を使った PCGDemo_Ditch でのポイント フィルタリング。

階層内のポイントをランダムに回転するための、RotZ 属性を使った PCGDemo_Ditch でのポイント フィルタリング。
上の 2 つの画像では、ポイントがタグによって選択されてフィルタリングで除外または回転され、Point Filter によって、選択されなかったポイントと再び統合されています。ここで Merge 演算は、ポイントがトランスフォームされているかどうかにかかわらず、すべてのポイントが同じデータ ストリーム内に維持されて、最終的なポイント トランスフォームを適用する際に一緒に処理されることを確実にするうえで重要になります。
画像をクリックすると拡大表示されます。
階層内で Transform Points ノードを使用する際は、トランスフォームをポイントの Transform に直接適用するのではなく、RelativeTransform 属性に適用する必要があることに注意してください。このために、[Apply To Attribute (属性に適用)] オプションの [Attribute Name (属性名)] には [RelativeTransform] を選択します。親ポイントのトランスフォームから一部のみを継承したい場合は、任意で IgnoreParentRotation 属性と IgnoreParentScale 属性、またはそのいずれかを true に設定できます。

最後に、Static Mesh Spawner ノードでメッシュがスポーンされる直前に ApplyHierarchy ノードを使用します。ApplyHierarchy ノードでは次の処理が行われます。
- 既存のすべての階層レベルを昇順でイテレートする (階層深度ポイント属性から解決されます)。
- 最終的なポイント トランスフォームをその親トランスフォームと RelativeTransform 属性値から算出する。
- 親が破棄されたポイントを削除する。
Flat Area Detector

説明
Flat Area Detector は、特定のサイズのポイントを配置するうえでサーフェスが十分に平らであるかどうかを判断し、アセットの一部が地上から浮いてしまうといったアセットの誤配置を回避するために使用されるサブグラフです。Flat Area Detector は、各ソース ポイント周辺の 4 つの異なる場所のサーフェスをサンプリングすることで、水平方向または傾斜が付いたサーフェスに対応します。これらの 4 つの場所のいずれかが、入力ポイントの場所と向きで定義された平面と交差しない場合は、入力ポイントが破棄されます。上の画像で示されているように、これらの平面は青色のワイヤーフレームで表されます。4 つのサンプルの場所のいずれかにおけるサーフェスの向きが入力ポイントの向きと異なる場合は、入力ポイントがさらに破棄されます。
このサブグラフは次のグラフで使用されています。
- PCGDemo_Ground
- このグラフでは、Flat Area Detector を使って、粗い岩肌のメッシュ サーフェスにクローバー パッチを配置しています。
- このグラフのコンテンツ ファイル パスは「
/Game/PCG/Graphs/Ground/PCGDemo_Ground
」です。
- PCGDemo_Forest
- このグラフでは、Flat Area Detector を使って、ランドスケープにフラットで大規模なストーン パッチと岩のヒーロー アセンブリを配置しています。
- このグラフのコンテンツ ファイル パスは「
/Game/PCG/Graphs/Forest/PCGDemo_Forest
」です。


セットアップ
Flat Area Detector サブグラフのコンテンツ ファイル パスは「/Game/PCG/Graphs/Forest/DiscardPointsInBumpyAreas
」です。
使用方法
Flat Area Detector をノードとして PCG グラフ で使用するには、このグラフを コンテンツ ブラウザ から PCG グラフ エディタにドラッグアンドドロップします。
画像をクリックすると拡大表示されます。
ノード ピンの説明
次の表では、DiscardPointsInBumpyAreas ノードに含まれるピンとその説明を示しています。
ピン | 型 | 説明 |
---|---|---|
In | ポイント | ProjectionTarget のサーフェスに対してテストされる入力ポイント。 |
InNoProjection | ポイント | (任意) このピンは最適化であり、入力ポイントがすでにサーフェス上に配置されている場合に、それらをフィードするために In ピンの代わりに使用できます。 |
ProjectionTarget | サーフェス | このピンは、平坦さを評価する対象のサーフェスにつなげます。Get Landscape Data ノードまたは World Ray Hit ノードで生成されたサーフェスに対応しています。 |
SampleDistance | 属性セット - Double | このピンは、Create Attribute ノードで提供されるものなど、float (浮動小数) または double (倍精度浮動小数) の属性入力を受け取ります。 このピンでは、それぞれのソース ポイントと、サーフェスの調査に使用されるサンプル ポイントとの間の距離を制御します。 ビジュアル面では、これらは上の画像で示されている青色のワイヤーフレームの X-Y 範囲で表現されます。 |
HeightThreshold | 属性セット - Double | このピンは、Create Attribute ノードで提供されるものなど、float (浮動小数) または double (倍精度浮動小数) の属性入力を受け取ります。 青色のワイヤーフレーム サーフェスからの距離がこの値よりも大きいサンプル ポイントは平面外とみなされて、入力ポイントの破棄に使用されます。 上の画像では、これらの平面外のポイントが赤色のボックスで表されています。 |
NormalThreshold | 属性セット - Double | このピンは、Create Attribute ノードで提供されるものなど、float (浮動小数) または double (倍精度浮動小数) の属性入力を受け取ります。 このピンでは、入力ポイントが破棄される前に、サンプル ポイントの上向きベクターと入力ポイントの上向きベクターとの間にどれだけの差分を許可するかを制御します。 この値は負の値である必要があります。この値が 0 に近いほど、より多くのポイントが破棄されます。 |
Out | ポイント | HeightThreshold テストと NormalThreshold テストに合格した残りの一連のポイント。 |
サブグラフの概要
画像をクリックすると拡大表示されます。
このセクションでは、Flat Area Detector サブグラフの仕組みの概要について説明します。
サンプル ポイントを作成する

属性演算ノードと Transform Points ノードにより、4 つのサンプル ポイントが次のように作成されます。
- サンプル ポイントが、各入力ポイント周辺の 2D ボックス内に配置されます。
- このボックスのサイズが Sample Distance 属性によって定義されます。
- 各サンプル ポイントの境界が Height Threshold 属性によって定義されます。
平面をビルドする

上の画像で青色のワイヤーフレームで表されている平坦化されたポイントは、属性演算によって Sample Distance 属性からビルドされたものです。
サンプル ポイントをサーフェスに投影する

4 つのサンプル ポイントは、位置と向きを考慮してサーフェスに投影されます。次に、投影されたこれらのポイントと青色のワイヤーフレームとの差分が計算されます。この差分ノードによって平面外のポイントが出力されます。
これら 3 つのノードのデバッグ ステートを有効にすることで、上の画像のように、青色のワイヤーフレーム、4 つのサンプル ポイント (緑色で表示)、青色の平面 (ビジュアル的には青色のワイヤーフレーム) と交差しないサンプル ポイント (赤色で表示) が表示されます。
サンプル ポイントの向きの差異を推定する
画像をクリックすると拡大表示されます。
次に、サンプル ポイントの向きの差異が推定されます。ポイントは入力ポイントから作成されて、その上向きベクターに沿って負の方向に Normal Threshold 値の分だけ平行移動されます。下の画像では、これが青色のソリッドな平面として表示されています。交差はこのポイントと平坦化されたサンプル ポイントとの間で計算されて、サーフェスの法線ベクターに揃えられます。下の画像では、これが青色のワイヤーフレームとして表示されています。


左側の画像は法線のしきい値が -300 の場合を表しており、青色のソリッドな平面がその上向きベクターに沿って下にプッシュされています。右側の画像は法線のしきい値が -10 の場合を表しています。この値では、交差によってポイントが赤色の三方向の軸として出力されます。これは、法線のしきい値を使用して、サンプル ポイントの向きの差異に基づいて交差の出力を制御する方法を示しています。
平行するサンプル ポイント/平面は、法線のしきい値が 0 の場合のみに青色のソリッドなポイントと交差します。
最終的なポイントのフィルタリング
画像をクリックすると拡大表示されます。
最後に、これら 2 つのテストの結果であるポイントが展開されて、入力ポイントをフィルタリングで除去するための、入力ポイントに対する差分として使用されます。これにより、DiscardPointsInBumpyAreas ノードの入力ピンで提供されたパラメータに準拠するポイントのみが残ります。
Look At

説明
LookAt ノードでは、ポイントの向きを vector3 属性として提供されるターゲットに変えます。この属性は、属性演算ノードと距離ノードを介して作成できます。
Electric Dreams のコンテキストでは、このノードが次の目的で使用されています。
- 基本原則として、希望する川底の外観を実現するために、大規模アセンブリのスプラインに対してポイントの向きを変える。
- フォグ カードと森林のグラフの両方で、フォグ カード ポイントを領域の中心に向けて回転する。
セットアップ
LookAt カスタム ノードのコンテンツ ファイル パスは「/Game/PCG/Assets/PCGCustomNodes/LookAt
」です。
使用方法
LookAt ノードは単一のポイント データ入力を介してイテレートし、ポイント Look At ごとのターゲット座標として vector3 属性を想定します。
画像をクリックすると拡大表示されます。
LookAt ノードを使用するには、次の手順に従います。
- ポイント データを作成します。
- From Source Param に設定された AddAttribute を使って、新しい LookAt 属性をポイント データに加えます。
- Attributes を次のいずれかのオプションでオーバーライドします。
- タイプ ベクターの Create Attribute ノードと Look At 座標。
- カスタマイズのために公開可能なブループリント vector3 変数からの Get Actor Property。
- Graph Settings で PCG vector3 グラフ パラメータを作成して、グラフ インスタンスごとに公開されて PCG コンポーネントごとに編集可能な「パラメータ名」を取得する。
- LookAt ノードの設定を指定します。
- LookAt Target を、使用する属性名として設定します。
- 2D LookAt の設定では Z コンポーネントが無視されます。
- Forward X では、LookAt に Y 軸ではなく X 軸を使用します。