본문 바로가기
이펙트 (FX)/이펙트 팁 : Houdini

[Houdini/Fluid] 캐릭터에 의한 스플래시 튜토리얼 추천 (Splash, Aquaman, Lucas Kazakevicius, Flip)

by Minkyu Lee 2026. 8. 18.

1. 영상 정보

  • 영상 제목: Como criei os SPLASHES em AQUAMAN - Tutorial Houdini
  • 채널명: Lucas Kazakevicius
  • 영상 링크: https://youtu.be/Fgn25CqO33I

 

2. 핵심 요약 (Conclusion)

  • 영화 아쿠아맨(Aquaman) 스타일의 고품질 워터 스플래시(Water Splash) 및 마이크로 드롭렛(Water Drops/Spray) FX를 후디니(Houdini)에서 효율적으로 구현하는 가이드입니다.
  • 캐릭터 콜리전 및 이미터(Emitter) 최적화: Mixamo 애니메이션 지오메트리를 정리(Scale Down, Clean, Group Delete)하고, 필요한 영역에만 지오메트리를 분할(Subdivide) 및 마스킹하여 계산 리소스를 극도로 절약합니다.
  • 다중 레이어 시뮬레이션 시스템:
    1. Main FLIP Hydrodynamics: 메인 수면/물줄기 파티클 시뮬레이션.
    2. Whitewater / Water Drops Layer: Whitewater Solver 및 Custom POP/Pop Fluid 속성을 결합하여 물보라와 큰 물방울을 분리 시뮬레이션.
    3. Fine Mist & Spray Layer: 고속 파티클만을 추출하여 노이즈(POP Force)와 속도 변화를 부여한 세밀한 안개/미세 입자 레이어 구성.
  • 노드 구조 최적화 및 Bounding Box 연동: DOP Network 내부 시뮬레이션 공간을 외부 Bounding Box 파라미터(Expression bbox)와 동적으로 연결하여 물리 시뮬레이션 속도 증대.

3. 타임라인별 상세 정리

1. 애니메이션 지오메트리 전처리 및 Collision Volume 설정 (00:00:00 ~ 00:05:42)

  • Mixamo FBX 데이터 가져오기 및 Clean-up (00:00:00): Mixamo 캐릭터 애니메이션을 임포트한 후, 불필요한 메시 및 텍스처를 제거하기 위해 Blast 및 Clean 노드를 적용합니다. [01:09]
  • 속성 및 그룹 정리 (00:01:24): 시뮬레이션 메모리 낭비를 막기 위해 Point Group 및 Primitive Group을 모두 삭제하고, Point Attribute 중 P와 N(Normal)만 남기고 림(Delete) 처리합니다. [01:34]
  • 스케일 보정 (00:01:55): Maya/Mixamo 스케일(10배 크기)을 후디니 표준 미터(m) 단위로 맞추기 위해 Transform 노드의 Uniform Scale을 0.1로 축소합니다. [02:04]
  • Collision Source 설정 (00:02:27): Collision Source 노드를 연결하여 두 가지 출력 데이터를 생성합니다.
    • Mesh Output: 충돌 계산용 패치 메시.
    • VDB Volume Output: FLIP 충돌용 VDB 속성 (surface, vel). [02:42]
  • VDB Resolution 및 Speed Visualization (00:03:24):
    • Voxel Size를 절반으로 줄여 충돌 정밀도를 향상시킵니다. [03:24]
    • Node Information의 속성 중 v(Velocity)를 클릭하여 Viewport Visualizer를 생성하고 속도 벡터 방향과 크기를 시각화합니다. [04:28]

2. 효율적인 FLIP Emitter 마스킹 및 속도(Velocity) 빌드 (00:05:43 ~ 00:20:58)

  • 바닥 Grid 및 Point Color Transfer (00:06:04):
    • 바닥 Grid 지오메트리 전체를 세분화하면 리소스 낭비가 심하므로, 캐릭터에 검은색(Cd = 0,0,0), 바닥에 흰색(Cd = 1,1,1)을 부여한 뒤 Attribute Transfer 노드로 캐릭터 주변 영역의 색상을 스위칭합니다. [06:49]
    • Group by Expression 노드를 작성해 @Cd.r < 0.5 영역을 선택한 후 Subdivide 노드로 캐릭터 접촉 면 주변만 디테일하게 밀도를 높입니다. [07:44]
  • 이미터 영역 및 내측 갭 마스킹 (00:08:41):
    • 캐릭터 발밑 바로 아래에서 생기는 의미 없는 충돌 파티클을 제거하기 위해, 캐릭터 외곽 라인에만 붉은색 마스크를 씌우고 Color Map 조건문으로 지오메트리를 Blast하여 반지를 형성하는 링 형태의 이미터만 남깁니다. [10:45]
  • Normal 기반 커스텀 Velocity 부여 (00:12:16):
    • 캐릭터 지오메트리의 Normal(N)을 Attribute Transfer로 이미터 포인트에 전달합니다. [12:52]
    • Point VOP 구성:
      1. N 벡터에 Outer Velocity 스칼라 값을 곱해 밖으로 퍼지는 힘을 생성합니다. [13:57]
      2. Constant Vector (0, 1, 0)을 추가하고 Upward Force 스칼라 변수를 곱하여 위로 치솟는 벡터를 합성합니다. [15:12]
      3. Add 노드로 두 벡터를 결합해 v 속성에 대입합니다. [15:54]
    • Simplex Noise (00:17:26): Attribute VOP 내부에서 Simplex Noise를 추가하여 속도장의 가장자리가 일률적으로 튀지 않고 자연스러운 질감을 가지도록 난수를 만듭니다. [17:41]
  • VDB Points 및 Volume Source 변환 (00:18:56):
    • VDB from Polygons 노드를 연결하여 Surface SDF 및 vel 볼륨을 생성하고 FLIP Solver 입력으로 넘겨줄 이미터를 완화합니다. [19:19]

