UE4 NiagaraのAttributeとBlueprintでの取得について

はじめに

この記事はUnreal Engine 4 Advent Calender 2019その2の1日目の記事です。

qiita.com

概要

NiagaraのAttributeをBlueprintで取得してみる

この記事の内容

  1. Niagaraに対してBlueprintは色々できる

  2. NiagaraのAttributeを取得してみる

  3. 気になる点


前提

  • Unreal Engine 4.24 Preview 4を使用して確認したものとなっています。
  • Niagaraは、ベータ版です。
    今後、本記事の内容とは仕様などが異なる可能性があります。

  • UE4.24 Preview 4は記事作成時点(2019/12/01)では、プレビュー版となります。
    リリース版とは異なる挙動を起こす可能性があります。


1. Niagaraに対してBlueprintでは色々できる

Blueprint上にて、Niagaraに関する関数を調べてみると、
再生しているFXの停止、Niagara内のUser変数の上書きなど様々な関数が用意されています。
f:id:yuyasaltcanyon:20191128140253p:plain:w700


BlueprintのNiagaraに関するAPI Referenceは以下の公式ドキュメントにリスト化されています。
合わせて御覧ください。

docs.unrealengine.com
今回は、その1つであるAttributeの取得について取り上げてみます。

2. NiagaraのAttributeの取得をしてみる

f:id:yuyasaltcanyon:20191130011339p:plain

NiagaraのAttributeってなんぞや?

取得する前に、「Attributeってなに?」という所から始めます。

NiagaraにおけるAttributeは、Niagaraが持つEmitterやParticleの変数群だと僕は認識しています。
EmitterがどういったAttributeを保持しているのかは、
Attribute Spreadsheet内でCaptureボタンを押すと、現在のAttributeをすべて列挙してくれます。

f:id:yuyasaltcanyon:20191130011224p:plain:w500


列挙されたAttributeを見てみると
現在のColor、SpriteSizeやPositionなど多くの情報が保持されています。
もちろん、自身で追加した変数などもAttributeとして、列挙されます。

Get Niagara Emitter X Attrib

このNiagaraの持つAttributeをBlueprintで取得することができるのが
Get Niagara Emitter X Attribたちです。

それらの関数は3種類しかありません。

  • Get Niagara Emitter Float Attrib
    f:id:yuyasaltcanyon:20191130120545p:plain
  • Get Niagara Emitter Vec3 Attrib
    f:id:yuyasaltcanyon:20191130120534p:plain
  • Get Niagara Emitter Positions
    f:id:yuyasaltcanyon:20191130120557p:plain

    ※これらの関数は、NiagaraEmitter内のParticles.によってくくられた変数のみを返すようです。

    最後のGet Niagara Emitter Positionsのみ取得する値は固定化されていますが、
    その他は、指定したEmitterの持つParticles.と頭についた変数を配列で取得できます。

    具体的には、下画像内の赤枠部分の変数が取得できます。

    f:id:yuyasaltcanyon:20191130130842p:plain:w300

試しにPrintString

NiagaraSystemの用意

デフォルトのテンプレートの1つである
SimpleExplosionをNiagaraSystemとして作成し、使用します。
f:id:yuyasaltcanyon:20191130131844p:plain:w300


BlueprintでAttributeを取得するようにノードを作成する

用意したNiagaraComponentをTargetに
Get Niagara Emitter Float Attribによって
用意したNiagara System内のEmitterであるOmnidirectionalBurstからLifetimeを出力してみます。
f:id:yuyasaltcanyon:20191130132924p:plain:w1000

NiagaraEmitterであるOmnidirectionalBurstのLifetimeは、指定数値間でランダムな値をセットされています。
そのため、出力結果は、バラバラな数値であるはずです。


実際に動かしてみるとしっかりバラバラな数値が出力されました!
f:id:yuyasaltcanyon:20191130133218p:plain:w500

実際にAttributeを取得してみて

これらの関数を使用すると
取得したPositionにNiagaraのSpriteSizeの大きさちょうどのCollisionを生成できたり
様々なことに活用できそうです!

3. 気になる点

さて、お気づきの方がいらっしゃるかもしれませんが、
今回、取り上げた3つのAttributeを取得する関数たち、
ドキュメントを覗いてみるとDebug用の物だったりします。
f:id:yuyasaltcanyon:20191130135244p:plain:w500
docs.unrealengine.com


プレイヤーキャラクターに対してインタラクティブなエフェクトを作成する場合など活用できそうなのですが、
Debug用らしいです。
一応、パッケージングして確認してみましたが、
作成したBlueprintは正しく動作していたので、どうしてDebug用となっているのか、気になる所です...

エフェクトありきのギミックなど、判定用Collision位置更新の使用にとても有用そうなので、
ぜひ活用したいところです...!

おわりに

最後までご覧頂き、ありがとうございました!
明日はcom04さんによる「始めの方だし何か緩いネタを」という内容です!
とても楽しみですね!!!