Niagaraの入門(17) Collisionなどについて

Niagaraの入門(17)

UE4確認バージョン  4.20.1

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

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

Collisionなどについて

パーティクルの当たり判定の処理をして、

摩擦は反発などによってパーティクルの動きを定義するModule関連など

f:id:CrabPunch:20180819144617p:plain

 

 

 

 

CollisionQuery

コリジョンクエリID、位置、法線、摩擦、反発力などを返す。

ライントレース クエリを実行します。
このデータはその後、
CollisionLinearImpulse

CollisionAngularImpulse

にて使用されます。

ParticleFriction

パーティクルの摩擦係数

 

 

 

 

ParticleRestitution

パーティクルの反発係数

 

 

CollisionEnabled

コリジョン判定をするかどうか。

コリジョンクエリが後続のCollisionModuleでCollision.Validを設定するためにはtrueでなければなりません。

 

Bpypass PhysicalMaterialProperties

チェックするとパーティクルの物理的なマテリアルプロパティを無視して、
摩擦係数と反発係数の設定のみを使用します。

 

CollisionSize

パーティクルのコリジョン半径

※Meshなどにしても関係なく、あくまで球体でのコリジョン半径のようです?

コリジョンサイズ大きくしたら球体に球体が乗って停止とかはするけど、、

 

 

 

 

DepthBounds

デプスバッファ(GPU)でのコリジョン判定をおこなう場合の

トレースとバッファの しきい値

 

CollisionLinearImpulse

力積。

反射やランダム。

摩擦により減衰処理などをおこないます。

 

DampenVelocity

衝突時の減衰具合。

 

 

 

 

 

RandomizeCollisionVector

値は0-1の値。

衝突時のランダムベクトルをどれくらいにするかの値。

CollisionAngularImpulse

角力積。

衝突時の回転などを有効にします。

 

 

Dampen

各衝突時に、どの程度の回転エネルギーが保持されるか

 

 

 

 

 

ImpulseStrength

計算された回転軸に

修正する力具合。

 

 

 

 

 

VelocityMagnitudeCutoff

パーティクルが更に回転するかどうかの最小速度

 

 

 

CollisionRest

コリジョンクエリに応答してパーティクルの再調整を処理する

(Rest内部)

ここでRestingフラグがたち

f:id:CrabPunch:20180819152442p:plain

 

 (LinearImpulse内部)

こちらでRestingフラグをみて位置調整をしているようです。

f:id:CrabPunch:20180819152454p:plain

 

SampleCollisionをみてみる

上記のModule情報をもとに、

機能別サンプルのNiagaraのSampleCollisionをみていってみます。

f:id:CrabPunch:20180819152649p:plain

 

Systemを開き、SimpleCollisionのみを有効にします。

白いパーティクルがでており、地面や他のオブジェクトに接触した時に

パーティクルが緑になっています。

f:id:CrabPunch:20180819152746p:plain

f:id:CrabPunch:20180819152858p:plain

 

Colorを見てみると、Particles.HasCollidedが変わった時にEndColorに変更されているのがわかります。

これはCollisionQueryの中で接触判定がされたときに立っていることがわかります。

(CollisionQuery内部の最後のほう)

f:id:CrabPunch:20180819152910p:plain

 

 

 次にSimpleCollisionHitを有効にしてみてみると

SimpleCollisionが接触イベントが発生したときに

スポーンしています。

f:id:CrabPunch:20180819152813p:plain

 

以前お話したAdd Event HandleのLocationEventとほぼ同じですが

SimpleCollisionのほうにイベント発行のGenerateCollisionEventが

 

f:id:CrabPunch:20180819153149p:plain

 

SimpleCollisionHitのほうにイベント受信の

ReceiveCollisionEventが設定されています。

f:id:CrabPunch:20180819153118p:plain

 

 最後のSimpleCollisionStickは上のほうで説明した

BpypassPhysicalMetarialPropertiesが有効になっており、

DampenVelocityやRandomが0にされており、

振り幅のないシンプルなコリジョンの軌跡が確認できます。

f:id:CrabPunch:20180819153212p:plain

f:id:CrabPunch:20180819153224p:plain