Blueprint
UnrealEngine

[UE4] Construction Script と Instanced Static Mesh

Construction Script とは

Construction Script はアクターがインスタンス化された際に、一度だけ実行されるスクリプトです。
Event Graph の Begin Play はゲームを再生しないとスクリプトは実行されませんが、Construction Script はエディターに配置した状態で実行されるので、ブループリント内で配置したメッシュをレベルエディタ上で確認できるという違いがあります。

Construction Script を利用して、手軽にプロシージャルなレベル作成が行なえます。
今回はシンプルなメッシュを並べるブループリントアクターを作成してみます。

ブループリント作成手順

ブループリントクラスを作成し、コンポーネントを追加する

Instanced Static Mesh コンポーネント を追加します。
add_component.png

メッシュを設定する

Instanced Static Mesh コンポーネント にメッシュを設定します。
今回はスターターコンテンツに入っている SM_Chair を設定しています。
set_static_mesh.PNG

Construction Script にノードを定義する

変数

  • NumInstances: Integer
  • InstanceMargin: Vector

追加した変数の右端にある目のマークをクリックするか、詳細パネルのインスタンス編集可能(InstanceEditable) にチェックを入れて、アクターの詳細パネルに変数をエクスポートします。

construction_script.png

このブループリントは、0 ~ NumInstancesindex の値を +1 しつつ、InstanceMargin * index をポジションとして、InstancedStaticMesh をコンポーネントに追加します。

レベルに配置する

作成したブループリントをレベルに配置し、詳細パネルの デフォルト タブから、エクスポートしたパラメータを入力すると、InstanceMargin の方向に NumInstance 分のイスが配置される。
level.png

基本的にブループリントで出来ることは Construction Script でも出来るので作り方次第で色々できる。

並べたり

isu.PNG

ブループリント

isu_bp.png

螺旋状にしたり

curve.PNG

ブループリント

curve_bp.png

Instanced Static Mesh について

Instanced Static Mesh は同じメッシュを 1 DrawCall で出力する。
レベルビューで Static Mesh をコピーして配置した場合、コピーした分だけ DrawCall が増える。

DrawCall はコンソールコマンド Stat SceneRendering で確認できます。
Stat SceneRendering で表示される Mesh draw callsStatic list draw calls の違いはよく分かりません。

Static Mesh で並べてみた

Static Mesh でイスを4つ並べてみました。
デフォルトレベルは、何も置かない状態で DrawCall = 4 なので、イスの DrawCall2 となります。

char_1.png

イス4つ分の DrawCall = 8 が積まれていることが分かります。
char_4.png

Instanced Static Mesh で大量に並べてみた

イスの数を変えても DrawCall は一定値。
char_menyのコピー.png

まとめ

Construction Script と Instanced Static Mesh を積極的に使っていきましょう。