안동민 개발노트

본문 시작

기본적인 이펙트 제작 방법

불꽃·연기·폭발 효과의 이미터 구성과 Spawn·색상·크기·힘·SubUV 설정을 공통 제작 순서에 따라 조합합니다.

이전 챕터들에서는 나이아가라 시스템의 각 모듈과 기능, 그리고 블루프린트 연동에 대한 이론적인 지식들을 배웠습니다.

이제는 이러한 지식들을 바탕으로 실제 게임에서 활용될 수 있는 기본적인 파티클 이펙트들을 직접 제작해보는 실전 단계에 접어들 시간입니다.

이 절에서는 가장 흔하게 사용되는 몇 가지 기본 이펙트(불, 연기, 폭발, 물방울 등)를 만드는 일반적인 접근 방식과 필요한 주요 모듈 및 설정에 대해 알아보겠습니다.

파티클 이펙트 제작은 모듈과 파라미터를 조합해 원하는 시각 결과를 만드는 과정입니다.

이 절에서는 기본 제작 순서와 조정 기준을 중심으로 살펴봅니다.


파티클 이펙트 제작의 일반적인 워크플로우

대부분의 나이아가라 파티클 이펙트는 다음 단계를 거쳐 제작됩니다.

아이디어 구상 및 레퍼런스 수집
  • 어떤 이펙트를 만들 것인지 명확히 정의합니다. (예: 작은 불꽃, 짙은 연기, 물이 튀는 효과)
  • 실제 사진, 영상, 다른 게임의 이펙트 등 레퍼런스(Reference)를 충분히 수집합니다. 어떤 요소들이 이펙트를 구성하고 있는지 분석합니다. (색상, 형태, 움직임, 수명, 발광 여부 등)
나이아가라 시스템 생성
  • 새로운 나이아가라 시스템을 생성하고, 가장 적합한 기본 템플릿(Template)을 선택하여 시작합니다. (예: 사용 중인 버전에서 제공되는 Fountain 이미터; 설치 콘텐츠에 따라 템플릿 목록이 다릅니다)
핵심 스폰/초기화 설정
  • Spawn Rate 또는 Spawn Burst Instantaneous를 통해 파티클이 얼마나 자주/많이 생성될지 설정합니다.
  • Initialize Particle에서 수명·크기·색상을 설정하고, 초기 위치와 속도는 Particle Spawn의 Shape Location·Add Velocity 등 해당 모듈에서 설정합니다. 이 값들은 이펙트의 전반적인 형태와 움직임을 결정합니다.
물리 및 힘 적용
  • Gravity Force (중력), Drag (공기 저항), Curl Noise Force (난류), Linear Force 등 (특정 방향의 힘) 등을 사용하여 파티클에 물리적인 움직임을 부여합니다.
  • 힘은 Particle Update에서 Solve Forces and Velocity가 적분합니다. 필요하면 지원되는 Collision을 solver 바로 앞에 둡니다.
시간에 따른 속성 변화
  • Scale Color, Scale Sprite Size, Scale Velocity 등 Scale 모듈과 Float from Curve, Color from Curve를 사용하여 파티클의 수명(NormalizedAge)에 따라 색상, 크기, 속도 등을 자연스럽게 변화시킵니다.
  • 예시: 연기는 시간이 지나면서 흐려지고 커지며, 불꽃은 밝게 타오르다 사라집니다.
렌더링 설정
  • Sprite Renderer 또는 Mesh Renderer를 선택하고, 이펙트의 특성에 맞는 머티리얼(Material)을 할당합니다.
  • 머티리얼의 블렌드 모드(Blend Mode)와 셰이딩 모델(Shading Model)을 올바르게 설정합니다. (대부분의 시각 효과는 Unlit & Translucent 또는 Additive를 사용합니다.)
  • 교차 경계 완화는 머티리얼의 DepthFade로 구성합니다. Motion Blur는 렌더러의 속도 출력과 후처리 설정을 함께 확인합니다.
