//! 해당 튜토리얼은 UE4.23.1 버전에서 작성되며 나이아가라는 아직 베타 상태이므로 추후에 내용이 다르거나 변경될 수 있습니다.

 

 


이미터(Emitter) 기본 구조

이미터는 크게 섹션(Section)모듈(Module) 개념으로 돌아가는 메커니즘입니다.

각 섹션은 특정 동작(Spawn, Update)을 실행하며 해당 역할에 맞는 섹션에 모듈을 장착하는 형태로 사용합니다.

 

 

 


용어 설명

본론으로 넘어가기 전에 몇 가지 인지 해야할 용어들이 몇개 있습니다.

 

-섹션(Section)

특정 동작을 실행하는 구분 폴더 개념으로 모듈을 넣어서 사용

 

 

-모듈(Module)

모듈 스크립트를 작성한 파일을 모듈이라고 하며 파티클의 색상, 위치 등 이미터의 동작을 설정

 

 

-입력(Input)

거의 모든 모듈에는 입력값이 존재합니다.(예 : Lifetime, Velocity 등)

모듈 내부의 값을 설정하는 부분의 우측에 작은 하단 화살표가 있는데 해당 화살표를 누르면 입력값의 형태를 변경 할 수 있습니다.

예를 들어 위 사진과 같이 파티클의 생명시간을 단일로 입력하거나, Min~Max값 사이로 설정할 수 있습니다.

 

 

 

-이미터(Emitter)와 파티클(Particle)

파티클은 입자라고 하여 위 사진에서 뿌려지는 하나하나의 오브젝트이고

이미터는 파티클을 생성하는 발사기입니다.

 

 

 

 


섹션(Section)

섹션의 구성은 아래 사진과 같습니다.

크게 이미터, 파티클, 렌더로 구분되며 해당 섹션에 맞는 모듈을 설정할 수 있습니다.

 

-이미터 스폰(Emitter Spawn) : 이미터가 최초 시작될때 해당 섹션이 실행됩니다.

-이미터 업데이트(Emitter Update) : 매 프레임마다 해당 섹션이 실행됩니다.(이미터 제어 관련 모듈을 사용합니다)

 

-파티클 스폰(Particle Spawn) : 파티클이 생성될 때 해당 섹션이 실행됩니다.

-파티클 업데이트(Particle Update) : 매 프레임 마다 해당 섹션이 실행됩니다.(파티클 제어 관련 모듈을 사용합니다)

-이벤트 핸들러 추가(Add Event Handler) : 파티클의 충돌 혹은 이벤트(다른 파티클 죽음 등)가 발생했을때 해당 섹셩이 실행됩니다.

 

-렌더(Render) : 이미터의 렌더링 종류 및 설정 할 수 있는 섹션입니다.(예 : Mesh 파티클 등)

 

 

 


간단한 이미터 만들기

 

-이미터 생성

위 순서대로 이미터 1개를 생성합니다.

 

 

-렌더 섹션 세팅

우선 이미터의 렌더타입을 설정해야합니다, 저는 Mesh 타입의 렌더러를 설정하겠습니다.

 

Mesh타입이기에 Static Mesh 파일을 1개 준비를 하고,

마테리얼은 Opaque, Unlit 설정으로 간단하게 Particle Color 노드를 출력하게 만들었습니다.

 

MeshRenderer모듈에 준비한 StaticMesh와 Material을 위와 같이 설정합니다.

 

 

 

-이미터 섹션 세팅

먼저 "이미터 스폰"섹션의 "이미터 프로퍼티" 모듈에서 Sim Target 설정을 통해 CPU/GPU 시뮬레이션 모드를 변경할 수 있습니다.

GPU시물레이션이 더 좋은 성능을 보장할 수 있습니다.

 

다음 "이미터 업데이트" 섹션에서 "+"버튼을 눌러 Emitter Life Cycle 모듈을 추가합니다.

 

이 모듈은 이미터의 생명, 반복 등 기본 세팅을 관리하는 필수 모듈입니다.

 

다음 Spawn Rate 모듈을 추가합니다.

파티클을 생성하는 방법에 관련된 모듈이며 해당 모듈은 초당 파티클 생성시키는 기능이 있습니다.

 

 

 

-파티클 섹션 세팅

파티클 스폰 섹션을 설명하기전에 이미터 에디터에 파라미터 탭이 있습니다.

처음에는 비어있는데 앞서 추가한 모듈에 의해서 자동적으로 파라미터 요소들이 생긴 것을 확인 할 수 있습니다.

 

나이아가라 이미터에는 이미터를 세팅하기 위한 수 많은 파라미터들이 존재합니다.(예 : Particle.Lifetime, Particle.Color 등)

앞서 추가한 모듈 스크립트에서 사용되는 파라미터가 있으면 자동으로 추가되어 위 현상이 일어나게 된것입니다.

 

모듈을 사용하는 것이 아닌 파라미터를 직접 생성하여 값을 세팅할 수 있습니다.

 

 

파라미터 패널에서 파티클의 "+"을 눌러 "Particle.Lifetime"을 추가합니다.

 

위 사진 처럼 추가한 파라미터를 드래그앤드롭으로 파티클 스폰 섹션에 배치합니다.

(위 동작은 파티클 스폰의 "+"버튼을 통해서 추가할 수 도 있습니다.)

 

위 처럼 세팅을 하면 파티클이 스폰될때 파티클의 생명시간을 5.0초로 설정한다는 뜻이 됩니다.

 

여기까지 세팅하면 파티클이 출력이 됩니다.

 

파티클이 겹쳐있으니 움직이게 만들어 보겠습니다.

 

 

"Add Velocity"모듈을 추가하니 에러가 발생합니다.

"이슈 고침"을 누르면 해결됩니다, 에러의 이유는 해당 모듈이 작동하기 위해 다른 모듈이 필요할 때 발생합니다.

 

하지만 아직 파티클이 움직이지 않습니다.

 

"파티클 업데이트" 섹션에서 "Solve Forces and Velocity" 모듈을 추가해야합니다.

해당 모듈은 파티클이 운동에너지 계산을 돌아가게 해주는 모듈입니다.

 

Add Velocity 모듈의 값을 넣어주니 움직이는 것을 확인 할 수 있습니다.

 

더 다이나믹하게 움직이게 해보겠습니다.

 

 

Velocity값 설정 부분의 하단 화살표를 누르고 "Uniform Ranged Vector"를 설정하면  Min~Max사이의 렌덤 값을 Velocity값에 넣을 수 있습니다.

이것을 "Dynamic Input"이라고 하고 이것 또한 나이아가라의 핵심 기능입니다, 나중에 포스팅하겠습니다.

 

 

 


응용 결과물

Niagara_2.7z
0.61MB

이번 포스팅에서 소개한 기능을 응용해서 만든 결과물입니다. 프로젝트를 생성하시고 Content폴더에 첨부파일을 넣으면 됩니다.


WRITTEN BY
CatDarkGame
Technical Artist dhwlgn12@gmail.com

,