본문으로 건너뛰기

안동민 개발노트

본문 시작

시스템과 이미터 속성

시스템과 이미터의 실행 상태·루프·수명 주기 설정이 적용되는 범위를 구분하고 여러 이미터의 동작을 함께 조율합니다.

우리는 지금까지 나이아가라의 기본 구조와 파티클 생성 및 렌더링에 대해 알아보았습니다.

이제 나이아가라 효과를 더욱 풍부하고 정교하게 만드는 핵심 요소인 시스템 및 이미터 속성에 대해 깊이 있게 파고들 차례입니다.

이 속성들은 여러분이 만들고 있는 나이아가라 효과의 전반적인 동작과 수명 주기를 제어하는 중요한 역할을 합니다.

나이아가라 에디터의 개요(Overview) 패널을 다시 살펴보면, 가장 상단에 시스템(System) 섹션이 있고, 그 아래에 하나 이상의 이미터(Emitter) 섹션이 있는 것을 확인할 수 있습니다.

각각의 섹션은 해당 범위에 영향을 미치는 고유한 속성들을 가지고 있습니다.

시스템과 이미터 책임

나이아가라 효과는 시스템 속성이 큰 흐름을 잡고, 각 이미터 속성이 생성·렌더링·컬링 방식을 세부 조정한다.

  1. 1
    System Properties

    전체 효과의 재생, 종료, 경계, 공통 속성을 관리한다. 반복 Once, Loop, Infinite Warm Up 시작 상태를 미리 시뮬레이션 Bounds 파티클 잘림 방지 Attributes 공통 변수 제공

  2. 2
    Emitter Properties

    개별 파티클 그룹의 수명, 공간, 렌더링, 성능 제한을 정한다. Local Space 이미터 기준 이동 여부 Rendering 정렬과 표시 방식 Collision 월드 충돌 처리 Scalability 최대 파티클과 LOD


시스템 속성 (System Properties)

시스템은 전체 수명, 이미터는 입자 동작을 책임진다

System State가 끝나면 Emitter가 Infinite라도 효과는 멈출 수 있으므로 책임 경계를 먼저 읽어야 한다.

설정 위치책임영향 범위확인 질문
System State효과 전체의 시작, 반복, 종료모든 이미터전체 효과가 언제 끝나는가
Emitter State개별 입자 집합의 루프와 스폰한 이미터이 입자 무리는 얼마나 반복되는가
Scalability품질, LOD, 컬링, 최대 파티클플랫폼별 성능비용 제한이 어디서 걸리는가
Override시스템 안에서 이미터 설정 재정의특정 사용처원본과 다른 값이 숨어 있는가

시스템 속성은 나이아가라 시스템 전체에 영향을 미치는 설정들입니다.

이 설정들은 시스템이 어떻게 시작하고, 종료되며, 게임 세계와 상호작용하는지를 정의합니다.

