社員技術ブログ

UnrealEngine4 Splineに沿ってInstancedStaticMesh・SplineMeshを連続生成する方法

段々暑くなってきて4月もいよいよ残すところXXX日という感じがしてきましたが、皆様いかがお過ごしでしょうか?

ご無沙汰しております。ミデンです。

わかってます。4月の担当がなんでこんな時期に書いてんだって話ですよね。

いえね、これにはアゾフ海よりも深く猫の額よりも広い、具体的に言えば東京ドームでお茶碗一杯分くらいの言い訳がありまして。。。

まま、そんな\(・_\)ことは(/_・)/おいといて、本題に参りましょう!

 

【Spline + InstancedMesh】

今回はSplineで引いたライン上にInstancedMeshやSplineMeshを生成してフェンスを作る簡単なお仕事です!

それでは早速工程を見ていきましょう!

CylinderとCubeを画像のように配置して1枚のフェンス(のようなもの)を作成します。

このうち原点側のシリンダーとキューブをUE4のアクターマージ機能を使って一つにします。


この時、「Pivot Point at Zero」にチェックを入れておきます。

続いてブループリントの作成です。

ブループリントの作成からアクターブループリントを新規に作成して、

コンポーネントにSpline、InstancedStaticMesh、最後尾のポールとなるCylinder(EndPole)を追加します。

そしてInstanced Static MeshのStatic Meshには先程のアクターマージで作成したメッシュを設定します。

 

今回メッシュの生成部分はすべてConstruction Scriptで行い、レベルに配置して直接操作できるようにします。

最初に1ユニットの長さ(今回は200 cm 幅)を設定します。

そして、スプラインの長さを超えない範囲でループしながらインスタンスメッシュを追加していきます。

最後にポールを一本足して終わりです。

 

【Spline + SplineMesh】

今度はスプラインメッシュを使ったバージョンです。

Instanced Meshの場合は指定したスタティックメッシュの形状が維持されますが、

Spline Meshではスプラインに沿って形状が湾曲します。

 

まず、基本となるスタティックメッシュですが、ちょっと変更をします。


画像のように原点を端に合わせるようにしてマージし直します。

 

続いてブループリントを見ていきます。


最後に追加するポールです。こちらも画像のようにシーンコンポーネントを噛ませて位置をズラしておきます。

 

それではブループリントの中身です。

先程と同じようにConstruction Scriptで作っています。

インスタンスメッシュと似たような感じですが、今度は始点と終点のLocationとTangentを渡してあげます。

はじめ取ってきたTangentをそのまま渡していたところ、意図しない形状になっている箇所がありました。

そこで一度Normalizeしてからユニットの長さを掛け合わせるように変更したところ綺麗に表示できるようになりました。

最後のポールは次のループ開始位置に置き『Make Rot Axis X』で角度を合わせています。

『SplineMeshComponentを追加』ノードで複製するスタティックメッシュを設定します。

複製する軸の方向は[詳細]>[SplineMesh]>[Forward Axis]から設定できます。

 

【InstancedMeshとSplineMeshの違いを確認】

それでは、ちゃんとスプラインに沿って湾曲しているか確認することにします。

画像のように法線ベクトルで色が変わるマテリアルを作成します。

マテリアルの設定はStaticMeshエディターで行います。

準備ができたらスプラインを引いてみます。

 

ジャジャン!


上がInstanceMesh、
下がSplineMeshで作ったフェンスです。

上が一面同じ色になっているのに対して、下はしっかりグラデーションになっていることが確認できます。

以上で今回の内容は終わりです。

全国の急に何百メートルもフェンスを設置したくてしたくてたまらなくなったUE4利用者の方は、

是非SplineとInstanceMesh、SplineMeshを利用し快適なフェンス職人ライフをご堪能ください!

 

※例によってくれぐれも自己責任にてお願いいたします。

関連記事

TOP