본문 바로가기

이미터의 개념과 설정

이미터가 파티클의 생성·갱신·표현을 담당하는 범위를 이해하고 Spawn·Update·Render 모듈 스택을 구성합니다.

이제 나이아가라 에디터의 기본 화면을 확인했으므로, 나이아가라 시스템의 주요 구성 요소인 이미터(Emitter)를 살펴봅니다.

이미터는 한 파티클 집단의 생성, 갱신, 렌더링을 묶는 단위입니다.


이미터란 무엇인가요?

이미터는 나이아가라 시스템 내에서 파티클의 종류와 생성·유지·소멸 방식을 정의하는 독립적인 단위입니다.

하나의 나이아가라 시스템은 여러 개의 이미터를 포함할 수 있습니다.

예를 들어, 불꽃 효과를 만든다고 가정해봅시다.

불꽃 심지에서 올라오는 연기, 터져서 흩날리는 불꽃, 그리고 잔재로 남는 재.

이 세 가지는 모두 다른 특성을 가진 파티클이며, 각각의 효과를 하나의 이미터가 담당할 수 있습니다.

이미터 에셋과 시스템 안에서 사용하는 이미터를 구분해 봅시다. 아래는 저장·사용 범위의 구분이며, 모든 이미터의 공식 유형을 둘로 분류한 것은 아닙니다.

  • 독립적인 이미터(Stand-alone Emitter): 자체적으로 하나의 .uasset 파일로 존재하며, 여러 나이아가라 시스템에서 재사용될 수 있습니다. 이는 특정 효과(예: 폭발의 섬광, 연기 기둥)를 표준화하여 다양한 시스템에 적용할 때 매우 유용합니다.
  • 시스템 내장 이미터(Embedded Emitter): 특정 나이아가라 시스템 내에 종속되어 생성되는 이미터입니다. 해당 시스템에서만 사용되며, 주로 시스템의 특정 부분을 구성할 때 사용합니다.

이 장에서는 주로 시스템 내에 포함된 이미터를 기준으로 설명하겠지만, 독립적인 이미터도 동일한 원리로 작동합니다.


이미터의 주요 설정과 모듈

기본 이미터 스택에는 Emitter Spawn, Emitter Update, Particle Spawn, Particle Update와 Render 그룹이 있습니다. 설정에 따라 Event Handler나 Simulation Stage도 추가됩니다.

나이아가라 에디터의 개요(Overview) 패널에서 이미터를 클릭하면 이 섹션들을 확인할 수 있습니다.

NIAGARA · CH2-1

이미터 단위와 입자 단위의 실행을 구분합니다

System은 하나 이상의 Emitter를 포함할 수 있습니다. 생성량을 정하는 계산과 각 입자의 초기화·갱신은 대상과 빈도가 다릅니다.

이미터와 입자 실행 범위 및 데이터 전달System영역에Emitter영역이포함된다. Emitter Spawn은이미터초기값,Emitter Update는신규생성수,Particle Spawn은신규입자초기값,Particle Update는살아있는속성을갱신한다.실선은해당데이터의전달,자기선은살아있는입자Update반복,점선은Renderer의속성읽기이며엔진전체호출순서가아니다.System · 효과 묶음Emitter · 한 입자 집단Emitter Spawn이미터 초기값 · 생성 시Emitter Update이미터 상태 · 신규 생성 수이미터의 시뮬레이션 틱초기값신규 생성 수Particle Spawn새 입자마다 초기화초기 상태Particle Update살아 있는 입자마다시뮬레이션 틱 갱신생존 중 반복속성 읽기Renderer바인딩된 상태 → 출력
이미터와 입자 실행 범위 및 데이터 전달System영역에Emitter영역이포함된다. Emitter Spawn은이미터초기값,Emitter Update는신규생성수,Particle Spawn은신규입자초기값,Particle Update는살아있는속성을갱신한다.실선은해당데이터의전달,자기선은살아있는입자Update반복,점선은Renderer의속성읽기이며엔진전체호출순서가아니다.System · 효과 묶음Emitter · 입자 집단Emitter Spawn이미터 초기값생성 시초기값Emitter Update상태 · 신규 생성 수이미터의 틱신규 생성 수Particle Spawn새 입자마다초기 속성초기 상태Particle Update살아 있는 입자틱마다 갱신생존 중 반복점선: 속성 읽기Renderer바인딩된 상태출력실선: 데이터 전달전체 호출 순서 아님