시스템 섹션을 선택하면 디테일(Details) 패널에서 해당 속성들을 확인할 수 있습니다.

  • System State (시스템 상태): 시스템의 전반적인 수명 주기를 제어합니다.

    • Loop Behavior (루프 동작): 시스템이 한 번만 재생될지(Once), 정해진 횟수만 반복할지(Multiple), 무한 반복할지(Infinite)를 정합니다. 예를 들어, 짧은 폭발 효과는 Once, 계속 타오르는 불은 Infinite로 설정할 수 있습니다.
    • Loop Duration (루프 지속 시간): Loop로 설정했을 때, 한 번의 루프가 얼마나 지속될지 초 단위로 정의합니다.
    • Warm Up Time (웜업 시간): 시스템이 활성화될 때 미리 시뮬레이션될 시간을 설정합니다. 예를 들어, 연기 기둥이 갑자기 나타나는 것이 아니라, 시작부터 이미 어느 정도 피어오른 상태로 보이고 싶을 때 유용합니다.
    • Auto Deactivate / Inactive Response: 더 이상 생성·갱신할 파티클이 없을 때 시스템이 어떻게 비활성화되고 정리될지 결정합니다.
  • System Simulating (시스템 시뮬레이션): 시스템의 시뮬레이션 방식과 관련된 설정을 포함합니다.

    • Fixed Bounds (고정 경계): 시스템의 렌더링 경계를 수동으로 설정할 수 있습니다. 특히 매우 넓은 범위에 걸쳐 파티클이 퍼지는 효과의 경우, 엔진이 경계를 잘못 예측하여 파티클이 잘리는 것을 방지할 수 있습니다.
    • Cull Proxy (컬 프록시): 시스템의 컬링(culling, 화면에서 보이지 않을 때 렌더링을 중단하는 것) 방식을 제어합니다. 성능 최적화에 중요합니다.
  • System Parameters: 시스템이나 User Parameter로 값을 노출하고, 이미터/파티클 모듈이 그 값을 읽어 사용할 수 있습니다. 값을 선언하는 것과 모든 파티클에 자동 적용되는 것은 다릅니다.

시스템 속성은 여러 이미터를 담는 효과 단위의 수명, bounds, scalability, 파라미터 계약을 정리하는 위치입니다.


이미터 속성 (Emitter Properties)

이미터 속성은 개별 이미터의 동작 방식에 영향을 미칩니다.

각 이미터는 독립적인 파티클 생성 및 업데이트 로직을 가지므로, 이미터 속성을 통해 특정 파티클 효과의 세부적인 동작을 제어할 수 있습니다.

이미터 섹션을 선택하면 디테일(Details) 패널에서 해당 속성들을 확인할 수 있습니다.

  • Emitter State (이미터 상태): 이미터의 수명 주기와 관련된 핵심 설정입니다.

    • Life Cycle Mode: 이미터 수명 주기를 시스템이 관리할지(System), 이미터가 자체적으로 관리할지(Self)를 정합니다.
    • Loop Behavior (루프 동작): 해당 이미터가 한 번만 재생될지, 정해진 횟수만 반복할지, 무한 반복할지 설정합니다.
    • Loop Duration (루프 지속 시간): 이미터의 한 번의 루프가 지속되는 시간입니다.
    • Loop Delay / Inactive Response: 반복 사이의 지연과 비활성 상태 처리 방식을 정합니다.
    • Local Space: 파티클 좌표를 owning Niagara Component 기준으로 해석할지, 월드 기준으로 해석할지 결정합니다. 컴포넌트가 움직일 때 효과가 함께 붙어야 하는지, 월드에 남아야 하는지를 기준으로 선택합니다.
  • Rendering (렌더링): Render 그룹과 Renderer 설정에서 파티클이 어떻게 렌더링될지 제어합니다.

    • Sort Mode (정렬 모드): 투명한 파티클이 올바르게 렌더링되도록 정렬 방식을 설정합니다.
    • Culling (컬링): 해당 이미터의 파티클이 언제 컬링될지(렌더링되지 않을지)를 제어합니다.
  • Collision (충돌): 보통 Particle Update의 Collision 모듈에서 월드 충돌, 채널, 반응을 설정합니다. 이미터 속성만 바꾼다고 충돌이 자동으로 생기지는 않습니다.

  • Scalability (확장성): Effect Type, Scalability Mode, 시스템/이미터 scalability override, 거리·가시성 컬링과 함께 성능 상한을 설정합니다.

    • 파티클 수는 Spawn Rate, Spawn Burst, lifetime, kill 조건, scalability 제한이 함께 결정합니다.

이미터 속성은 개별 이미터의 수명 관리, 좌표 기준, 비활성 처리, scalability 참여 방식을 정리하는 위치입니다.

스폰율, 충돌, 렌더러, 머티리얼 비용은 각각 해당 모듈과 렌더 그룹에서 다시 확인해야 합니다.

