スプラインに沿ってメッシュを配置する方法
スプラインに沿ったメッシュの配置方法の解説をします。
このやり方は、UE4の機能別サンプルのやつを参考にしています。
~目次~
アクターの作成
「BP_Spline」と命名。
コンポーネントの追加
SplineコンポーネントとBillboardコンポーネントを追加しています。
Billboardを追加した理由としては
この「BP_Spline」アクターを、レベル上でクリックして選択しやすくするためです。
レベルに配置します。
こんな感じになってればOKです。
変数
変数を用意します。
NumberOfMeshs・・・スプライン上に配置するメッシュの数
OrientToSpline・・・配置したメッシュの向きをスプラインの向きと一致させるかどうか
ConstructionScriptの処理
ConstructionScriptに処理を組んでいきます。
NumberOfMeshsの値が「0」以上なら、処理を実行。
Trueの先にある処理が実行されます。
NumberOfMeshsの値が「0」以上でない。
つまり、「0」な場合はメッシュを1個も配置しないということで
処理は実行されません。
TrueではなくFalseに実行が流れそこで終了という感じです。
Splineの始点と終点までの長さを
NumberOfMeshsの値から「1」引いた値で割ります。
そして、割った結果の値を、ForLoopのIndexの値と掛け合わせます。
これで、スプラインの始点から終点までの間に指定した数のメッシュを均等に配置するための距離を算出するわけです。
(例)
0から100までの距離の間に3個メッシュを置くのなら
0の位置に1個目
0から50の距離に2個目
50から100の距離に3個目
といった感じになります。
0から700までの距離の間に5個メッシュを置くのなら
0の位置に1個目
0から175の距離に2個目
175から350の距離に3個目
350から525の距離に4個目
525から700の距離に5個目
といった感じになります。
SplineのGetLocationAtDistanceAlongSplineノードでスプラインの各ポイントの位置を
ワールド座標で取得します。
AddStaticMeshコンポーネントノードでメッシュを追加し
スプライン上の各ポイントに追加したメッシュが配置されるようにしています。
変数OrientToSplineがTrueの場合
追加したメッシュを、SetWorldRotationでスプラインの向きに合わせるようにします。
これで処理の記述は完了です。
スプライン上に配置するメッシュの選択
AddStaticMeshコンポーネントノードを選択し
詳細パネルで、配置したいメッシュを選択します。
この記事では、椅子にしています。
これで、レベル上に配置した「BP_Spline」を選択して
スプライン上にメッシュを配置していきましょう。
テスト
なかなか面白いことが出来ますよね!
それではまた!^^ノシ