Created on | Updated on
フォローする

Heightfield Scatterで配置したポイントにランダムなオフセットが上下に入る

 

HeightField状にポイント配置するために使用可能なHeightfield Scatterですが、実際に使ってみると1つ問題があります。

下記の画像のOffがデフォルトのHeightfield Scatterですが、本当はHeightFieldのHeight位置にぴったりとフィットしてほしいのですが、なぜか上下にランダムなオフセットが入ります。

scatter.gif

このままだと配置したプロップが空中に浮いてポイントが発生します。

そこで、heightfield scatterを右クリックし、Allow Editing of Contentsを選択します。

これでこの中身を確認、編集が可能になります。
Heighfield ScatterもHDAですので、右クリック>Type Propetiesを選択することでこのHDAの設定を確認することが可能です。

中に入り一番最初の部分をみると以下のようになっています。
HDAのパラメーターであるMask Layerを取得し、レイヤー名が入っていればそのレイヤー上にScatterを行い、レイヤー名がなければHeightField全体にScatterします。

この時、レイヤー名が入っていない方はheightレイヤーを元にポリゴンにコンバート(ポリゴン数は非常に少ない)、作成されたポリゴンのポイントY値を0に設定し、それからScatterしているためすべてのScatter Pointが0の位置にフィットしています。

これをMask Layer名が設定された場合でみると、Height Field2DボリュームからLayer名を取得し、そのままScatterしているためポイントのY値が0に固定されていません。この時のオフセットが、最後に実際のHeight位置に移動したときにオフセットとして計算されてしまっています。

そこで、Layer名を設定しない流れにあるAttribute Expression(@P.yを0にする)を複製し、Scatter1の流れに追加します。

実行されているExpressionは単純に以下の式になります。

@P.y = vector(point(1, 'P', 0)).y;

これでオフセットがなくなり、全てのポイントのyが0になります。

この結果を基にCopy to Pointでプロップを配置すると最初にみた画像のように空中に浮いているプロップがなくなり、全て地形上に配置されます。

 scatter.gif

これでUE4に持って行っても空中に浮いたプロップが作成されることはありません。