최적화 및 디버깅
  • 파티클 수, Lifetime, 복잡한 연산 등을 조절하여 성능을 최적화합니다.
  • 나이아가라 디버거와 stat Niagara 명령어를 활용하여 성능 병목 지점을 찾고 개선합니다.
반복 및 개선
  • 이펙트를 게임 레벨에 배치하고 다양한 각도와 조명 환경에서 확인합니다.
  • 레퍼런스와 비교하며 부족한 점을 찾고, 1단계부터 7단계까지의 과정을 반복하여 만족스러운 결과가 나올 때까지 개선합니다.

기본적인 이펙트별 주요 설정 가이드

아래 범위는 제작을 시작하기 위한 예시입니다. 각 이미터의 생성 방식과 수명을 먼저 정하고 실제 장면에서 조정합니다.

불꽃 (Flame) 효과

  • 스폰/초기화
    • Spawn Rate: 비교적 높게 (지속적으로 타오르는 효과)
    • Lifetime: 짧게 (0.5 ~ 1.5초)
    • Sprite Size: 작게 시작하여 크게 (10 ~ 30)
    • Color: 밝은 주황색, 노란색, 빨간색
    • Initial Velocity: Z축으로 약간 위로 (불꽃이 위로 솟아오름)
  • 물리/힘
    • Gravity Force: 매우 약하게 적용하거나 제거 (Z 축 상승을 방해하지 않도록)
    • Curl Noise Force: 필요할 때 추가합니다. 불꽃의 흔들림과 불규칙한 형태를 만듭니다. Strength와 Frequency를 조절하여 원하는 느낌을 찾습니다.
    • Drag: 약하게 적용하여 너무 빠르게 감속되지 않도록 합니다.
  • 시간에 따른 변화
    • Scale Color: NormalizedAge에 따라 색상을 노랑 -> 주황 -> 빨강 -> 검정으로, 알파를 1.0 -> 0.0으로 변화시켜 타오르다 사라지게 합니다.
    • Scale Sprite Size: NormalizedAge에 따라 크기를 작게 -> 크게 -> 작게 변화시켜 불꽃이 커졌다가 줄어들며 사라지게 합니다.
  • 렌더링
    • Sprite Renderer
    • Material: 불꽃 텍스처(필요하면 SubUV 애니메이션)를 포함하고 Additive 블렌드 모드, Unlit 셰이딩 모델을 사용합니다.
    • Light Renderer: 필요에 따라 추가하여 주변을 밝히는 효과를 줍니다. (성능 주의)

연기 (Smoke) 효과

  • 스폰/초기화
    • Spawn Rate: 적당히 (연기의 밀도에 따라)
    • Lifetime: 길게 (2.0 ~ 5.0초)
    • Sprite Size: 작게 시작하여 매우 크게 (20 ~ 100 이상)
    • Color: 회색 계열 (검정 -> 회색 -> 흰색)
    • Initial Velocity: Z축으로 천천히 위로 (연기가 피어오름)
  • 물리/힘
    • Gravity Force: 매우 약하게 적용하거나 제거 (부유하는 느낌)
    • Curl Noise Force: 필요할 때 추가합니다. 연기의 불규칙한 형태와 흐름을 만듭니다. Strength는 약하게, Frequency는 불꽃보다 낮게 조절하여 뭉게뭉게 퍼지는 느낌을 줍니다.
    • Drag: 속도를 감쇠합니다. 퍼지는 모양은 초기 방향·노이즈·Sprite Size 증가로 별도로 만듭니다.
  • 시간에 따른 변화
    • Scale Color: NormalizedAge에 따라 색상을 어두운 회색 -> 밝은 회색 -> 투명으로 변화시켜 연기가 희미해지며 사라지게 합니다.
    • Scale Sprite Size: NormalizedAge에 따라 크기를 작게 -> 매우 크게 변화시켜 연기가 퍼지는 느낌을 줍니다.
  • 렌더링
    • Sprite Renderer
    • Material: 연기 텍스처(주로 Softness가 있는)를 포함하고 Translucent 블렌드 모드, Unlit 셰이딩 모델을 사용합니다.
    • DepthFade: Translucent 머티리얼의 Opacity에 연결해 다른 표면과의 교차 경계를 완화합니다.