System · 효과 묶음

연기·불꽃·재처럼 다른 입자 집단을 여러 Emitter로 구성할 수 있습니다.

Emitter · 입자 집단의 생성·갱신·표현

Emitter Spawn

이미터 생성 시 한 번 초기값을 설정합니다. 각 입자의 생성 순간과 다릅니다.

Emitter Update

이미터 단위로 시뮬레이션 틱마다 상태와 그 틱의 생성량을 계산합니다.

Emitter State · Spawn Rate · Spawn Burst

Particle Spawn

새로 생성되는 입자마다 초기 속성을 채웁니다.

Initialize Particle · 초기 위치/속도/수명

Particle Update

살아 있는 입자마다 시뮬레이션 틱마다 움직임과 속성을 갱신합니다.

힘·속도 통합 · 색/크기 · 나이/소멸 조건

Render · 계산된 속성을 읽습니다

Sprite · Mesh · Ribbon · Light 등 렌더러 설정으로 표현을 정합니다. 렌더러의 개수와 입자 수는 같은 개념이 아닙니다.

생성량 계산 ≠ 입자 초기화

Rate/Burst는 이미터 단위에서 생성할 개수를 정하고, Particle Spawn은 그 새 입자들의 초기값을 채웁니다.

이 포함 관계와 실행 범위 비교를 전체 엔진의 호출 순서로 읽지 않습니다. 설정에 따라 Event Handler·Simulation Stage도 추가됩니다. 반복 재생·리셋 등 구체적 수명 정책은 해당 이미터 설정에서 확인합니다.

이미터 생성 (Emitter Spawn)

이미터가 생성될 때 한 번 실행되는 그룹으로, 이미터 단위의 초기값을 설정합니다. 파티클마다 실행되는 Particle Spawn과 다릅니다.

이미터 업데이트 (Emitter Update)
  • 이 그룹은 이미터 단위로 시뮬레이션 틱마다 실행됩니다. 이미터 상태와 그 틱에 생성할 입자 수를 계산합니다.
  • Emitter State: 이미터의 루핑(Looping) 방식, 지속 시간, 활성화/비활성화 시점 등을 설정합니다. 예를 들어, 이미터가 계속해서 파티클을 생성할지, 아니면 일정 시간만 생성하고 멈출지 등을 여기서 결정합니다.
  • Spawn Rate 또는 Spawn Burst: 파티클이 얼마나 자주, 또는 한 번에 몇 개씩 생성될지를 정의합니다.
    • Spawn Rate: 초당 몇 개의 파티클을 생성할지 지정합니다. 지속적으로 파티클을 뿜어내는 연기나 물줄기 같은 효과에 사용됩니다.
    • Spawn Burst Instantaneous: 한 번에 지정된 수의 파티클을 생성합니다. 폭발처럼 짧은 순간에 많은 파티클이 필요한 효과에 적합합니다.
파티클 생성 (Particle Spawn)
  • 이 섹션의 모듈들은 각 파티클이 생성되는 순간에 단 한 번만 실행됩니다.
  • Initialize Particle: 생성되는 파티클의 기본적인 속성(예: 수명, 초기 색상, 초기 크기)을 정의합니다. 이 모듈은 대부분의 이미터에 필수적으로 포함됩니다.
  • 무작위 초기값: 수명이나 속도 입력에 해당 자료형의 Random Range 동적 입력을 연결하면 파티클마다 값을 다르게 줄 수 있습니다.
  • Add Velocity: 파티클이 생성될 때 초기 속도를 부여하여 특정 방향으로 움직이도록 합니다.
