ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 나이아가라 이미터의 구조 및 작동 과정
    컴퓨터 3D 그래픽/언리얼엔진 2025. 2. 5. 17:32

    🎇 언리얼 엔진 Niagara: Selection Stack Model 완벽 정리 🎇

    Niagara는 언리얼 엔진에서 강력한 파티클 시스템을 제공하는 툴로, 기존 Cascade보다 유연하고 강력한 기능을 제공합니다.
    이 글에서는 Niagara Selection Stack Model의 개념과 실행 흐름을 정리하고, 실제 에디터에서 어떻게 적용되는지 설명합니다.


    ✅ 1. Niagara Selection Stack Model이란?

    Niagara Emitter와 Selection Stack Model의 관계:

    1. Niagara Emitter: 파티클의 생성, 속성, 동작 등을 정의하는 기본적인 틀을 제공합니다.
    2. 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 설정 패널을 보면 아래와 같은 구조를 확인할 수 있습니다.

    에디터의 NE 실행예제

    이 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 파티클 시스템을 설계할 수 있습니다! 🚀

     

    댓글

Designed by Tistory.