Niagaraの入門(10) Add Event Handlerについて

Niagaraの入門(10)

UE4確認バージョン  4.20.0

※なおこの段階ではNiagaraはアーリーアクセスなので

※今後内容がかわるかもしれないのでご注意ください

 Add Event Handlerについて

EmitterのAddEventHandlerについてですが、

はまりました、、、どはまりしました、、、

Emitterのパーティクルからパーティクルへのイベント通知だと

思っていたのですが

f:id:CrabPunch:20180726230809p:plain

 そもそもここのSourceの指定の仕方がわからず、かなり時間を食いました。

 

プログラムをみてみると

f:id:CrabPunch:20180726230905p:plain

となっており、どうやらEmitterを指定するもののようです。

つまりAddEventHandlerとはEmitterから別Emitterへのイベント通知のようです。

(正確には違いますが、後に記載)

 

作成の流れ

手順1

まず新規にEmitterを名前をparentEmitterとして作成します。

中身はいつものシンプルな赤いスプライトのみとしてから

Moduleを設定します。

f:id:CrabPunch:20180726231326p:plain

 

手順2

ParticleUpdateにGenerateLocationEventのModuleを追加します。

f:id:CrabPunch:20180726231524p:plain

 以下、動画のような赤いスプライトが円周の動きをするようになります。

 

 

手順3

次に別のEmitterを作成し、名前をchildEmitterとして作成します。

中身は新規作成したままの状態で、colorだけ青色にします。

手順4

childEmitterにAddEventHandlerを追加して以下のように設定します。

f:id:CrabPunch:20180726232148p:plain

  以下、動画のように青いスプライトが複数飛び出すような動きをするようになります。

 

手順5

Systemを作成してparentEmitterとchildEmitterを追加します。

f:id:CrabPunch:20180726232400p:plain

 

手順6

system内のchildEmitterを選択して、

EventHandlerPropertiesの

Sourceから[ParentEmitter][LocationEvent]

が選べるようになっているので、選択します。

f:id:CrabPunch:20180726232511p:plain

 

手順7

EventHandlerProperties内の設定を以下のようにします。

f:id:CrabPunch:20180726232736p:plain

次にEventHandlerPropertiesの横の+からReceiveLocationEventを選び。

ReceiveLocationEventのinheritedVelocityScaleを0.25とします。

 

f:id:CrabPunch:20180726232928p:plain

手順8

最後にchildEmitterのEmitterUpdateのSpawnRateを無効にします。

f:id:CrabPunch:20180726233055p:plain

完成

 

 

 

 EventModuleについて

EventHandlerProperties

イベントの通知方法の設定

f:id:CrabPunch:20180727055750p:plain

ExecutionMode

通知先の対象

・EveryParticle

System内の全てのパーティクル


・SpawnedParticles

イベントによってスポーンしたパーティクルにのみ


・SingleParticle

IDにて指定した1つのパーティクルにのみ

 

MaxEventsPerFrame

フレーム内でのイベント通知の生成の上限を設定します。

上限を超えた場合は無視されます。

 

SpawnNumber

ExecutionModeがSpawnedParticlesの場合

いくつパーティクルを生成するか指定できます。

またrandomSpawnNumberがチェックされている場合は

この値をランダムの上限とします。

 

RandomSpawnNumber

スポーンさせるパーティクルの数をランダムにするか。

 

GenerateLocationEvent

親パーティクルでの

位置イベントの送信に対する設定。

親パーティクルから子パーティクルへどの程度の頻度やタイミングで

イベントを送信するかなど。

f:id:CrabPunch:20180727055812p:plain

EventCondition

位置イベントを送信するかどうか。

 

EventSendRate

1秒間にどれだけイベントを送信するか

指定した数を1秒間に均等に送信します。

下限は0.000001

 

GapCorrectionAmount

イベント遅延を考慮し、フレーム位置を先行させます。

これは前回からの経過時間が考慮された近似値となります。

その結果、Ribbonなどのねじれなどが生じることがあります。

 

ReceiveLocationEvent

子パーティクルでの

位置イベントの受信時の設定。

 

 

f:id:CrabPunch:20180727055945p:plain

 

 

InheritedVelocityScale

どの程度親パーティクルの速度の影響をうけるか。

 

InheritedParentNormalizedAge

親パーティクルのlifetimeを受信します。これは親パーティクルが消失したときなど、

子パーティクルも同じように消す時になどに役立ちます。