[Unreal]언리얼 나이아가라 회전 모듈 제작 / Niagara Create rotation module

2020. 11. 2. 17:34unreal/Unreal Niagara

.

We have been asked to require a world map in 3D with an open area covered by fog.

 

 

We had to use a very large amount of particles to represent the rich cloud volume.

 

 

 

it was can't guaranteed the game frame in case Using cascade

So we tried to use the Niagara system.

 

 

The  movie only solves technical issues, Anyway we figured out that a large number of particles can be used.

 

 

This world map has three visual directing parts.

1. Cloud of edge

This part include a material expression that fades out on the inside to represent the clouds formed on the outer part

 of the earth.

 

Fade Out material exprss using DotPruduct + Depth Fade

 

2. Cloud vortex

vortex module is already prepared in niagara's base asset
but we crafting new module,  reason is team need another(can not be express) vortex motions

 

It was a motion that reversed the normal vortex motion that gathered while rotating around a point.

 

 

This module was created exclusively to create this type of motion, and the idea was taken from the method used to create the material that was scattered upon death.

 

참고영상

 

bigflash0913.tistory.com/18

 

영상에서 구현된 것처럼 특정지점을 중심으로 회전하는 모션을 갖고 있는 부분을 제작합니다.

 

it is base vortex motion 
particles rotation around center(0, 0, 0)(this module worked on local space)
parameter name "DistanceDecrese" is distance between center & particle 
decrese that value passed by normaized particle age
result is rotating and Gathered to a point(center)

 

specific, "vortex acceleration" is received random float from particle spawn stage it was not update data

 

Rotation Motion 

 

it was based on my death material

 

link -bigflash0913.tistory.com/18

 

Unreal material _ Death & spawn Effect

we trying to create a death or spawn effect like using a particle effect using only the material. step 1. create default material&alpha.. some works (skip) 2. create Rotation motio..

bigflash0913.tistory.com

in the image above, I is same as "distance decrease"

 

now set material look like cloud, we got cloud or dust vortex

- CustomRotation Nodeversion

3. inner cloud

 

The special part of my cloud is that it acts open.
We didn't consider using collisions in the first place, because we were trying to use a huge number of particles.

(Particle collisions use some computing power.)

 

Also, it is difficult to control the movement of particles after collision.

 

 

beforehand we write location of area because opening event's location is static 
therefore if we have 6 events attach 6 modules

 

i know it was awful system , but no ather choice in base on 'hlsl'  to not support loop (even can't use array)

 

In summary, because the calculated in gpu

 

anyway, we need 6 point area calculate module, so ...

area calculate module's parameter name of "AreaStatus_01" is receive data from blue print or game system(C++)
those parameter actually act lerp function(0 to 1)

 

target point is open event location

another parameters is prepared to visual expression

 

'areastatue_01' parameter's value is move to 1 when triggered event(for example click ui or something,,)
it meaning about increasing particle negative area

 

it will pushing particles at vector direction if particles located in the area

look like the ground is gradually discovered under the clouds.

 

 

my distance < max distance  true -->apply new motion 

                                       false --> none

 

 

According to the above conditional

 

Each tick increases the'maximum distance' value, increasing the area the particle is pushed in the vector direction.

Others, such as blending between a value and a value, fade out in a push motion, etc., were not functionally important for visual effects.

 

And when the cloud goes out of the area, it stops naturally and gather, giving you a feeling of being pushed.

 

 

All that's left is to use Blueprints to control camera walking or ui.