나이아가라 이미터의 구조 및 작동 과정
🎇 언리얼 엔진 Niagara: Selection Stack Model 완벽 정리 🎇
Niagara는 언리얼 엔진에서 강력한 파티클 시스템을 제공하는 툴로, 기존 Cascade보다 유연하고 강력한 기능을 제공합니다.
이 글에서는 Niagara Selection Stack Model의 개념과 실행 흐름을 정리하고, 실제 에디터에서 어떻게 적용되는지 설명합니다.
✅ 1. Niagara Selection Stack Model이란?
Niagara Emitter와 Selection Stack Model의 관계:
- Niagara Emitter: 파티클의 생성, 속성, 동작 등을 정의하는 기본적인 틀을 제공합니다.
- Selection Stack Model: Emitter 내에서 특정 기준에 따라 파티클을 선택하고, 선택된 파티클에 특정 효과나 동작을 적용하는 기능을 제공합니다.
예시:
- Emitter에서 생성된 파티클 중 특정 수명 이상의 파티클만 Selection Stack Model을 사용하여 선택합니다.
- 선택된 파티클의 색상을 변경하거나 특정 위치로 이동시키는 효과를 적용합니다.
Niagara의 파티클 시뮬레이션은 Stack 구조 기반으로 실행되며, 위에서 아래로 순차적으로 실행됩니다.
각각의 실행 블록은 모듈(Module) 이라고 하며, 이 모듈들은 그룹별로 정리됩니다.
🔹 실행 그룹 (Execution Groups)
각 실행 그룹은 우선순위에 따라 차례대로 실행됩니다.
실행 그룹 설명
System Group | 전체 Niagara System에 공유되는 설정 (에디터에서 보이지 않음) |
Emitter Group | 개별 Emitter(이미터) 단위로 실행 |
Particle Group | 개별 Particle(파티클) 단위로 실행 |
Render Group | 최종적으로 렌더링되는 방식 결정 |
✅ 2. Niagara Selection Stack의 실행 흐름
Niagara는 실행 흐름을 크게 Emitter, Particle, Render 단계로 나누며, 각 단계에서 Spawn(생성)과 Update(업데이트) 가 실행됩니다.
🔹 1️⃣ Emitter Group (이미터 그룹)
- Emitter Spawn
- Emitter가 처음 생성될 때 실행됨
- 예: 초기 변수 설정, 스폰 속도 조정
- Emitter Update
- 이미터가 실행되는 동안 매 프레임 업데이트
- 예: 색상 변화, 속성 값 조정
🔹 2️⃣ Particle Group (파티클 그룹)
- Particle Spawn
- 파티클이 처음 생성될 때 실행됨
- 예: 초기 위치, 속도, 색상 설정
- Particle Update
- 개별 파티클이 매 프레임마다 업데이트
- 예: 중력 적용, 속도 변화, 소멸 효과
🔹 3️⃣ Render Group (렌더 그룹)
- Sprite Renderer
- 파티클을 스프라이트(Sprite) 형태로 렌더링
- 머티리얼 적용 가능 (Glow 효과, Alpha Fade 등)
- 메시 렌더러 변경 가능 (Mesh Renderer 사용 가능)
✅ 3. Niagara Editor에서의 실제 적용
실제 언리얼 엔진의 Niagara 에디터에서 Emitter 설정 패널을 보면 아래와 같은 구조를 확인할 수 있습니다.
이 UI에서 보이는 실행 흐름은 다음과 같습니다.
에디터 UI 항목 실행 그룹 설명
Emitter Spawn | Emitter Group | Emitter가 처음 생성될 때 실행 |
Emitter Update | Emitter Group | Emitter가 실행 중일 때 매 프레임 실행 |
Particle Spawn | Particle Group | 새로운 파티클이 생성될 때 실행 |
Particle Update | Particle Group | 개별 파티클이 매 프레임 업데이트 |
Render (Sprite Renderer) | Render Group | 파티클의 렌더링 방식 결정 |
✅ 4. 실제 예제: 불꽃(Fire) 효과 만들기
위 개념을 활용하여 불꽃(Fire) 효과를 만들면 다음과 같은 실행 흐름이 됩니다.
🔥 불꽃 효과 실행 흐름
1️⃣ Emitter Spawn:
- 불꽃 효과의 기본 속성을 초기화
- 예: 불꽃 색상 초기값 설정
2️⃣ Particle Spawn:
- 불꽃이 생성될 때 초기 속도를 위쪽 방향으로 설정
- 예: Initial Velocity = (0, 0, 500)
3️⃣ Particle Update:
- 시간이 지남에 따라 불꽃이 점점 사라지도록 설정
- 중력 적용하여 불꽃이 위로 날아가다 서서히 소멸
- 예: Lifetime Alpha Fade, Gravity Force 적용
4️⃣ Render (Sprite Renderer):
- 불꽃 머티리얼 적용 (Glow 효과, Alpha Blend 등)
이렇게 하면 실제 게임에서 자연스러운 불꽃 효과를 구현할 수 있습니다.
✅ 5. Running State Management (실행 상태 관리)
Niagara에서 Emitter와 System은 각각 독립적인 실행 상태(Execution State) 를 가질 수 있습니다.
실행 상태 설명
Active | 정상적으로 실행되며, 새로운 파티클 생성 가능 |
Inactive | 시뮬레이션은 실행되지만, 새로운 파티클 생성 불가 |
InactiveClear | 기존 파티클을 모두 제거한 후 Inactive 상태로 전환 |
Complete | 시뮬레이션 및 렌더링을 완전히 중지 |
이 기능을 활용하면 Emitter별로 개별적인 동작을 설정할 수 있습니다.
✅ 6. 결론
- Niagara는 Stack 기반으로 실행되며, 위에서 아래로 실행됨
- System → Emitter → Particle → Render 순서로 실행됨
- Spawn과 Update 단계로 구분되어 실행 흐름을 관리
- Render Group을 활용하여 최종적인 렌더링 방식 결정
- Running State를 활용하면 Emitter를 개별적으로 제어 가능
이 개념을 이해하면 더 정교하고 유연한 Niagara 파티클 시스템을 설계할 수 있습니다! 🚀