아래 다이어그램은 자주 헷갈리는 시스템/이미터 속성을 실제 제작 판단 기준으로 묶어 정리한 것입니다.

Niagara 문제는 증상에 가장 가까운 소유 범위에서 고친다

전체 효과·Emitter 생애·Particle 동작·화면 표현을 같은 패널의 값으로 보지 말고 증상, 소유자, 첫 확인 지점을 대응시킨다.

  1. 증상 분류

    한 번에 위치·수명·표현 중 한 축만 고른다.

  2. 최소 소유자

    그 값을 직접 쓰는 가장 좁은 범위를 찾는다.

  3. 한 설정 변경

    다른 범위는 고정하고 원인 하나만 바꾼다.

  4. 회귀 확인

    Debugger와 동일 장면의 수치로 전후를 비교한다.

증상 범위소유자첫 확인수정 경계
여러 Emitter·공통 입력SystemBounds·User Parameter효과 전체 계약
수명·반복·좌표 공간EmitterLife Cycle·Loop·Local SpaceEmitter 하나의 상태
생성·운동·충돌Particle ModuleSpawn·Velocity·Collision파티클 값과 동작
모양·정렬·컬링·비용Renderer / ScalabilityMaterial·Sort·Effect Type화면 품질과 예산

시스템과 이미터 속성의 상호작용

시스템 속성과 이미터 속성은 서로 영향을 주고받으며 최종적인 나이아가라 효과를 만들어냅니다.

  • 관리 범위: 시스템은 여러 이미터를 담는 효과 단위이고, 이미터는 독립적인 Execution State와 Life Cycle Mode를 가질 수 있습니다.
  • 파라미터 전달: 시스템/User Parameter로 값을 노출하더라도, 이미터나 파티클 모듈이 그 값을 읽어야 실제 시뮬레이션에 반영됩니다.
  • 성능 제한: 전체 품질 제한은 Effect Type과 scalability 설정에서, 개별 밀도와 수명은 이미터의 스폰·업데이트·kill 조건에서 함께 결정됩니다.

이러한 속성들을 이해하면 “전체 효과 설정”, “이미터 수명”, “파티클 업데이트 모듈”, “렌더러와 머티리얼”, “scalability 제한”을 섞지 않고 조정할 수 있습니다.

시스템과 이미터 속성이 서로 영향을 줄 때는 적용 범위를 먼저 나누고, 전체 흐름에서 개별 예외로 내려가며 추적합니다.

시스템·이미터 범위 추적

시스템과 이미터 속성은 같은 이름의 설정을 갖는 경우가 많습니다. 원인을 찾을 때는 전체 재생 조건, 개별 이미터 예외, 렌더링 범위, 성능 상한을 순서대로 분리해 보면 빠릅니다.

  1. System
    전체 재생의 문

    System 전체 재생의 문 Once , Loop , Warm Up처럼 모든 이미터가 따르는 큰 흐름을 먼저 봅니다.

  2. Emitter
    개별 역할의 예외

    Emitter 개별 역할의 예외 시스템은 살아 있어도 특정 이미터만 한 번 터지거나 늦게 시작할 수 있습니다.

  3. Bounds
    보이는 범위의 경계

    Bounds 보이는 범위의 경계 파티클이 잘리면 Fixed Bounds와 이미터 렌더 범위를 함께 확인합니다.

  4. Budget
    동시 개수의 상한

    Budget 동시 개수의 상한 Max Particles, LOD, Cull 설정은 시스템 품질과 플랫폼 비용을 연결합니다.

  5. 왜 전부 멈추나

    원인 추적표 질문 시스템에서 먼저 이미터에서 다음 왜 전부 멈추나 System State의 루프와 비활성화 조건 개별 Duration이 더 짧은지 확인 왜 하나만 다르나 공통 파라미터와 시스템 위치 Emitter State와 Local Space 예외 왜 화면에서 잘리나 Fixed Bounds와 Cull Proxy Renderer Bounds와 Sort Mode 왜 플랫폼마다 다른가 시스템 Scalability 기준 Max Particles와 LOD 변형

  6. 점검 순서 전체

    문제면 시스템 속성부터 봅니다. 일부 이미터만 문제면 해당 이미터 속성으로 내려갑니다. 보이는 범위 문제는 Bounds와 Renderer를 같이 봅니다. 성능 문제는 개수 상한과 컬링 기준을 숫자로 비교합니다.

