본문 바로가기

레벨 시퀀스와 나이아가라 통합

Sequencer 트랙에 나이아가라 시스템을 배치하고 활성 구간·사용자 변수·이벤트 키를 애니메이션과 동기화합니다.

Sequencer에서는 시스템의 재생 구간, User Parameter 키, 이벤트를 같은 시간축에 놓아 컷신을 제어합니다. 시뮬레이션 시간과 단순 활성 상태를 구분해야 스크러빙과 실제 출력의 차이를 설명할 수 있습니다.

시스템과 수명 트랙 추가

Level Sequence를 만들거나 열고 Niagara System 에셋을 레벨에 배치합니다. Blueprint 내부 컴포넌트라면 그 소유 Actor를 배치합니다.

Actor를 Sequencer에 추가한 뒤 Niagara Component 트랙을 추가합니다. 그 아래 Niagara System Life Cycle Track을 추가하고 Section Range Start/End로 재생 구간을 정합니다. Auto Activate와 게임 코드의 Activate 호출이 별도로 재생을 시작하지 않게 제어 주체를 하나로 둡니다.

Life Cycle 섹션의 Age Update Mode를 확인합니다. Tick Delta Time은 엔진 틱으로 진행하고, Desired Age는 시퀀서가 지정한 나이까지 시뮬레이션합니다. 뒤로 스크러빙하면 리셋 후 다시 계산할 수 있습니다. Desired Age No Seek는 뒤로 이동한 뒤 다시 전진할 때의 리셋 동작이 다릅니다.

타임라인과 시뮬레이션을 맞추려는 예제는 Desired Age를 기준으로 합니다. 같은 시간으로 이동했다고 외부 상태·난수·충돌을 포함한 모든 실행이 항상 동일하다는 보장은 아닙니다. Life Cycle Track 설명

User Parameter와 Transform 키

Niagara Component 트랙에서 지원되는 Float/Color/Vector 등의 User Parameter 트랙을 추가합니다. 매개변수가 없으면 먼저 Niagara System에서 노출하고 입력에 연결합니다. UI 메뉴 위치는 버전에 따라 다르며, 이름에 Sequencer 접두사를 붙이는 것만으로 지원되지 않는 타입이 애니메이션 가능해지는 것은 아닙니다.

연속 값은 키 사이의 보간과 Curve Editor로 조절합니다. Bool 활성 상태는 연속 보간 값과 다릅니다. Actor Transform을 애니메이션하면 시스템의 위치·회전을 바꿀 수 있지만, 이미 생성된 입자가 따라갈지는 Local Space와 모듈의 좌표 공간을 확인해야 합니다.

직접 해 보기: 크기와 발광이 감쇠하는 폭발

이 예제는 크기와 발광 배율을 Update에서 계속 읽습니다. Spawn의 초기 속도 입력만 키로 줄인다고 기존 입자가 자동으로 멈추지는 않습니다.

기본 Sprite 시스템을 복제해 NS_SequencerExplosion로 저장합니다. 연속 Spawn Rate를 끄고 시간 0의 Spawn Burst Instantaneous에 정수 100개를 지정합니다. Emitter State는 Self/Once, Particle State는 수명 종료 시 제거하도록 합니다.

Particle Spawn에서 Lifetime 0.8초, 기준 Sprite Size 10 cm와 주황색을 설정합니다. Add Velocity에 임의 단위 방향 × 100 cm/s를 초기 속도로 주고, Particle Update의 Gravity Force·Drag 뒤에 Solve Forces and Velocity를 둡니다.

Float User.ExplosionScale과 User.ExplosionIntensity를 만듭니다. Scale은 Particle Update의 Scale Sprite Size 배율에 연결합니다. Intensity는 Dynamic Material Parameter 첫 채널에 기록하고 Renderer Binding 및 머티리얼 DynamicParameter를 통해 Particle Color RGB에 곱해 Emissive로 보냅니다. 전달 경로를 그대로 사용합니다.

레벨에 시스템을 배치하고 Sequencer의 Component 아래에 Life Cycle 트랙과 두 Float Parameter 트랙을 추가합니다. Life Cycle 구간은 0.1초부터 1.0초까지, Age Update Mode는 Desired Age로 설정합니다.

