흔히 쓰이는 비주얼 이펙트(VFX) 기법은 텍스처와 머티리얼을 2D 카메라 페이싱 평면에 렌더링하는 스프라이트 입니다. 이 튜토리얼에서는 나이아가라 이미터를 구성하여 스프라이트를 작업합니다. 나이아가라 이미터가 포함된 나이아가라 시스템을 레벨에 배치하면 이펙트가 해당 레벨에 표시됩니다.
사전 요구사항:
이 가이드에서는 시작용 콘텐츠(Starter Content) 에 있는 M_smoke_subUV 머티리얼을 사용합니다. 이 머티리얼 또는 시작용 콘텐츠가 프로젝트에 추가되었는지 확인하세요.
프로젝트 구성
우선 콘텐츠 브라우저에 이펙트 에셋을 저장할 새 폴더를 만듭니다. 최상위 레벨(Content)에서 콘텐츠 브라우저(Content Browser) 를 우클릭한 뒤 새 폴더(New Folder) 를 선택합니다. 새 폴더의 이름을 지정합니다(예: SpriteEffect ).
프로젝트에서 여러 개의 나이아가라 이펙트를 생성한다면 NiagaraFX (또는 비슷한 이름의) 폴더를 생성한 뒤 스프라이트 이펙트를 넣을 하위 폴더를 만들면 됩니다.
이 이펙트를 생성하기 전에 이미터의 스프라이트에 사용할 머티리얼을 만들거나 찾아야 합니다. 이 예제에서는 시작용 콘텐츠에서 가져온 머티리얼을 사용합니다. 다른 곳으로 옮기지 않아도 이 머티리얼을 가져올 수 있지만, 경우에 따라 원본을 복사한 뒤 사본을 이펙트를 넣을 폴더 또는 이전에 생성한 별도의 Materials 폴더에 넣어도 됩니다. 단계는 다음과 같습니다.
콘텐츠 브라우저의 검색 바에 `m_smoke`를 입력합니다. 검색 결과에 **M_smoke_subuv** 머티리얼이 표시될 것입니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
다른 폴더에 사본을 넣으려면 머티리얼을 클릭한 뒤 원하는 폴더로 드래그한 다음, 팝업 메뉴에서 여기로 이동(Move Here) 또는 여기에 복사(Copy Here) 를 선택하면 됩니다. 이동(Moving) : 이전 위치에 있는 원본 머티리얼을 삭제하고 새 위치로 옮깁니다. 복사(Copying) : 원본은 그대로 두고 새 위치에 사본을 생성합니다. 스프라이트에 대해 고유한 머티리얼을 생성하려는 경우 문서의 머티리얼 섹션에 있는 페이지를 확인하세요.
시스템 및 이미터 생성
다음은 나이아가라 시스템과 이미터를 생성합니다. 시스템은 하나 이상의 이미터를 배치할 수 있는 컨테이너입니다. 이미터는 생성된 새 파티클의 소스입니다.
우선 콘텐츠 브라우저에서 우클릭한 뒤, 표시된 메뉴에서 FX > 나이아가라 시스템(Niagara System) 을 선택하여 나이아가라 시스템 을 생성합니다. 나이아가라 시스템 마법사가 표시됩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
선택한 이미터에서 나온 새 시스템(New system from selected emitters) 을 선택합니다. 다음(Next) 을 클릭합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
템플릿(Template) 에서 간단한 스프라이트 버스트(Simple Sprite Burst) 를 선택합니다. 더하기 표시(+) 아이콘을 클릭하여 이미터 목록에 이미터를 추가하고 시스템에 추가합니다. 완료(Finish) 를 클릭합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
새 시스템 이름을 SmokeSystem 으로 지정합니다. 더블클릭하여 나이아가라 에디터에서 엽니다.
새 시스템의 이미터 인스턴스 이름은 기본적으로 SimpleSpriteBurst 로 지정되지만 변경할 수 있습니다. 시스템 개요에서 이미터 인스턴스의 이름을 클릭하여 필드를 편집할 수 있습니다. 이미터 이름을 FX_Smoke 로 지정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
렌더러 세팅 변경
이 가이드에서는 스택에 표시되는 이미터 모듈 그룹을 살펴봅니다. 렌더러에서 머티리얼을 설정할 때까지는 프리뷰 또는 레벨에 아무것도 표시되지 않습니다. 우선 시스템 개요(System Overview) 에서 스프라이트 렌더러(Sprite Renderer) 를 선택하여 선택(Selection) 패널에서 엽니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
렌더러에서 이펙트에 사용할 머티리얼을 선택합니다. 머티리얼이 SubUV 머티리얼이므로 이미지 그리드에 있는 이미지의 수를 렌더러에 알려야 합니다. 다음 프로퍼티를 아래의 값으로 설정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
프로퍼티 이름
값
머티리얼(Material)
M_smoke_subUV
서브 이미지 크기(Sub Image Size)
X: 8.0, Y: 8.0
서브 UV 블렌딩 활성화(Sub UV Blending Enabled)
체크됨
SmokeSystem 을 레벨로 드래그합니다.
파티클 이펙트를 만들 때는 항상 시스템을 레벨에 드래그하는 편이 좋습니다. 이렇게 하면 모든 변경과 편집을 레벨에서 볼 수 있습니다. 시스템에서 변경한 내용은 자동으로 레벨의 시스템 인스턴스에 전파됩니다.
이미터 업데이트 그룹 세팅 편집
우선 이미터 업데이트(Emitter Update) 그룹에서 모듈을 편집합니다. 이 동작은 이미터에 적용되며 프레임마다 업데이트됩니다.
시스템 개요(System Overview) 에서 이미터 업데이트(Emitter Update) 그룹을 클릭하여 선택(Selection) 패널로 엽니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
연기의 버스트가 아닌 연기의 열기둥을 생성하고자 합니다. 휴지통(Trashcan) 아이콘을 클릭하여 버스트 순간 스폰(Spawn Burst Instantaneous) 모듈을 삭제합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
더하기 표시 아이콘( + )을 클릭하고 스폰 속도(Spawn Rate) 를 선택하여 스폰 속도 모듈을 이미터 업데이트 그룹에 추가합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
스폰 속도(Spawn Rate) 모듈에서 스폰 속도를 50 으로 설정합니다. 적당한 크기로 부푼 모양의 연기가 만들어집니다. 이펙트를 시작하기에 유용합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
이펙트를 빌드하는 동안 시뮬레이션이 무한히 루프되도록 할 것입니다. 그러면 세팅이 이펙트에 미치는 영향을 평가할 시간이 생깁니다. 이미터 상태(Emitter State) 모듈에서 라이프 사이클 모드(Life Cycle Mode) 드롭다운을 클릭하고 셀프(Self) 를 선택합니다. 루프 행동(Loop Behavior) 드롭다운을 클릭한 뒤 무한(Infinite) 을 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
파티클 스폰 그룹 세팅
다음으로는 파티클 스폰(Particle Spawn) 그룹에서 모듈을 편집합니다. 이 동작은 처음 스폰되었을 때 파티클에 적용됩니다.
시스템 개요(System Overview) 에서 파티클 스폰(Particle Spawn) 그룹을 클릭하여 선택(Selection) 패널에서 엽니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
파티클 초기화(Initialize Particle) 모듈을 펼칩니다. 이 모듈은 관련된 여러 파라미터를 하나의 모듈로 모아서 스택의 복잡성을 최소화합니다. 포인트 어트리뷰트(Point Attributes) 에서 수명(Lifetime) 파라미터를 찾습니다. 이 파라미터는 파티클이 사라지기 전까지 표시되는 시간을 결정합니다. 사실적인 연기 이펙트를 시뮬레이션하기 위해 수명 파라미터에 무작위성을 추가할 것입니다. 수명 모드 는 랜덤(Random) , 최소 수명(Lifetime Min) 은 2 , 최대 수명(Lifetime Max) 은 3 으로 설정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
프로퍼티 이름
값
수명 모드
랜덤
최소
2.0
최대
3.0
스프라이트 파티클의 크기를 조절하고, 연기 이펙트를 더 사실적으로 만듭니다. 기본 번들의 파티클은 작은 편이니 크기를 키웁니다. 스프라이트 파티클이 겹치고 연기 이펙트가 더 일관되도록 크기에 무작위성을 약간 더합니다. 스프라이트 어트리뷰트(Sprite Attributes) 에서 스프라이트 크기(Sprite Size) 파라미터를 찾아 활성화합니다. 스프라이트 크기 모드(Sprite Size Mode) 를 랜덤 균등(Random Uniform) 으로 설정합니다. 최소 및 최대 값을 입력합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
프로퍼티 이름
값
스프라이트 크기 모드
랜덤 균등
균등 스프라이트 최소 크기(Uniform Sprite Size Min)
75
균등 스프라이트 최대 크기(Uniform Sprite Size Max)
200
이제 연기가 더 커졌습니다. 회전을 약간 추가해서 파티클의 모양에 베리에이션을 더합니다. 회전에 무작위성도 추가해서 베리에이션을 더 끌어올립니다. 스프라이트 회전 모드(Sprite Rotation Mode) 옆의 드롭다운을 직접 정규화 각도(0-1)(Direct Normalized Angle (0-1)) 로 설정합니다. 그러면 회전 각도가 도 단위가 아닌 0과 1 사이의 숫자로 계산됩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
스프라이트 회전 각도(Sprite Rotation Angle) 옆의 드롭다운 화살표를 클릭하고 동적 입력(Dynamic Inputs) > 랜덤 범위 플로트(Random Range Float) 를 선택합니다. 그러면 정규화 각도에 최소 및 최대 필드가 추가됩니다. 파티클이 스폰될 때 무작위 수의 각도로 회전합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
최소 및 최대 값을 아래와 같이 설정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
프로퍼티 이름
값
최소
0.25
최대
0.5
연기의 크기가 꽤 괜찮아졌지만, 제자리에서 돌고만 있습니다. 스폰하는 동시에 연기 파티클이 움직여야 하므로 최초 속도를 추가합니다. 더하기 표시 ( + ) 아이콘을 클릭하고 속도(Velocity) > 속도 추가(Add Velocity) 를 선택하여 속도 추가 모듈을 파티클 스폰 그룹에 추가합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
속도 옆에 있는 드롭다운 화살표를 클릭하고 동적 입력(Dynamic Inputs) > 랜덤 범위 벡터(Random Range Vector) 를 선택합니다. 그러면 속도에 최소 및 최대 필드가 추가됩니다. 이번에도 약간의 무작위성이 이펙트에 베리에이션과 자연스러움을 더합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
최소 및 최대 속도 값을 아래와 같이 설정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
프로퍼티 이름
값
최소
X: 0, Y: 0, Z: 50
최대
X: 1, Y: 1, Z: 200
모양 위치는 모양과 스프라이트가 스폰되는 원점을 제어합니다. 모양 위치(Shape Location) 모듈을 추가하면 스프라이트를 여러 모양 프리미티브에서 스폰할 수 있습니다. 더하기 표시(+) 아이콘을 클릭하고 위치(Location) > 모양 위치 를 선택하여 모양 위치 모듈을 파티클 스폰 그룹에 추가합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
모양 프리미티브(Shape Primitive) 를 스피어(Sphere) 로 설정합니다. 반경을 표시하여 스피어 모양의 크기를 설정할 수 있습니다. 스피어 반경(Sphere Radius) 을 64로 설정합니다. 구체 분포(Sphere Distribution) 는 랜덤(Random) 으로 설정해야 합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
이 연기 이펙트에 사용하는 스프라이트 머티리얼은 스프라이트 시트를 사용하며, 여기에는 함께 연결되어 애니메이팅되도록 설계된 여러 이미지가 포함되어 있습니다. 이 사항을 고려하지 않으면 렌더러에서 시트의 첫 번째 스프라이트만 사용하게 됩니다. 서브 UV 애니메이션(SubUV Animation) 모듈을 추가하여 이 문제를 해결할 수 있습니다. 파티클 스폰의 더하기 표시(+) 아이콘을 클릭하고 서브 UV(Sub UV) > 서브 UV 애니메이션(SubUV Animation) 을 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
서브 UV 애니메이션 모듈에서 서브 UV 애니메이션 모드(SubUV Animation Mode) 드롭다운을 클릭하고 선형(Linear) 을 선택합니다. 시작 프레임(Start Frame) 에는 0 , 종료 프레임(End Frame) 에는 63 을 입력합니다. 스프라이트 시트에는 8x8 이미지 그리드가 있으므로 총 이미지 수는 64입니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
파티클 업데이트 그룹 세팅
이제 파티클 업데이트(Particle Update) 그룹에서 모듈을 편집합니다. 이러한 행동은 파티클에 적용되어 각 프레임을 업데이트합니다.
시스템 개요(System Overview) 에서 파티클 업데이트(Particle Update) 그룹을 클릭하여 선택(Selection) 패널로 엽니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
파티클 스폰에서 속도를 추가했으므로 파티클이 처음 스폰되었을 때 약간 움직일 수 있습니다. 이제 시간에 따른 움직임을 추가하고 연기를 띄울 것입니다. 이제 시간에 따른 움직임을 추가하고 연기를 띄울 것입니다. 파티클 업데이트 의 더하기 표시 ( + ) 아이콘을 클릭하고 힘(Forces) > 가속 힘(Acceleration Force) 을 선택하여 가속 힘 모듈을 추가합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
X , Y 값은 0 , Z 값은 500 으로 설정합니다. 그러면 시간이 지나면서 연기가 위쪽으로 움직입니다. 생성하려는 연기 이펙트의 유형에 따라 이 세팅을 조절하거나, 이 모듈을 제거할 수도 있습니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
시스템에서 연기 이미터를 재사용하려면 별도의 에셋으로 저장하면 됩니다. 기어(Gear) 아이콘을 클릭하여 이미터 세팅(Emitter Settings) 메뉴를 열고, 여기에서 에셋 생성(Create Assset From This) 을 선택합니다. 그러면 독립된 나이아가라 이미터 에셋이 생성됩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
저장(Save) 버튼을 클릭하여 변경사항을 적용하고 저장합니다.
최종 결과
축하합니다! 스프라이트를 사용하여 간단한 연기 이펙트를 생성했습니다.