0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UE5】PCGでLandscape Splineを取得して道沿いの草木を除外する方法

0
Posted at

【UE5】PCGでLandscape Splineを取得して道沿いの草木を除外する方法

UE5のPCG(Procedural Content Generation)フレームワークを使用して、Landscape上に草や木を自動配置する際、**「Landscape Splineで作成した道の上には木を配置したくない(除外したい)」**というケースがよくあります。

この記事では、Landscape SplineのデータをPCGで正しく取得し、指定した範囲のポイントをきれいに除外するまでの具体的なステップと、つまずきやすい「2つの罠」の解決方法を解説します。

動作確認環境

  • Unreal Engine 5 (PCGプラグイン有効化済み)

Step 1: Landscapeアクターにタグを設定する

Landscape Splineは通常のBlueprintのSplineとは少し扱いが異なります。まずは対象となるLandscapeアクターをPCG側で見つけられるようにタグを付けます。

  1. アウトライナーからスプラインを作成した Landscape アクターを選択します。
  2. 詳細パネルの Actor > Tags に任意のタグを追加します。(例:RoadSpline

Step 2: PCG内でSplineデータを取得する

PCGグラフを開き、先ほどタグ付けしたSplineを取得します。

  1. Get Spline Data ノードを追加します。
  2. 詳細パネルで以下の通り設定します。
    • Actor Filter: All World Actors
    • Actor Selection: By Tag
    • Actor Selection Tag: 先ほど設定したタグ(例:RoadSpline

⚠️ ハマりポイント:ポイントが全く取得できない場合
もしデバッグ表示(Dキー)でポイントが出ない場合は、詳細パネルの以下2点を確認してください。

  1. Component Selection は「Default」にする
    Landscapeにタグを付けても、内部のSplineコンポーネント自体にタグが付いているわけではないため、Component Selectionでタグ指定をしてしまうと取得に失敗します。
  2. Track Actors Only Within Bounds のチェックを外す
    Landscapeの原点(Pivot)がPCGボリュームの範囲外にあると無視されてしまうことがあるため、ここのチェックは外しておきます。

Step 3: Splineのサンプリングと道の幅(バウンズ)の設定

取得したSplineの線上にポイントを生成し、道の幅に合わせて判定エリアを広げます。

  1. Get Spline Data の出力を Spline Sampler ノードに繋ぎます。
  2. その出力を Bounds Modifier ノードに繋ぎます。
  3. Bounds Modifier の詳細パネルで、Bounds MinBounds Max の X・Y の数値を道の幅に合わせて調整します。(例:Minを -200, -200、Maxを 200, 200 など)。Z軸も地形の起伏に合わせて余裕を持たせてください。

Step 4: Differenceノードでポイントを引き算する

草木を生成するメインのポイント群から、道のポイント群を引き算します。

  1. Difference ノードを追加します。
  2. Sourceピン に残したい草木のポイントデータ(Surface Samplerなどの出力)を繋ぎます。
  3. Differencesピン に先ほどの Bounds Modifier の出力を繋ぎます。
  4. 詳細パネルの Density FunctionBinary に変更します。

Step 5: Density 0 の黒い点を完全に消去する

⚠️ ハマりポイント:道沿いに黒い点が残ってしまう場合
Step 4まで完了してデバッグ表示を確認すると、道沿いのポイントが消えずに黒く(または暗く)表示されたまま残ることがあります。

これは Difference ノードによってポイントの「Density(密度)」が 0 になっただけで、データとしてはその場に残り続けている状態です。これを完全に消去する必要があります。

  1. Difference ノードの後に Density Filter ノードを追加して繋ぎます。
  2. 詳細パネルの Lower Bound0.01 に設定します。(Upper Bound は 1.0 のまま)

これで、Densityが0になった(道と重なった)ポイントが完全に破棄され、きれいな道が完成します!あとはこの出力を Static Mesh Spawner などに繋げば完了です。

まとめ

Landscape SplineをPCGで除外する際は、以下のポイントを押さえておくとスムーズです。

  • Get Spline Data のコンポーネントタグ指定を外し、Bounds外も許可する。
  • Difference の後は必ず Density Filter を使って Density 0 のポイントを消去する。

PCGを使ったレベルデザインの参考になれば幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?