0초의 Scale/Intensity는 0, 0.1초는 각각 5와 2, 0.5초는 둘 다 0으로 키를 둡니다. 연속 값의 보간은 Linear로 설정합니다. 시퀀스 프레임률에서 해당 시점을 표현할 수 있는 프레임을 선택하고 실제 키 시간을 기록합니다.

시작 이전부터 순방향 재생해 0.1초에 생성된 입자가 크기와 발광을 줄이며 0.5초에 보이지 않게 되는지 확인합니다. 크기·발광이 0이 되어도 입자는 수명 종료 전까지 남을 수 있습니다. 1초 구간 종료와 시스템 완료 정책도 확인합니다.

폭발 크기·발광과 재생 구간

절대 시간 0.1초 최대 Scale 5/Intensity 2→0.3초 2.5/1→0.5초 0에서 표시 변화와 입자 나이/NormalizedAge/1초 재생 구간을 따로 추적할 수 있다.

폭발 크기·발광과 재생 구간

NIAGARA · CH8-5

키 시간·재생 구간·입자 수명을 구분합니다

가로축은 Sequencer의 절대 시간(초)입니다. 크기와 발광은 서로 다른 최대값을 각각 100%로 정규화해 같은 선으로 표시했습니다.

폭발 크기·발광과 재생 구간크기와 발광 배율은 0.1초에 각각 5와 2가 되고 0.5초에 0으로 선형 감쇠합니다. Life Cycle 구간은 0.1초부터 1초까지입니다.크기 · 발광 배율각 최대값 = 100%1005000.00.10.51.0sLife Cycle 구간0.1s 시작1.0s 끝
키 시간과 Life Cycle 구간절대Sequencer시간0.1최대→0.5제로.최대Scale5/Intensity2는각100%정규화.0.1→1.0LifeCycle별도구간.입자NormalizedAge축이아니다.크기 · 발광 배율각 최대값 = 100%1005000.00.10.51.0sLife Cycle 구간0.1s 시작1.0s 끝

서로 다른 실제 값

0.1초의 Scale은 5, Intensity는 2입니다. 초기 크기 10cm에 Scale 5를 적용하면 크기는 50cm가 됩니다. 둘 다 Linear 키로 0.5초에 0이 됩니다.

보이지 않는 시점

0.5초의 크기·발광 0은 입자 삭제를 뜻하지 않습니다. 예제 입자의 Lifetime은 0.8초이며, Life Cycle 트랙 끝은 1.0초입니다.

시간을 제어하는 방식

Life Cycle 트랙은 시스템 재생을 제어합니다. Desired Age로 되감아도 외부 이벤트·충돌·난수까지 항상 같은 결과가 되는 것은 아닙니다.

이 그래프의 시간은 Particles.NormalizedAge가 아닙니다. 키 프레임의 표현 가능한 시간과 실제 프레임을 확인합니다.

Scale은 Update의 크기 배율, Intensity는 머티리얼 발광 배율입니다. Linear 키를 읽는 예제이며 Intensity 0이 이동 속도 0을 뜻하지 않습니다.

이 예의 조건

  • 본문과 원 도표에 제시된 사례의 입력·조건을 사용합니다. 설명용 수치나 독립 비교 경로는 각 단계에 표시합니다.
  • 현재 상태·값과 전환 근거의 위치는 모든 단계에서 같습니다. 조건이 맞지 않거나 실행되지 않은 경로를 성공한 동작으로 해석하지 않습니다.
관계도의 보충 설명
원 도표의 제목·노드·관계·조건·주석
범위원문
본문·주석가로축은 Sequencer의 절대 시간(초)입니다. 크기와 발광은 서로 다른 최댓값을 각각 100%로 정규화해 같은 선으로 표시했습니다.
노드·연결선 라벨각 최댓값 = 100%
노드·연결선 라벨1.0 s
노드·연결선 라벨0.1 s 시작
노드·연결선 라벨1.0 s 끝
관계·조건 설명Sequencer 절대 시간 0.1초에 최댓값→0.5초에 영으로 변한다. 최댓값 Scale 5/Intensity 2는 각각 100%로 정규화한다. 0.1→1.0초 Life Cycle은 별도 구간이다. 입자의 NormalizedAge 축이 아니다.
본문·주석0.1초의 Scale은 5, Intensity는 2입니다. 초기 크기 10 cm에 Scale 5를 적용하면 크기는 50 cm가 됩니다. 둘 다 Linear 키로 0.5초에 0이 됩니다.
예의 값과 변화
관찰·상황값·보충 정보변화·이유
0.1초 키

