레벨 시퀀스와 나이아가라 통합
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초 구간 종료와 시스템 완료 정책도 확인합니다.
Scale은 Update의 크기 배율, Intensity는 머티리얼 발광 배율입니다. Linear 키를 읽는 예제이며 Intensity 0이 이동 속도 0을 뜻하지 않습니다.
Scale과 Intensity는 각각 초기 크기의 배율과 머티리얼 발광 배율입니다. Intensity가 0이라고 초기 속도가 0으로 덮어써지는 것은 아닙니다. 설정된 생존 시간·물리 운동과 화면 가시성을 따로 봅니다.
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 출력에서 시작·감쇠·잔상 종료를 비교합니다. 동일 효과를 여러 시퀀스에 재사용하더라도 각 컷의 키와 외부 상태, 품질·동시 효과 수를 함께 확인합니다.