이번 절에서는 나이아가라 시스템과 이미터의 기본 구조, 핵심 속성을 정리했습니다.

이펙트 제작 전 준비 체크

구성 요소를 본격적으로 조합하기 전에 준비 단계를 정리하면 제작 속도가 안정적입니다.

  • 목표 화면(색/밀도/지속시간)을 숫자 기준으로 먼저 정의합니다.
  • 재사용할 모듈과 시스템 자산을 분리해 관리합니다.
  • 프로파일링 기준 프레임을 정해 품질/성능 균형을 확인합니다.
System과 Emitter 속성

나이아가라 속성은 “어디까지 영향을 주는가”를 먼저 보면 헷갈리지 않습니다. 시스템은 모든 이미터의 재생 조건과 공통 기준을 잡고, 이미터는 각 파티클 묶음의 세부 동작을 조절합니다.

  1. System State
    전체 재생 조건

    System State 전체 재생 조건 Once, Loop, Warm Up, 마지막 파티클 소멸 후 비활성화처럼 시스템 수명 주기를 정합니다.

  2. Bounds
    보이는 범위와 컬링

    Bounds 보이는 범위와 컬링 Fixed Bounds와 Cull 설정은 파티클이 잘리거나 불필요하게 그려지는 문제를 막습니다.

  3. Emitter State
    개별 이미터 리듬

    Emitter State 개별 이미터 리듬 시스템은 반복되더라도 특정 이미터만 한 번 터지거나 늦게 시작하도록 제어합니다.

  4. Scalability
    성능 상한

    Scalability 성능 상한 Max Particles와 LOD로 각 이미터의 피크 비용을 제한하고 플랫폼별 품질을 나눕니다.

  5. 언제 끝나나

    범위 판단표 고민 시스템에서 볼 것 이미터에서 볼 것 언제 끝나나 System Loop와 Deactivate 조건 개별 Emitter Loop와 Duration 움직임 기준 월드에 배치되는 전체 시스템 위치 Local Space 활성화 여부 왜 잘리나 Fixed Bounds와 Cull Proxy 이미터 Bounds, Sort, Renderer 범위 왜 무겁나 시스템 전체 동시 실행 수 Max Particles, Collision, Renderer 비용

  6. 제작 전 준비 효

    전체 지속 시간과 반복 방식을 숫자로 정합니다. 각 이미터가 맡을 시각 역할을 한 문장으로 적습니다. Bounds와 Max Particles는 보이는 순간에만 뒤늦게 맞추지 않습니다. 공통 변수는 시스템 단위로, 개별 변주는 이미터 단위로 나눕니다.

마지막으로 시스템과 이미터 속성은 작업 전 점검표로 다시 묶어 두면 이후 절에서 모듈을 추가할 때 흔들리지 않습니다.

System과 Emitter 범위 매트릭스

전체 효과 문제인지, 특정 이미터 문제인지, 파티클 속성 문제인지 먼저 나누면 수정 위치가 흔들리지 않는다.

  1. 전체 재생

    System 전체 재생 Loop, Warm Up, User Parameter

  2. 개별 집단

    Emitter 개별 집단 Spawn, State, Kill 조건

  3. 속성 변화

    Particle 속성 변화 Position, Color, Size, Velocity

  4. 화면 표시

    Render 화면 표시 Renderer, Material, Bounds