Sequencer 절대 시간의 최댓값을 읽는다.

  • Scale: 5
  • Intensity: 2
  • 이 시간은 Particles.NormalizedAge가 아니다.
0.3초 중간

Linear 감쇠 중간과 입자 나이를 구분한다.

  • Scale/Intensity: 2.5 / 1
  • Age/NormalizedAge: 0.2s / 0.25
  • 0.1초 Spawn·Lifetime 0.8초라는 계산 가정을 명시한다.
0.5초 가시성

두 배율이 0이 되어도 수명 종료와 구분한다.

  • Scale/Intensity: 0 / 0
  • Life Cycle 구간: 0.1..1 s
  • 크기·발광 0이 속도 0이나 입자 Kill을 뜻하지 않는다.

폭발 크기·발광과 재생 구간

절대 시간 0.1초 최대 Scale 5/Intensity 2→0.3초 2.5/1→0.5초 0에서 표시 변화와 입자 나이/NormalizedAge/1초 재생 구간을 따로 추적할 수 있다.

폭발 크기·발광과 재생 구간

NIAGARA · CH8-5

키 시간·재생 구간·입자 수명을 구분합니다

가로축은 Sequencer의 절대 시간(초)입니다. 크기와 발광은 서로 다른 최대값을 각각 100%로 정규화해 같은 선으로 표시했습니다.

폭발 크기·발광과 재생 구간크기와 발광 배율은 0.1초에 각각 5와 2가 되고 0.5초에 0으로 선형 감쇠합니다. Life Cycle 구간은 0.1초부터 1초까지입니다.크기 · 발광 배율각 최대값 = 100%1005000.00.10.51.0sLife Cycle 구간0.1s 시작1.0s 끝
키 시간과 Life Cycle 구간절대Sequencer시간0.1최대→0.5제로.최대Scale5/Intensity2는각100%정규화.0.1→1.0LifeCycle별도구간.입자NormalizedAge축이아니다.크기 · 발광 배율각 최대값 = 100%1005000.00.10.51.0sLife Cycle 구간0.1s 시작1.0s 끝

서로 다른 실제 값

0.1초의 Scale은 5, Intensity는 2입니다. 초기 크기 10cm에 Scale 5를 적용하면 크기는 50cm가 됩니다. 둘 다 Linear 키로 0.5초에 0이 됩니다.

보이지 않는 시점

0.5초의 크기·발광 0은 입자 삭제를 뜻하지 않습니다. 예제 입자의 Lifetime은 0.8초이며, Life Cycle 트랙 끝은 1.0초입니다.

시간을 제어하는 방식

Life Cycle 트랙은 시스템 재생을 제어합니다. Desired Age로 되감아도 외부 이벤트·충돌·난수까지 항상 같은 결과가 되는 것은 아닙니다.

이 그래프의 시간은 Particles.NormalizedAge가 아닙니다. 키 프레임의 표현 가능한 시간과 실제 프레임을 확인합니다.

Scale은 Update의 크기 배율, Intensity는 머티리얼 발광 배율입니다. Linear 키를 읽는 예제이며 Intensity 0이 이동 속도 0을 뜻하지 않습니다.

이 예의 조건

  • 본문과 원 도표에 제시된 사례의 입력·조건을 사용합니다. 설명용 수치나 독립 비교 경로는 각 단계에 표시합니다.
  • 현재 상태·값과 전환 근거의 위치는 모든 단계에서 같습니다. 조건이 맞지 않거나 실행되지 않은 경로를 성공한 동작으로 해석하지 않습니다.

관계도의 보충 설명

원 도표의 제목·노드·관계·조건·주석
범위원문
본문·주석가로축은 Sequencer의 절대 시간(초)입니다. 크기와 발광은 서로 다른 최댓값을 각각 100%로 정규화해 같은 선으로 표시했습니다.
노드·연결선 라벨각 최댓값 = 100%
노드·연결선 라벨1.0 s
노드·연결선 라벨0.1 s 시작
노드·연결선 라벨1.0 s 끝
관계·조건 설명Sequencer 절대 시간 0.1초에 최댓값→0.5초에 영으로 변한다. 최댓값 Scale 5/Intensity 2는 각각 100%로 정규화한다. 0.1→1.0초 Life Cycle은 별도 구간이다. 입자의 NormalizedAge 축이 아니다.
본문·주석0.1초의 Scale은 5, Intensity는 2입니다. 초기 크기 10 cm에 Scale 5를 적용하면 크기는 50 cm가 됩니다. 둘 다 Linear 키로 0.5초에 0이 됩니다.
예의 값과 변화
관찰·상황값·보충 정보변화·이유
0.1초 키

