
1. 영상 정보
- 영상 제목: [언리얼 페스트 서울 2025] Day2 꼭 써봐야 할 나이아가라 고급 개념들
- 채널명: Unreal Engine KR
- 영상 링크: https://youtu.be/M_36JNH0tz4
2. 핵심 요약 (Conclusion)
- 나이아가라(Niagara) 패러다임의 전환: 기존 언리얼 엔진 3/캐스케이드(Cascade) 방식의 전통적 파티클 생성기 개념에서 벗어나, 데이터 및 로직을 직접 프로그래밍하는 종합 '비주얼 이펙트 연산 시스템'으로 나이아가라를 활용하는 방법 제시
- 시뮬레이션 스테이지(Simulation Stage) 및 커스텀 루프: 파티클 단위 업데이트 외에도 렌더 타겟 픽셀, 그리드 셀, 어레이 요소를 대상으로 나이아가라 내부에서 별도의 커스텀 루프(Map 노드 등)를 구동하여 독자적 데이터 처리 기법 구현
- 스켈레탈 매시 UV 연동 및 파티클 상호작용: 파티클 위치와 스켈레탈 매시의 삼각형/UV 공간을 매핑하여 캐릭터 표면에 동적 마스킹, 디스플레이스먼트, 액체 흘러내림, 나나이트 디스멤버먼트(분해/재조립) 효과 구현
- 네이버링 그리드 3D(Neighboring Grid 3D) 최적화: 모든 파티클과 그리드가 상호 조회를 수행할 때 발생하는 $O(N \times M)$ 복잡도의 루프 병목을 3D 인덱싱 그리드로 전환하여 $O(N)$ 수준으로 급격히 단축하는 최적화 구조 제시
- 나이아가라 데이터 채널(Niagara Data Channels, NDC): 탄환 충격이나 발자국처럼 수백 개씩 스폰되는 개별 이펙트 액터를 단일 이펙트 시스템 내 데이터 인젝션(Batch Processing) 방식으로 통합해 액터 오버헤드 획기적 절감
- 생산성 및 최적화 고급 도구 모음: 경량화 파티클용 라이트웨이트 이펙트(Lightweight Emitter), 커스텀 스크래치 패드용 디버그 드로우(Debug Draw), PBD 기반 파티클 간 물리 충돌, 지버퍼(G-Buffer) 및 리지드 매시 쿼리 DI, 나이아가라 디버거(Niagara Debugger) 활용법 공유
3. 타임라인별 상세 정리
1. 개요 및 나이아가라에 대한 접근 방식 전환 (00:00:00 ~ 00:04:32)
- 발표자 및 세션 배경 (00:00:00): 에픽게임즈 개발자 관계 팀의 수석 테크니컬 아티스트(Principal TA) 크리스 머피(Chris Murphy)가 대규모 프로덕션에서 간과되기 쉬운 고급 나이아가라 개념을 설명합니다. [00:17]
- 캐스케이드 방식 답습의 문제점 (00:02:41): 많은 개발자가 나이아가라를 과거 캐스케이드(Cascade) 파티클 시스템의 연장선으로만 다루고 있습니다. [02:53]
- 시스템 정의의 재정립 (00:07:29): 나이아가라는 단순 파티클 방출기가 아니라 비주얼 이펙트를 프로그래밍하는 데이터 처리 시스템으로 다루어야 캐스케이드의 한계를 넘어선 고차원적 연출이 가능합니다. [07:58]
2. 시뮬레이션 스테이지(Simulation Stage)와 그리드(Grid) 연동 (00:04:33 ~ 00:11:34)
- 파티클이 없는 템플릿의 구조 (00:04:33): 언리얼 에디터의 기본 나이아가라 템플릿 중 파티클 방출(Update/Spawn) 로직이 전혀 없고, 에미터 연산과 렌더 타겟 처리만 수행하는 예시를 통해 고급 구조의 기본을 설명합니다. [05:01]
- 시뮬레이션 스테이지의 역할 (00:06:19): 파티클 업데이트 루프와 별개로 동작하는 커스텀 업데이트 루프입니다. 파티클 단위뿐만 아니라 렌더 타겟의 모든 픽셀, 2D/3D 그리드의 모든 셀, 어레이의 모든 요소 단위로 틱(Tick)을 실행할 수 있습니다. [07:05]
- 그리드 데이터 인터페이스 (Grid DI) 활용 (00:08:11): 2D/3D 그리드의 각 셀에 임의의 커스텀 변수(예: StackContext.Temperature)를 저장하여 연속적인 공간 데이터를 유지 관리할 수 있습니다. [08:41]
- 데이터 인터페이스(DI)와 파티클 리더(Particle Reader) (00:09:17):
3. 렌더 타겟(Render Target) 연동 및 스켈레탈 매시 UV 인터랙션 (00:11:35 ~ 00:21:20)
- 파티클 충돌을 이용한 렌더 타겟 페인팅 (00:11:35):
- Map 노드 (Reverse For-Loop) 작동 원리 (00:15:23):
- 스켈레탈 매시 표면 인터랙션 확장 (00:17:33):
4. 네이버링 그리드 3D(Neighboring Grid 3D)를 이용한 O(N) 공간 탐색 최적화 (00:21:21 ~ 00:33:33)
- 전수 조사 방식의 연산 병목 (00:20:39):
- 모든 그리드 셀($520 \times 520$)이 모든 파티클($N$개)을 전수 조사하면 루프 횟수가 폭발하여 GPU 연산에 심각한 과부하가 발생합니다. [21:11]
- 네이버링 그리드 3D 개념 (00:21:39):
- 네이버링 그리드 3D 구축 단계 (00:23:40):
- 플러그인 및 노드 활성화: Niagara Fluids 플러그인을 활성화하고, 에디터 검색 시 Search Only Library 옵션을 해제하여 숨겨진 네이버링 그리드 노드를 노출시킵니다. [24:13]
- 그리드 초기화 (Initialize Grid): 3D 그리드 해상도(예: 20x20x20)와 셀당 최대 추적 파티클 수(예: Max 50개)를 설정합니다. [24:46]
- 월드 트랜스폼 매핑 (Unit to World Transform): 0~1 단위 그리드 공간과 실제 월드 공간(위치 오프셋, 회전, 크기 Extents) 간 변환 행렬 매트릭스를 구성합니다. [25:59]
- 그리드 채우기 (Fill Grid): 파티클 업데이트 루프에서 각 파티클을 해당하는 3D 그리드 셀에 등록합니다. [27:11]
- 셀 내부 쿼리 (Query Neighbor Grid): 특정 위치에서 Min 노드로 한계치(Max 50개) 내의 인덱스만 추출하여 필요한 파티클 정보만 정밀하게 탐색/수행합니다. [29:39]
- 실무 응용 분야 (00:31:57): 렌더 타겟 라이팅, 파티클 간 상호 충돌, 피부 부풀어 오름 연출, 캐릭터 데미지 및 상처 치유 마스크, 전장의 안개(Fog of War) 리플렉션 등에 활용 가능합니다. [32:42]
5. 나이아가라 데이터 채널(Niagara Data Channels, NDC)을 활용한 이펙트 배치 처리 (00:33:34 ~ 00:41:05)
- 개별 액터 스폰의 한계 (00:33:44): 총기 난사나 다중 플레이어 사격 시 탄환 피격 불꽃(Impact) 이펙트를 매번 독립된 나이아가라 시스템 액터로 스폰하면 순간적으로 수백 개의 시스템 인스턴스가 생겨 극심한 성능 저하가 발생합니다. [34:21]
- NDC의 작동 원리 (Batch Processing) (00:34:48):
- NDC 설정 과정 (00:36:16):
- 최적화 성과 (00:40:05): 동일한 수백 발의 연사 연출 시, 기존 125~130개로 치솟던 나이아가라 시스템 액터 수량이 단 25개(또는 1개) 수준으로 급감하여 프레임 드랍을 원천 차단합니다. [40:15]
6. 필수로 알아야 할 나이아가라 고급 기능 및 최적화/디버깅 도구 (00:41:06 ~ 00:48:03)
- 라이트웨이트 에미터 / 스테이트리스 에미터 (Lightweight / Stateless Emitter) [언리얼 5.4+] (00:41:06):
- 디버그 드로우 노드 (Debug Draw Nodes) (00:41:59):
- 스크래치 패드 내부에서 Debug Draw Interface를 추가하여 Cone, Sphere, Vector 등 연산용 벡터와 범위를 뷰포트에 시각화하여 디버깅할 수 있습니다. [42:29]
- 위치 기반 다이내믹스 (Position Based Dynamics, PBD) 파티클 충돌 (00:42:57):
- 시뮬레이션 스테이지 내에 Particle Collision 노드를 삽입하여 파티클과 파티클 간의 물리적 반발력 및 충돌을 처리합니다. 파이프 파열, 파편 붕괴 등의 리얼한 밀도감을 구현합니다. [43:11]
- 리지드 매시 콜리전 쿼리 DI (Rigid Mesh Collision Query Data Interface) (00:43:55):
- 특정 태그가 지정된 액터나 디스턴스 필드(Distance Field)에 근접했는지 파악하여, 캐릭터 접근 시 파티클 발광 및 형태 변형 로직을 구동합니다. [44:40]
- 지버퍼 데이터 인터페이스 (G-Buffer Data Interface) (00:45:34):
- 현재 화면의 Depth, Normal, Color 정보에 실시간 접근합니다. 파티클이 배경 색상을 샘플링하여 보호색을 띠거나굴절/투명 효과를 극대화할 수 있습니다. [45:48]
- 나이아가라 디버거 (Niagara Debugger) (00:46:30):
댓글