이 튜토리얼에서는 불꽃 비주얼 이펙트(VFX)를 제작하고, 이를 레벨의 함정에 추가하는 방법을 학습합니다.
시작하기 전에
이 트랙의 머티리얼 및 머티리얼 인스턴스 생성 단원에서 다루는 머티리얼 생성 방법을 충분히 이해하고 있어야 합니다.
이 튜토리얼에서는 다음과 같은 에셋을 사용하게 됩니다.
BP_FireTrap 블루프린트
나이아가라 개요
나이아가라 VFX 시스템은 언리얼 엔진에서 비주얼 이펙트를 제작하는 데 사용되는 주요 툴입니다. 이 시스템에는 커스터마이징하여 레벨에 바로 배치할 수 있는 다양한 사전 제작 비주얼 이펙트가 포함되어 있습니다. 자신만의 비주얼 이펙트를 직접 생성하여 원하는 대로 커스터마이징할 수도 있습니다.
나이아가라에 대한 자세한 내용은 나이아가라 개요 문서를 참고하세요.
나이아가라 시스템 생성하기
이제 일반 이미터를 사용하는 첫 번째 나이아가라 시스템을 생성해 보겠습니다. 새 나이아가라 시스템을 생성하려면 다음 단계를 따릅니다.
콘텐츠 브라우저에서 콘텐츠(Content) > AdventureGame > Artist 폴더로 이동합니다. 'Artist' 폴더를 우클릭하고 새 폴더(New Folder)를 선택합니다. 이름을 VFX로 명명합니다.
새로 만든 VFX 폴더에서 에셋 영역의 아무 곳이나 우클릭하고 FX로 이동하여 나이아가라 시스템을 선택합니다.
나이아가라 시스템 생성(Create Niagara System) 창이 열립니다. 여기에서 비주얼 이펙트의 베이스로 사용할 이미터 또는 시스템을 선택할 수 있습니다.
시스템을 선택하면 하나 이상의 이미터를 사용하는 나이아가라 시스템이 생성됩니다. 이미터를 선택하면 단일 이미터를 사용하는 나이아가라 시스템이 생성됩니다.
Hanging Particulates 이미터를 선택하고 생성(Create)을 클릭합니다.
이 에셋의 이름을 NS_HangingParticles로 명명하고 엽니다.
NS_HangingParticles 창에는 NS_HangingParticles와 HangingParticulates라는 두 개의 노드가 표시됩니다.
NS_HangingParticles 노드는 시스템 노드로, 전체 시스템의 프로퍼티(Properties) 같은 옵션과 시스템 스폰(System Spawn) 및 시스템 업데이트(System Update)라는 두 스테이지를 보여줍니다. 이 스테이지에는 언리얼 엔진이 시스템을 생성하는 시점(스폰)과 시스템이 활성 상태인 동안(업데이트) 실행될 모듈을 추가할 수 있습니다.
HangingParticulates 노드는 이미터입니다. 이 노드는 파티클이 생성되고 렌더링되는 방식을 정의합니다.
노드가 표시되는 시스템 개요(System Overview) 그래프에서 아무 곳이나 우클릭하면 이 시스템에 새 이미터를 추가할 수 있습니다. 또는 단축키 E 키를 사용하여 새 이미터를 추가할 수 있습니다.
새 이미터를 추가하면 시스템에 이미터 추가(Add Emitter to your System) 창이 열립니다. 이 창은 이전에 시스템을 생성할 때 사용한 창과 유사하지만, 이미 시스템을 생성했기 때문에 사용 가능한 베이스 이미터만 표시됩니다. 이 예시에서는 다른 이미터를 추가하지 않고 창을 닫습니다.
HangingParticulates 이미터에는 작은 먼지 입자와 유사한 파티클 비주얼 이펙트를 생성하는 사전 정의된 모듈이 포함되어 있습니다. 창의 왼쪽 상단에 있는 프리뷰(Preview) 패널에서 이펙트를 확인할 수 있습니다.
이제 이 이미터의 스폰 속도를 높여 생성되는 파티클 수를 증가시킵니다. 다음 단계를 따르면 됩니다.
HangingParticulates 노드를 선택합니다.
디테일(Details) 패널에서 스폰 속도(Spawn Rate) 카테고리로 이동합니다.
스폰 속도 필드 값을 250으로 변경합니다.
이미터에서 스폰 속도 모듈을 선택하면 '디테일' 패널에 해당 모듈과 관련된 옵션만 표시됩니다.
이제 프리뷰 패널에서 훨씬 더 많은 파티클이 렌더링되는 것을 확인할 수 있습니다.
창 하단에는 시스템을 애니메이팅하는 데 사용되는 타임라인이 표시됩니다. 일시정지(Pause) 또는 재생(Play) 버튼을 눌러 프리뷰를 제어할 수 있습니다.
이제 이 시스템을 레벨에 추가하여 실제 컨텍스트에서 확인합니다. 다음 단계를 따르면 됩니다.
콘텐츠 브라우저에서 NS_HangingParticles 에셋을 생성한 Adventure Game > Artist > VFX 폴더로 이동합니다.
NS_HangingParticles 에셋을 월드에 드래그합니다. 이제 레벨에서 시뮬레이션되는 비주얼 이펙트를 확인할 수 있습니다.
화염 이펙트 생성
이 섹션에서는 함정을 위한 화염 이펙트를 생성합니다.
머티리얼 생성
애니메이팅된 화염 이펙트를 생성하기 위해, 연속으로 표시하면 불꽃이 움직이는 것처럼 보이는 여러 개의 스틸 이미지가 포함된 텍스처를 사용합니다. 이 타입의 텍스처를 서브 UV 텍스처라고 하며, 머티리얼이나 나이아가라 이미터를 통해 애니메이션을 적용할 수 있습니다.
먼저 제공된 불꽃 텍스처를 사용하여 머티리얼을 생성합니다. 다음 단계를 따르면 됩니다.
콘텐츠 브라우저에서 AdventureGame > Artist > Materials 폴더로 이동합니다.
빈 공간을 우클릭하고 머티리얼을 생성합니다.
이 에셋의 이름을 M_Fire_SubUV_Simple로 명명하고 엽니다.
머티리얼을 구성하려면 다음 단계를 따릅니다.
디테일 패널의 머티리얼(Material) 카테고리에서 다음을 수행합니다.
블렌드 모드(Blend Mode)를 반투명(Translucent)으로 변경합니다.
셰이딩 모델(Shading Model)을 언릿(Unlit)으로 변경합니다.
머티리얼 에디터에서 우클릭하고 ParticleSubUV 노드를 생성합니다.
Particle SubUV 노드를 선택하고 디테일 패널에서 텍스처(Texture)를 T_Fire_SubUV 파일로 변경합니다.
Particle SubUV 노드에서 RGB 핀을 드래그하여 Multiply 노드(수학(Math) 카테고리 아래)를 추가합니다.
Multiply 노드의 출력 핀을 드래그하여 M_Fire_SubUV_Simple 노드의 이미시브 컬러(Emissive Color) 입력에 연결합니다.
Particle SubUV 노드 아래의 빈 공간을 우클릭하고 Particle Color 노드(파티클(Particles) 카테고리 아래)를 추가합니다.
해당 노드의 RGB 출력 핀을 드래그하여 Multiply 노드의 B 입력 핀에 연결합니다.
Particle SubUV 노드에서 R 출력 핀을 드래그하여 새 Multiply 노드를 추가합니다.
Particle Color 노드에서 A 출력 핀을 드래그하여 새로운 Multiply 노드의 B 입력 핀에 연결합니다.
새 Multiply 노드에서 출력 핀을 드래그하여 Clamp 노드를 추가합니다.
Clamp 노드에서 출력 핀을 드래그하여 Depth Fade 노드를 추가합니다.
Depth Fade 노드에서 페이드 거리(FadeDistance) 필드를 60으로 변경합니다.
Depth Fade 노드에서 출력 핀을 M_Fire_SubUV_Test 노드의 오파시티(Opacity) 입력 핀에 연결합니다.
이제 머티리얼 프리뷰가 다음과 비슷한 모습이 됩니다.
이 머티리얼은 나이아가라 시스템에서 전달되는 Particle Color로 컬러가 지정된 ParticleSubUV 텍스처의 셰이프를 이미시브 컬러로 설정합니다. 오파시티는 Particle Color의 '알파(Alpha)', 즉 투명도 값을 사용하여 설정되며 0~1 범위로 정규화됩니다. 마지막으로, 레벨 내 인접한 지오메트리와 오버랩(클리핑)되는 파티클을 숨기기 위해 DepthFade 노드를 사용합니다.
나이아가라 시스템 생성
다음으로는, 불꽃 비주얼 이펙트를 생성하는 나이아가라 시스템을 생성해 보겠습니다. 화염 이펙트에는 경량형, 즉 스테이트리스 이미터를 사용합니다. 이러한 이미터는 기존의 스테이트 기반 이미터보다 퍼포먼스 측면에서 최적화되어 있지만, 사용할 수 있는 모듈 세트가 제한되어 있습니다.
경량형 이미터에 대해 자세히 알아보려면 나이아가라 경량형 이미터 개요 문서를 참고하세요.
새 나이아가라 시스템을 생성하려면 다음 단계를 따릅니다.
콘텐츠 브라우저에서 AdventureGame > Artist > VFX 폴더로 이동합니다.
빈 공간을 우클릭한 다음 FX로 이동하고 나이아가라 시스템(Niagara System)을 선택합니다.
목록에서 Minimal Lightweight를 선택한 다음 생성을 클릭합니다. 창 상단의 검색 필드를 사용하여 시스템을 찾을 수도 있습니다.
이 에셋의 이름을 NS_LW_Fire로 명명하고 엽니다.
다음으로는, 이미터의 모듈을 구성해 보겠습니다. 다음 단계를 따르면 됩니다.
Minimal 이미터 노드를 선택합니다.
디테일 패널의 이미터 스테이트(Emitter State) 카테고리에서 루프 기간(Loop Duration)을 5.0 s로 변경합니다.
즉시 버스트 스폰(Spawn Burst Instantaneous) 카테고리에서 다음을 수행합니다.
즉시 버스트 스폰 제목 옆의 타입(Type) 드롭다운을 클릭하고 값을 속도(Rate)로 변경합니다. 이렇게 하면 즉시 버스트 스폰 모듈이 스폰 속도 모듈로 변경됩니다.
스폰 속도 필드 타입을 바인딩(Binding)으로 변경합니다.
창 왼쪽 하단에 있는 사용자 파라미터 패널로 이동합니다. '사용자 파라미터(User Parameters)' 카테고리 옆의 더하기 버튼을 클릭하여 새 파라미터를 추가합니다.
새로 만들기(Make New) > 일반(Common) > 플로트(float)를 선택합니다.
이 파라미터의 이름을 FireSpawnRate로 명명합니다.
FireSpawnRate 파라미터 값을 20으로 변경합니다.
Minimal 이미터를 선택하고 디테일 패널에서 드롭다운을 사용하여 스폰 속도 필드 값을 FireSpawnRate로 변경합니다.
이미터를 선택한 상태에서 디테일 패널의 파티클 초기화(Initialize Particle) 카테고리로 이동하고 수명(Lifetime) 필드를 5.0 s로 변경합니다.
이미터에서 시뮬레이션(Simulate) 스테이지 옆의 더하기 버튼을 눌러 셰이프 위치(Shape Location) 모듈을 추가합니다.
새 모듈을 추가하면 기본적으로 해당 모듈이 선택되며, 디테일 패널에는 해당 모듈과 관련된 프로퍼티만 표시됩니다. 이미터를 선택하면 모든 모듈의 프로퍼티가 표시되고, 단일 모듈을 선택하면 해당 모듈의 프로퍼티만 표시됩니다.
새 모듈을 선택한 다음 디테일 패널에서 셰이프 프리미티브(Shape Primitive)를 평면(Plane)으로 설정합니다. 이렇게 하면 불꽃 파티클이 평평한 평면 위에 분포됩니다. 원한다면 평면 크기(Plane Size)를 줄일 수 있지만, 이 튜토리얼에서는 100 x 100으로 유지해도 됩니다.
이미터의 시뮬레이션 스테이지에서 속도 추가(Add Velocity) 모듈을 추가합니다.
해당 모듈을 선택한 후 디테일 패널에서 다음을 수행합니다.
속도(Velocity)를 비균등 범위(Non-uniform Range)로 설정합니다.
속도 필드의 최소 Z(Min Z) 값을 5로, 최대 Z(Max Z) 값을 10으로 설정합니다. 이렇게 하면 파티클이 천천히 위쪽으로 이동합니다.
이미터의 시뮬레이션에서 컬러 스케일 조절(Scale Color) 모듈을 추가합니다.
해당 모듈을 선택하고 디테일 패널에서 스케일(Scale) 타입을 컬러 범위(Color Range)로 설정합니다.
최소(Min) 컬러 필드를 클릭하고 16진수 sRGB(Hex sRGB)를 FFA91300으로 변경합니다.
최대(Max) 컬러 필드를 클릭하고 16진수 sRGB를 FF4747FF로 변경합니다.
이렇게 하면 각 파티클의 컬러가 설정됩니다.
이미터의 시뮬레이션에서 스프라이트 크기 스케일 조절(Scale Sprite Size) 모듈을 추가하고 범위를 5, 8로 설정합니다. 이렇게 하면 파티클의 크기가 훨씬 더 크게 조정됩니다.
이미터의 시뮬레이션에서 서브 UV 애니메이션(Sub UV Animation) 모듈을 추가합니다.
이미터의 렌더(Render) 카테고리에서 스프라이트 렌더러(Sprite Renderer) 모듈을 선택합니다.
디테일 패널에서 다음과 같은 필드를 업데이트합니다.
머티리얼을 앞에서 생성한 M_Fire_SubUV_Simple 머티리얼로 변경합니다.
정렬(Alignment)을 속도 정렬됨(Velocity Aligned)으로 변경합니다.
페이싱 모드(Facing Mode)를 페이스 카메라(Face Camera)로 변경합니다.
서브 UV(Sub UV) 카테고리에서 서브 이미지 크기(Sub Image Size)를 6, 6으로 변경합니다.
서브 이미지 크기를 6 x 6으로 설정한 이유는, T_Fire_SubUV 텍스처가 6개의 행과 6개의 열로 구성되어 있기 때문입니다.
이제 새로 만든 화염 이펙트의 프리뷰를 확인할 수 있습니다!
화염 함정에 화염 이펙트 추가
마지막으로, 함정이 활성화되어 있는 동안 각 함정에서 화염 이펙트가 재생되도록 함정 블루프린트에 화염 이펙트를 추가합니다. 다음 단계를 따르면 됩니다.
콘텐츠 브라우저에서 AdventureGame > Designer > Traps 폴더로 이동합니다.
BP_TrapFire 블루프린트를 엽니다.
컴포넌트 패널에서 베이스(Base) 컴포넌트를 선택하고 추가(Add)를 클릭하여 나이아가라 파티클 시스템 컴포넌트(Niagara Particle System Component)를 추가합니다.
먼저 베이스 컴포넌트를 선택하면 나이아가라 컴포넌트가 베이스 컴포넌트의 자손으로 추가됩니다. 이 단계는 화염 이펙트가 베이스 컴포넌트의 크기에 맞게 스케일 조절되도록 하기 위한 중요한 과정입니다.
나이아가라(Niagara) 컴포넌트를 선택한 다음 디테일 패널의 나이아가라 섹션에서 나이아가라 시스템 에셋(Niagara System Asset)을 앞에서 생성한 NS_LW_Fire로 변경합니다.
블루프린트 에디터에서 이벤트 그래프 탭으로 이동합니다. 이제 다음과 같은 모습이 됩니다.
상단 행의 Stop 노드 앞에 화염 이펙트를 비활성화하기 위한 두 개의 새 노드를 추가합니다.
ALT 키를 누른 상태에서 두 노드를 연결하는 선을 좌클릭하여 Stop 노드와 Set Material 노드 사이의 연결을 제거합니다.
노드 사이에 약간의 공간을 확보합니다.
가운데를 우클릭하고 Deactivate Niagara 노드를 추가합니다. 이 노드는 앞에서 추가한 나이아가라 컴포넌트의 이름을 따서 생성되므로, 예를 들어 [Component] 비활성화(Deactivate [Component])처럼 표시되며, 여기에서 보이는 이름과 다를 수 있습니다.
Set Material 노드를 Deactivate Niagara 노드에 연결합니다.
Deactivate Niagara 노드를 Stop Audio 노드에 연결합니다.
이제 아래 행에서도 동일한 단계를 반복합니다. 해당 행에서는 Set Material과 Play Audio가 실행됩니다.
앞에서와 동일한 단계를 따르되, 이번에는 Activate Niagara 노드를 추가합니다.
블루프린트를 컴파일하고 저장합니다.
이제 이벤트 그래프는 다음과 같은 모습이 됩니다.
다음으로는, 함정 블루프린트에서 이전에 생성한 FireSpawnRate 나이아가라 사용자 파라미터를 수정할 수 있는 기능을 추가해 보겠습니다. 이 예시에서는 불꽃의 스폰 속도를 수정하지만, 이 기법은 나이아가라 시스템의 다양한 사용자 파라미터를 수정하는 데 활용할 수 있습니다.
사용자 파라미터를 수정하려면 다음 단계를 따릅니다.
블루프린트 에디터에서 컨스트럭션 스크립트(Construction Script) 탭으로 이동합니다.
새 플로트 변수를 생성하고 이름을 FireSpawnRate로 명명합니다.
새 변수를 선택하고 다음을 수행합니다.
카테고리를 Setup으로 설정합니다. 이렇게 하면 FireSpawnRate 변수가 Setup 카테고리 아래의 다른 변수들과 함께 분류됩니다.
디폴트 값(Default Value)을 10으로 변경합니다. 이렇게 하면 레벨에 배치되는 새로운 각 화염 함정 인스턴스가 기본적으로 파티클이 보이는 상태로 시작합니다.
인스턴스 편집가능(Instance Editable)을 활성화하여 이 변수를 외부에서 편집할 수 있게 설정합니다.
그래프에서 Parent: Construction Script 노드의 실행 핀에서 드래그하여 Set Niagara Variable (Float) 노드를 추가합니다. 이 노드에서 다음을 확인합니다.
In 변수 이름(In Variable Name) 텍스트 필드에 'FireSpawnRate'를 입력합니다. 이는 나이아가라 시스템에서 생성한 파라미터를 레퍼런스합니다. 나이아가라 시스템 내부에 표시된 이름과 정확히 동일하게 입력했는지 확인합니다.
'값(Value)' 핀에서 드래그하여 Get FireSpawnRate 노드를 추가합니다. 이는 이 블루프린트에서 생성한 변수를 레퍼런스합니다.
'Target' 핀을 드래그하여 Get Niagara 노드를 추가합니다. 이 노드는 블루프린트에 추가한 Niagara 컴포넌트를 레퍼런스합니다.
블루프린트를 저장하고 컴파일(Compile)합니다. 이제 컨스트럭션 스크립트 그래프는 다음과 같은 모습이 됩니다.
이제 게임을 실행하여 화염 이펙트를 확인해 보세요! 화염 이펙트를 함정 블루프린트 에셋에 추가했기 때문에, 레벨에 별도로 비주얼 이펙트를 추가하거나 각 함정을 수동으로 변경할 필요가 없습니다. 이제 함정에 화염 이펙트가 자동으로 적용됩니다.
화염 함정 베이스 메시 숨기기
게임에서 화염 이펙트만 보이도록 화염 함정의 사각형 메시를 숨기려면 다음 단계를 따릅니다.
BP_TrapFire블루프린트로 돌아갑니다.컴포넌트 패널에서 TrapBase를 선택합니다.
디테일 패널의 렌더링 카테고리에서 게임에서 숨김(Hidden in Game)을 활성화합니다.
블루프린트를 컴파일(Compile)하고 저장(Save)합니다.
이제 게임을 실행하면 레벨 바닥에 화염 이펙트만 표시됩니다.
불꽃 스폰 속도 수정
앞에서 생성한 FireSpawnRate 변수를 사용하여 각 함정이 생성하는 불꽃 파티클의 수를 변경할 수 있습니다.
불꽃 스폰 속도를 수정하려면 다음 단계를 따릅니다.
아웃라이너 패널에서 검색 필드를 사용하여 BP_FireTrap을 검색합니다. 또는 Room2 폴더를 펼쳐 Room 2에 있는 모든 화염 함정을 확인할 수 있습니다.
모든 BP_FireTrap 액터를 선택합니다.
디테일 패널의 Setup 카테고리에서 Fire Spawn Rate 필드를 20으로 변경합니다.
입력한 값에 따라 스폰되는 불꽃 파티클 수가 어떻게 달라지는지 확인할 수 있습니다. 게임에 적합한 값이 나올 때까지 다양한 값을 시도해 볼 수 있습니다.
이펙트를 계속 실험해 보면서 어떤 결과를 만들 수 있는지 확인해 보세요! 자세한 내용은 비주얼 이펙트 생성을 참고하세요.
예시 프로젝트
아래에는 이 튜토리얼 시리즈를 활용하여 빌드할 수 있는 최종 샘플 프로젝트의 다운로드 링크가 나와 있습니다. 이 예시 프로젝트를 통해 최종 프로젝트가 어떤 모습이 될지 확인하거나, 프로젝트를 어떻게 구성하고 디자인했는지 참고할 수 있습니다.
다음 순서
아티스트 트랙 튜토리얼 시리즈를 완료하신 것을 축하합니다! 이제 머티리얼, 포스트 프로세스 이펙트, 라이팅, 오디오, 나이아가라 비주얼 이펙트를 활용하여 레벨에 아트 패스를 적용하는 방법을 배웠습니다.
프로젝트를 독립형 프로그램으로 패키징하여 테스트하고 공유하는 데 관심이 있다면 다음 문서를 참고하세요.