폭발 (Explosion) 효과

  • 스폰/초기화
    • Spawn Burst Instantaneous: 필수. 한 번에 많은 파티클을 스폰합니다. Spawn Count는 예를 들어 100 ~ 500에서 시작하되 입자 역할과 대상 장치 비용에 맞게 낮춥니다
    • Lifetime: 매우 짧게 (0.5 ~ 1.0초)
    • Sprite Size: 작게 시작하여 매우 크게 폭발하듯이
    • Color: 밝은 주황/빨강/노랑
    • Initial Velocity: Sphere 형태로 매우 강하게 (사방으로 튀어나가도록)
  • 물리/힘
    • Gravity Force: 강하게 적용하여 파편이 빠르게 떨어지도록 합니다.
    • Drag: 강하게 적용하여 폭발 범위 밖으로 나가지 않고 빠르게 감속되도록 합니다.
    • Curl Noise Force: 약하게 적용하여 폭발 잔해에 미세한 불규칙성을 줍니다.
    • Collision: 표면 반응이 필요한 파편에만 사용합니다. Restitution과 Friction을 조절하여 파편이 지면에 튕기거나 멈추도록 합니다.
  • 시간에 따른 변화
    • Scale Color: NormalizedAge에 따라 색상을 밝게 -> 어둡게 -> 투명으로 변화시켜 폭발의 섬광이 사라지도록 합니다.
    • Scale Sprite Size: NormalizedAge에 따라 크기를 매우 빠르게 작게 -> 크게 -> 작게 변화시켜 폭발의 확장과 수축을 표현합니다.
  • 렌더링
    • Sprite Renderer와 Mesh Renderer (파편).
    • Material: 불꽃, 연기, 파편 텍스처를 포함하고 Additive / Translucent 블렌드 모드, Unlit / Default Lit 셰이딩 모델을 조합하여 사용합니다.
    • Light Renderer: 짧은 시간 동안 폭발 지점을 밝히는 데 사용합니다. (성능 주의)

SubUV 애니메이션 머티리얼 활용

불꽃, 폭발, 연기 등 시간에 따라 형태가 변하는 효과에는 SubUV 애니메이션이 적용된 머티리얼이 매우 효과적입니다.

  • 개념: 하나의 텍스처 내에 여러 프레임의 이미지를 타일 형태로 배치하고, 나이아가라의 SubUV 모듈이 각 프레임을 순차적으로 재생하여 애니메이션처럼 보이게 합니다.
  • 활용: Sprite Renderer의 Sub Image Size를 시트의 열·행 개수에 맞추고, SubUV Animation으로 Particles.SubImageIndex를 갱신합니다. 렌더러의 Sub Image Index Binding을 확인하고 인접 프레임 혼합은 지원되는 Sub Image Blend 설정과 머티리얼을 함께 맞춥니다. 프레임 범위·재생 속도·루프 정책은 사용하는 모듈 입력에서 확인합니다.

역할을 나누어 비교하기

효과생성수명 예시움직임·표현의 우선순위
불꽃연속 Rate0.5~1.5초위쪽 속도, 흔들림, 짧은 발광
연기연속 Rate2~5초느린 상승, 크기 증가, 알파 감쇠
폭발 코어한 번 Burst0.5~1초빠른 팽창과 섬광
파편별도 Burst장면에 맞춤방향·중력·필요한 충돌

Scale Color와 Scale Sprite Size는 초기값에 배율을 적용합니다. 절대 색 커브를 그대로 쓰려면 초기 RGB를 흰색으로 두거나 Color를 직접 기록하고, 크기 커브도 초기 크기와 배율을 곱한 최종값으로 확인합니다. 단발 효과는 이미터를 한 번만 반복하도록 하고 Particle State의 수명 종료와 시스템 완료를 확인합니다.

단일 이미터로 핵심 실루엣을 맞춘 뒤 연기·불씨·파편을 역할별로 추가합니다. 같은 카메라에서 형태, 움직임, 머티리얼, 비용 중 가장 어긋난 항목 하나씩 바꾸며 비교합니다.