3. Main FLIP Simulation 및 Dynamic Bounding Box 구현 (00:20:59 ~ 00:43:24)

  • DOP Network 구성 및 이미징 프레임 제한 (00:20:59):
    • 캐릭터가 착지하는 프레임(예: Frame 15~26)에만 이미션이 동작하도록 Activation 조건식($F >= 15 && $F <= 26)을 설정합니다. [22:05]
  • 표준 Hscript 표현식을 이용한 Bounding Box 연동 (00:22:12):
    • SOP 단계에서 캐릭터의 가동 범위에 들어맞는 Bound 노드를 생성합니다. [23:02]
    • DOP Network 내부 FLIP Object의 Size와 Center 파라미터에 Hscript 표현식 bbox()를 작성합니다. [25:00]
      • Size X: bbox("../../CHAR_BOUND", D_XSIZE)
      • Center X: bbox("../../CHAR_BOUND", D_XCEN) (Y, Z축 동일 적용) [25:39]
  • FLIP Solver Parameter 조절 (00:27:33):
    • Gravity 노드를 추가하고 Y축 값을 -4.5 ~ -9.8 사이로 튜닝합니다. [28:02]
    • Particle Separation을 0.04로 설정해 베이스 테스트 해상도를 가져가고, 이후 최종 렌더 단에서 0.01 수준까지 올립니다. [41:05]
  • SOP Import 및 Velocity Speed 매핑 (00:28:41):
    • DOP I/O 노드로 DOP 내의 flipfluid 파티클 데이터를 불러옵니다. [28:51]
    • Point VOP를 이용해 속도 벡터 v의 길이(Length)를 구해 speed 스칼라 속성을 생성하고, Ramp Parameter를 적용해 시각화 컬러(Cd)로 변환합니다. [30:00]
  • FLIP 캐시 파일 저장 (00:43:25):
    • File Cache 노드를 생성하여 기본 메인 FLIP 입자를 .bgeo.sc 형식으로 시뮬레이션 저장합니다. [43:35]

4. Whitewater & Secondary Water Drops Layer 구축 (00:43:26 ~ 01:00:10)

  • Whitewater Source 볼륨 추출 (00:43:36):
    • FLIP 파티클 캐시 데이터로부터 Whitewater Source 노드를 연결합니다. [44:11]
    • Curvature 및 Acceleration 마스크 기능을 끄고, 오직 Speed FilterSurface Depth 영역만 활성화하여 물 표면에서 일정 속도 이상으로 튀어 오르는 지점에서만 Whitewater 입자가 발생하도록 마스킹합니다. [45:09]
  • Whitewater Solver & Custom Pop Dynamics (00:46:27):
    • 두 번째 DOP Network를 생성하고 Whitewater Solver를 구축합니다. [46:37]
    • 메인 FLIP의 surface 및 vel VDB 볼륨 데이터를 충돌체/가이드 필드로 가져옵니다. [47:56]
    • Clumping & Foam Control (00:50:55): Foam 계열의 미세 입자가 아닌, 큼직하게 튀는 물방울(Water Drops) 느낌을 형성하기 위해 Whitewater 내부 POP Fluid / POP Attract 노드를 가동시킵니다. [53:07]
    • 파티클 간 모여드는 반경(Radius) 및 반발력(Cohesion) 파라미터를 크게 부여하여 파티클들이 서서히 합쳐지며 무거운 덩어리를 형성하게 합니다. [54:16]
  • SOP Import & Particle Scale 조절 (00:55:43):
    • 생성된 Whitewater 데이터를 SOP로 가져온 후 pscale 값을 조절하여 물방울 입자의 크기를 세밀하게 다듬습니다. [58:27]
    • 이 Whitewater 결과물을 두 번째 캐시 데이터로 저장합니다. [59:45]

5. Fine Spray / Mist Layer 및 최종 합성 (01:00:11 ~ 01:16:24)

  • 고속 입자(Spray Source) 추출 (01:01:23):
    • 메인 FLIP 캐시에서 Blast 노드를 생성하고 표현식 @speed < 15 조건으로 속도가 느린 일반 물 입자들을 완전히 거러냅니다. [01:02:06]
    • 아주 빠른 입자들만 선별하여 미세 스프레이(Spray/Mist)의 발생원(Source)으로 지정합니다. [01:03:29]
  • POP Solver 기반의 공기 저항 및 난류 부여 (01:05:07):
    • 세 번째 DOP Network(POP Solver)를 구축하여 선별된 포인트를 방출시킵니다. [01:05:22]
    • POP Force 노드로 커다란 3D Noise(Amplitude 2000, Size 확대)를 추가하여 물방울이 공기 중에 넓게 산산조각나며 뿌려지는 미세 안개(Mist)를 표현합니다. [01:07:47]
    • POP Drag 노드를 부착해 공기 저항을 시뮬레이션함으로써 미세 입자들이 공기 중에 흩뿌려지며 천천히 감속하게 만듭니다. [01:09:10]
  • 입자 렌더 속성 설정 (Alpha & Pscale Variance) (01:13:26):
    • Attribute Randomize 노드를 활용해 미세 입자의 alpha 값(0.1 ~ 0.4)과 pscale 값을 불규칙하게 무작위화합니다. [01:13:35]
    • 단순 단일 메쉬가 아닌, 메인 FLIP + Whitewater Drops + Fine Spray 3개 레이어를 시각적으로 합성하여 고해상도의 수면 폭발 스플래시 연출을 완성합니다. [01:14:38]

댓글