파티클 업데이트 (Particle Update)
  • 이 섹션의 모듈들은 매 시뮬레이션 틱에 살아 있는 각 파티클을 대상으로 실행됩니다. 파티클의 움직임, 색상 변화, 크기 변화 등 동적인 요소를 제어하는 핵심적인 부분입니다.
  • 힘(Force): 중력(Gravity Force), 바람(Wind Force) 등 외부 힘을 적용하여 파티클의 움직임을 변화시킵니다.
  • Particle State: 나이와 수명 종료에 따른 소멸을 관리합니다.
  • Scale Color: 파티클의 수명에 따라 색상이 변하도록 설정합니다. (예: 뜨거울 때는 붉은색, 식을수록 푸른색으로 변화하는 불꽃)
  • Scale Sprite Size: 파티클의 수명에 따라 크기가 변하도록 설정합니다. (예: 사라질수록 점점 작아지는 연기)
  • Solve Forces and Velocity: 이전에 적용된 모든 힘과 속도 변화를 통합하여 최종 파티클의 위치를 계산합니다. 힘을 누적하는 모듈 다음에 두되, 후처리 모듈이 뒤에 올 수 있으므로 무조건 마지막으로 옮기지는 않습니다. 각 모듈의 의존성과 에디터 오류 표시를 따릅니다.
렌더 (Render)
  • 이 섹션의 모듈들은 파티클이 최종적으로 화면에 어떻게 그려질지를 정의합니다.
  • Sprite Renderer: 파티클을 2D 이미지(스프라이트) 형태로 렌더링합니다. 가장 일반적으로 사용되는 렌더러입니다.
  • Mesh Renderer: 파티클을 3D 메시(Mesh) 형태로 렌더링합니다. 예를 들어, 파티클 하나하나를 작은 돌멩이나 캐릭터 모델로 표현할 때 사용합니다.
  • Ribbon Renderer: 같은 Ribbon ID의 파티클들을 연결 순서에 따라 띠로 그립니다. 파티클 하나의 과거 위치가 자동으로 모두 저장되는 것은 아닙니다. 마법 주문의 궤적이나 물줄기 같은 효과에 적합합니다.
  • Light Renderer: 파티클이 주변 환경에 빛을 방출하도록 합니다.

예시

한 이미터가 이번 틱에 새 입자 4개를 생성한다고 합시다. Spawn Rate·Burst 쪽 계산은 이미터의 생성량을 정하고, Particle Spawn의 초기화는 그 4개에 적용됩니다. Particle Update가 평가할 때 살아 있는 입자가 12개라면, 그 그룹의 모듈은 이 12개의 상태를 갱신합니다. “새 입자 수 4”와 “갱신 대상 12”는 다른 수입니다. 이 조건은 적용 대상을 설명하기 위한 것이며, 보간 스폰 등을 포함한 엔진 내부 호출 횟수나 성능 측정값은 아닙니다.

직접 판단하기

새 입자만 처음 파란색으로 만들고, 이미 살아 있는 입자는 나이에 따라 크기를 줄이려 합니다. 각 처리를 어느 그룹에 두어야 할까요? Spawn Rate를 두 배로 바꾸기만 하면 기존 입자의 색도 바로 바뀌는지 함께 설명해 보세요.

풀이 확인

초기 색은 Particle Spawn의 초기화 입력에, 나이에 따른 크기 변화는 Particle Update에 둡니다. 생성량 변경은 이후 만들어질 입자 수를 바꾸므로 기존 입자에 새 초기 색을 다시 적용하지 않습니다. Update에서 색을 덮어쓰거나 재시작하면 결과가 달라질 수 있으므로 그 두 조건도 구별해야 합니다.


이미터 추가 및 제거

나이아가라 시스템에 새로운 이미터를 추가하거나 기존 이미터를 제거하는 것은 매우 간단합니다.

  • 추가: System Overview의 빈 곳을 우클릭해 Add Emitter에서 에셋이나 템플릿을 고릅니다. 엔진 버전에 따라 메뉴 위치와 필터가 다를 수 있습니다.
  • 제거: 제거하고 싶은 이미터를 선택한 후 Delete 키를 누르면 됩니다.

이미터의 역할이 달라지면 추가하고, 같은 구조에서 색·생성량만 달라지면 복제와 파라미터 공유를 비교합니다. 여러 시스템에서 반복하는 패턴은 이미터 에셋으로 관리하고 상속·버전 관계를 확인합니다. 역할이 겹치는 이미터는 먼저 비활성화해 화면 기여와 비용을 비교한 뒤 제거합니다.