언리얼 5

231012 나이아가라 (스프라이트) / 벡터 필드

슬뷔 2023. 10. 12. 10:41

sprite 애니메이션 형태의 나이아가라 (폭발형태) => 퍼포먼스적으로 이득을 볼 수 있다 (연산량이 적음)

 

NS_Explosion  에 사용할 머티리얼 MT_SpriteAnim 생성

NS_Explosion

  • 이미터 업데이트

Emitter State -> Life Cycle Mode Self 로 변경 -> Loop Behavior Infinite 로 변경

* 한 번만 나오는 효과를 하려면 Once 선택.

Spawn Burst Instantaneous 추가 -> 입자 1개만 할 거라서 카운트 1 로 설정

* 개수는 변경해도 됨!

  • 파티클 스폰

Initialize Particle -> Lifetime Mode -> Random 4 ~ 8 로 설정

Initialize Particle -> Sprite Attributes -> Sprite Size Mode -> Random Uniform -> 200 ~ 800

* 랜덤한 효과를 주기 위해

Shape Location 추가 -> Shape Primitive Box / Plane 으로 변경 -> 박스 사이즈 변경

 

  • 파티클 업데이트

Sub UVAnimation 추가 -> Setup 에서 프레임 0 ~ 90 으로 변경 -> Sprite Renderer 선택

  • 렌더

스프라이트 렌더러 -> 스프라이트 랜더링 -> 머티리얼 -> MT_SpriteAnim 으로 설정

스프라이트 렌더러 -> 서브 UV -> 서브 이미지 크기 변경

 

  • 결과


벡터 필드 ( 공간 안에 힘의 흐름(방향)을 맵핑 ) 

입자에 주어질 힘을 데이터 형태로 나타낸 것

입자가 벡터필드에 닿게 되면 그 방향으로 입자가 움직이게 된다.

https://docs.unrealengine.com/4.27/ko/RenderingAndGraphics/ParticleSystems/VectorFields/

 

벡터 필드

벡터 필드에 대한 개요, GPU 스프라이트와 어떻게 작동하는가에 대한 문서입니다.

docs.unrealengine.com

 

1. 블랜더 다운

2. Addons 설치

https://github.com/isathar/Blender_UE4_VectorFieldEditor

 

GitHub - isathar/Blender_UE4_VectorFieldEditor: Blender addon that adds support for working with 3D vector fields using the FGA

Blender addon that adds support for working with 3D vector fields using the FGA file format. - GitHub - isathar/Blender_UE4_VectorFieldEditor: Blender addon that adds support for working with 3D ve...

github.com

3. Edit -> Preferences -> Add-ons -> vector 검색 -> 활성화

4. vf_editor.py

33번째 78번째 줄 int() 로 형변환 해준다.

 

5. Particle Simulation 

Scale 0.25 로 변경, Particle Lifetime 64 로 변경 후 Generate 

6. 좌측 상단에 Add -> Force Field -> Turbulence

 

언리얼로 돌아와서 NS_Test 복제한 것 ( NS_Test1 ) 을 수정한다.

Apply Vector Field 를 추가하면, Sample Vector Field 를 반드시 추가해야한다.

Sample Vector Field 옵션

타일 x y z => 필드가 무한히 반복되는 ? 느낌.. 

ApplyFallOff

 

Apply Vector Filed 옵션

tightness 가 1에 가까울수록 벡터필드를 정확히 따라간다

 

Field Translate

시뮬레이션 포지션 -> 플레이어 포지션 으로 변경해야한다. (변수가 필요)

 

파라미터 -> 사용자 노출값 -> 새로 만들기 -> 일반 -> Vector -> Player Position 생성

링크인풋 -> 사용자 -> Player Position

BP_NiagaraEffect 생성 ( 액터 상속 )

추가 -> Niagara 검색 -> Niagara Particle System Component 해서 Root 밑에 둔다

Niagara 클릭해서 나이아가라의 시스템 에셋을 NS_TEST1 으로 설정한다

 

플레이어 위치를 매 틱마다 받아와야하기 때문에 Tick 이벤트 설정


NS_Test1 복제해서 NS_Test2 생성 ( 벌레 막 나오는 느낌 .. ? )

프로퍼티

시뮬레이션 타깃 CPU Sim, 바운드 계산 모드 Dynamic 로 변경

* 충돌을 사용해야되기 때문에

파티클 스폰

Initialize Particle -> Mesh Attributes -> Mesh Scale Mode Uniform 으로 변경 -> 3배 정도..?

* sprites 가 아니고 매쉬니까 mesh attributes 에서 값 조정해주어야한다

 

파티클 업데이트

Collision 추가

Gravity Force 추가

 

렌더

메시 렌더러로 변경

메시 Brave_ladybug 설정 

페이싱 모드 Velocity 로 하면 바라보는 방향으로 움직인다


나이아가라를 이용해서 이동? 하는 애니메이션 느낌 만들기

랜더러 제거