Sequencer 절대 시간의 최댓값을 읽는다.

  • Scale: 5
  • Intensity: 2
  • 이 시간은 Particles.NormalizedAge가 아니다.
0.3초 중간

Linear 감쇠 중간과 입자 나이를 구분한다.

  • Scale/Intensity: 2.5 / 1
  • Age/NormalizedAge: 0.2s / 0.25
  • 0.1초 Spawn·Lifetime 0.8초라는 계산 가정을 명시한다.
0.5초 가시성

두 배율이 0이 되어도 수명 종료와 구분한다.

  • Scale/Intensity: 0 / 0
  • Life Cycle 구간: 0.1..1 s
  • 크기·발광 0이 속도 0이나 입자 Kill을 뜻하지 않는다.

Scale과 Intensity는 각각 초기 크기의 배율과 머티리얼 발광 배율입니다. Intensity가 0이라고 초기 속도가 0으로 덮어써지는 것은 아닙니다. 설정된 생존 시간·물리 운동과 화면 가시성을 따로 봅니다.

예시: 같은 시점의 키 값과 입자 나이 나누기

원 키의 Linear 구간 0.1→0.5초에서 0.3초는 절반 지점입니다. Scale은 2.5, Intensity는 1이고 초기 10 cm의 표시 크기 입력은 25 cm입니다. 계산 연습에서는 시작 0.1초에 입자가 생성되고 입자 나이가 생성 뒤 경과 시간과 같다고 가정하므로 입자 나이는 0.2초, NormalizedAge는 0.2/0.8=0.25입니다. 키 시간 0.3과 정규화 나이 0.25는 다른 수입니다.

같은 가정에서 0.4초의 Scale·Intensity·크기·NormalizedAge를 계산하세요. 0.5초에 크기와 발광이 0이 된다는 이유로 입자 수명이 0.4초로 끝났다고 판단해도 되는지도 설명하세요.

절대 시간에서 시작 시점을 먼저 빼기

감쇠 구간의 진행률은 (0.4−0.1)/(0.5−0.1)=0.75이므로 Scale 1.25, Intensity 0.5, 크기 12.5 cm입니다. 입자 나이 0.3초를 수명 0.8초로 나눈 NormalizedAge는 0.375입니다. 0.5초의 나이는 이 가정에서 0.4초여서 0.8초 수명 종료와 같지 않습니다. 트랙 종료·리셋·외부 충돌에 따른 실제 실행은 별도로 확인합니다.

Sequencer 이벤트

특정 프레임의 명령은 Event Track의 Trigger 키에서 Director Blueprint의 endpoint를 바인딩해 처리합니다. 대상 Actor/Component를 전달하고 그 참조로 Set Niagara Variable이나 Activate를 호출합니다. 이는 Niagara 내부의 이미터 Event Handler로 임의의 Blueprint 이벤트를 보내는 방식과 다릅니다.

Life Cycle 트랙이 이미 재생을 제어한다면 같은 컴포넌트를 Event Track에서 다시 Reset하지 않습니다. 사운드·카메라 흔들림처럼 별도 동기화가 필요한 동작에 이벤트를 사용하고, 순방향·역방향·스크럽 시 이벤트 발화 정책을 확인합니다.

프리롤과 출력

컷 첫 프레임에 이미 연기나 잔상이 있어야 한다면 프리롤을 확보합니다. Niagara Warmup만 진행하면 외부 액터·충돌 대상의 시간도 함께 진행된다고 가정할 수 없습니다. MRQ의 엔진 Warm Up과 렌더 Warm Up은 다른 역할이며 깊이 버퍼 충돌 등은 실제 렌더 준비가 필요할 수 있습니다. 프리롤 설정

정방향 재생, 되감기 후 재생, PIE, MRQ 출력에서 시작·감쇠·잔상 종료를 비교합니다. 동일 효과를 여러 시퀀스에 재사용하더라도 각 컷의 키와 외부 상태, 품질·동시 효과 수를 함께 확인합니다.