スプラインに沿ってメッシュを配置する方法

f:id:Free_Gamer:20220215220255j:plain

スプラインに沿ったメッシュの配置方法の解説をします。

このやり方は、UE4の機能別サンプルのやつを参考にしています。

~目次~

アクターの作成

「BP_Spline」命名

f:id:Free_Gamer:20220215221848p:plain

コンポーネントの追加

f:id:Free_Gamer:20220215230041j:plain

SplineコンポーネントBillboardコンポーネントを追加しています。

Billboardを追加した理由としては

この「BP_Spline」アクターを、レベル上でクリックして選択しやすくするためです。

レベルに配置します。

こんな感じになってればOKです。

f:id:Free_Gamer:20220215225930p:plain

変数

変数を用意します。

f:id:Free_Gamer:20220215222305j:plain

NumberOfMeshs・・・スプライン上に配置するメッシュの数

OrientToSpline・・・配置したメッシュの向きをスプラインの向きと一致させるかどうか

ConstructionScriptの処理

ConstructionScriptに処理を組んでいきます。

f:id:Free_Gamer:20220215214815j:plain

NumberOfMeshsの値が「0」以上なら、処理を実行。

Trueの先にある処理が実行されます。

NumberOfMeshsの値が「0」以上でない。

つまり、「0」な場合はメッシュを1個も配置しないということで

処理は実行されません。

TrueではなくFalseに実行が流れそこで終了という感じです。

Splineの始点と終点までの長さを

NumberOfMeshsの値から「1」引いた値で割ります。

そして、割った結果の値を、ForLoopのIndexの値と掛け合わせます。

f:id:Free_Gamer:20220215222455j:plain

これで、スプラインの始点から終点までの間に指定した数のメッシュを均等に配置するための距離を算出するわけです。

(例)

0から100までの距離の間に3個メッシュを置くのなら

0の位置に1個目

0から50の距離に2個目

50から100の距離に3個目

といった感じになります。

f:id:Free_Gamer:20220215224557j:plain

0から700までの距離の間に5個メッシュを置くのなら

0の位置に1個目

0から175の距離に2個目

175から350の距離に3個目

350から525の距離に4個目

525から700の距離に5個目

といった感じになります。

f:id:Free_Gamer:20220215224829j:plain

SplineのGetLocationAtDistanceAlongSplineノードでスプラインの各ポイントの位置を
ワールド座標で取得します。

AddStaticMeshコンポーネントノードでメッシュを追加し

スプライン上の各ポイントに追加したメッシュが配置されるようにしています。

f:id:Free_Gamer:20220215223100j:plain

変数OrientToSplineがTrueの場合

追加したメッシュを、SetWorldRotationでスプラインの向きに合わせるようにします。

f:id:Free_Gamer:20220215225639j:plain

これで処理の記述は完了です。

スプライン上に配置するメッシュの選択

AddStaticMeshコンポーネントノードを選択し

f:id:Free_Gamer:20220215231210j:plain

詳細パネルで、配置したいメッシュを選択します。

この記事では、椅子にしています。

f:id:Free_Gamer:20220215230938j:plain

これで、レベル上に配置した「BP_Spline」を選択して

スプライン上にメッシュを配置していきましょう。

テスト


www.youtube.com

なかなか面白いことが出来ますよね!
それではまた!^^ノシ