
Crafting Cinematic Waterfalls – Part 2: Foam, Splashes, and Export Techniques | Community tutorial
This article focuses on enhancing waterfall simulations with cinematic foam and splash effects using Houdini’s Whitewater system. It covers SOP-level wo...
dev.epicgames.com
1. 핵심 요약
Whitewater를 이용해 Foam과 Splash 같은 Secondary FX를 추가하고,
결과를 Unreal Engine으로 가져갈 수 있도록 정리·캐싱·Export하는 것이다.
큰 흐름은 다음과 같다.
Main FLIP Water → Whitewater Source → Foam / Splash → 형태 제어 → Layer 분리 → Cache → VAT / VDB Export 준비 → Unreal Engine
2. 타임라인
1. Main Water만으로는 폭포가 완성되지 않는다
Part 1에서 FLIP Simulation과 Meshing을 통해 폭포의 기본적인 물줄기를 만들었다.
하지만 실제 폭포에서는 물의 본체만 보이는 것이 아니다.
- 물이 빠르게 떨어지면서 깨지는 부분
- 공기와 섞이며 하얗게 보이는 부분
- 바위나 수면과 충돌하면서 튀는 물방울
- 표면에 남아 움직이는 Foam
Part 2에서는 이런 요소를 Houdini Whitewater System을 이용해 Secondary FX로 추가한다.
3. Whitewater를 이용한 Secondary FX
2. Whitewater Source 생성
Whitewater를 아무 곳에서나 발생시키는 것이 아니라 기존 FLIP Simulation의 움직임을 분석해서 필요한 영역에서 생성하는 방식으로 접근한다.
전체 구조는 다음과 같다.
FLIP Simulation
↓
Whitewater Source
↓
Whitewater Simulation
↓
Foam / Splash 등의 Particle
따라서 Whitewater는 독립적인 효과가 아니라 Main Water Simulation에 종속된 Secondary Simulation이라고 이해하면 된다.
3. Foam과 Splash를 구분해서 생각하기
Whitewater Particle이라고 해서 전부 동일한 역할을 하는 것은 아니다.
Foam
- 물의 흐름을 따라 움직이는 흰색 영역
- 상대적으로 물 표면과 관계가 깊다.
- 폭포의 흐름을 더 잘 읽을 수 있게 해준다.
Splash
- 물이 강하게 움직이거나 충돌하면서 튀어나오는 입자
- Main Water에서 떨어져 나가는 느낌이 강하다.
- 폭포의 충돌감과 에너지를 표현하는 데 중요하다.
따라서 완성된 폭포는 개념적으로
Main Water + Foam + Splash
처럼 여러 Layer가 결합된 결과라고 보는 것이 좋다.
4. Secondary FX는 "많이 만드는 것"이 목적이 아니다
4. 필요한 부분에 Whitewater를 집중한다
Whitewater를 많이 생성한다고 무조건 폭포가 좋아지는 것은 아니다.
중요한 것은 어디에서 Foam이나 Splash가 발생해야 자연스러운지를 판단하고 그 부분을 강조하는 것이다.
예를 들어 폭포의 모든 영역이 동일하게 하얗게 보이면 Main Water의 형태를 읽기 어려워질 수 있다.
따라서 Secondary FX 역시 Part 1의 FLIP과 마찬가지로 Simulation 결과를 그대로 사용하는 것이 아니라 형태를 조절하고 필요한 디테일을 선택적으로 사용하는 과정이 중요하다.
5. SOP Level에서 Secondary FX 다루기
5. Whitewater 결과를 후처리한다
Part 2에서는 Whitewater Simulation 자체뿐 아니라 SOP Level Workflow를 이용한 Secondary FX 생성과 정리를 다룬다.
즉,
Simulation
→ 결과 확인
→ 필요한 Particle 선택
→ 형태 조절
→ Layer 정리
→ Cache
와 같은 흐름으로 생각할 수 있다.
여기서 중요한 것은 Simulation을 계속 무겁게 수정하기보다 시뮬레이션 이후 SOP 단계에서도 결과를 충분히 가공할 수 있다는 것이다.
6. Layering이 중요한 이유
6. 폭포를 여러 데이터 Layer로 나눈다
Part 2에서 중요한 키워드 중 하나가 Layering이다. (Epic Developer Community Forums)
완성된 폭포 하나를 거대한 데이터 하나로 취급하는 대신,
- Main Water
- Foam
- Splash
- 기타 Secondary Detail
처럼 역할에 따라 나누어 관리한다.
이렇게 하면 각 요소의:
- 밀도
- 크기
- 표현 방식
- Cache
- Unreal Export 방식
등을 따로 관리할 수 있다.
특히 최종 목적지가 Unreal Engine이기 때문에 모든 FX를 동일한 방식으로 Export할 필요가 없다는 점이 중요하다.
7. Cache 전략
7. Simulation과 후처리를 분리한다
폭포처럼 FLIP + Whitewater가 결합된 작업은 데이터가 무거워질 수 있다.
따라서 중간 결과를 적절하게 Cache하는 것이 파이프라인에서 중요하게 다뤄진다.
큰 구조는 다음처럼 이해하면 된다.
Main FLIP Simulation
↓
Cache
↓
Whitewater Simulation
↓
Cache
↓
SOP Processing
↓
Export용 데이터
이렇게 작업하면 앞 단계의 Simulation을 매번 다시 계산하지 않고 다음 단계 작업을 진행할 수 있다.
8. Unreal Engine을 위한 Export 준비
8. Houdini에서 끝나는 작업이 아니다
Part 2 후반부에서는 Houdini에서 만들어진 결과를 Unreal Engine에서 효율적으로 재생하기 위한 Export 방식으로 넘어간다.
여기서 주요하게 등장하는 방식이:
VAT — Vertex Animation Texture
그리고
VDB — Volume 기반 데이터
다. Epic의 설명에서도 Part 2는 VAT와 VDB 같은 실시간 Export 방식을 소개하며 Unreal Engine에서의 효율성과 시각적 일관성을 고려한다고 명시한다.
9. VAT의 역할
9. Mesh Animation을 Texture 데이터로 전달
Part 1에서 만든 Main Water는 시간에 따라 계속 형태가 변하는 Mesh다.
이런 Geometry Animation을 Unreal에서 그대로 처리하면 비용이 커질 수 있기 때문에 VAT(Vertex Animation Texture) 같은 방식을 사용할 수 있다.
개념적으로는
Houdini의 Animated Geometry
↓
Vertex 움직임 정보를 Texture에 저장
↓
Unreal에서 Shader를 통해 움직임 복원
이라는 구조다.
즉 Unreal이 Houdini Simulation을 직접 실행하는 것이 아니라 미리 계산된 움직임을 효율적인 데이터 형태로 재생하는 것이다.
10. VDB의 역할
10. Volume 계열 FX를 위한 데이터
폭포를 구성하는 모든 요소가 Mesh에 적합한 것은 아니다.
Foam이나 Mist처럼 입자량이 많거나 볼륨적인 성격을 가진 FX는 VDB 기반 데이터로 다루는 방식도 고려된다.
그래서 이 시리즈에서는
Mesh 기반 Water → VAT
Volume / Secondary FX → VDB 계열
처럼 FX 특성에 맞는 Export 방식을 고려한다. Part 2는 이런 실시간 Export 방법을 소개하는 연결 단계이며, 실제 Unreal 통합은 Part 3에서 이어진다.
최종 정리
Part 1 — 폭포의 큰 형태
Source
→ FLIP Simulation
→ POP Force / Art Direction
→ Main Water
→ VDB Meshing
→ Loop
Part 2 — 디테일 추가
Main Water
→ Whitewater Source
→ Whitewater Simulation
→ Foam / Splash
→ SOP Processing
→ Layering
→ Cache
Export 준비
Main Water / Secondary FX
→ VAT / VDB 등으로 데이터 변환
→ Unreal Engine
즉 Part 1은 폭포의 "대형(Macro)"을 만들고, Part 2는 "중·소형(Meso/Micro)" 디테일을 추가한다고 이해하면 좋다.
댓글