본문 바로가기
vfxai 잡학지식 vfxai 잡학지식

후디니 FLIP Particle Separation과 입자 수 계산

vfx 잡학지식 읽는 시간 약 11분 조회 5

FLIP Particle Separation은 FLIP 물 입자 사이의 간격입니다. 같은 2×2×2m 물 덩어리를 0.20m에서 0.10m로 바꾸자 첫 프레임 입자는 1,000개에서 8,000개로 늘었습니다. 그런데 저장한 .bgeo.sc 크기와 시뮬레이션 시간은 8배가 아니었습니다. 그럼 Separation을 절반으로 줄일 때 실제로 무엇이 8배가 될까요?

입자 수는 부피와 Separation으로 먼저 가늠할 수 있습니다. Grid Scale은 복셀 한 변을 정하고, Particle Radius Scale은 입자의 크기를 바꿉니다. 아래 계산기와 Houdini 19.5.435 실측으로 세 값을 구분해 보겠습니다.

입자 수는 부피 ÷ Separation³으로 추정합니다

물 덩어리가 2×2×2m라면 부피는 8m³입니다. Separation이 0.20m라면 Separation³은 0.008m³이므로, 단순 격자 기준 입자 수는 8 ÷ 0.008 = 1,000개입니다.

계산식은 예상 입자 수 ≈ 부피 ÷ Separation³ × 입자당 채움 비율(k)입니다. k는 Separation³ 한 칸에 몇 개의 입자 중심이 들어가는지 나타내는 배열 보정값으로, 입자 배열과 물체 경계에 따라 달라집니다. 이 추정은 FLIP Object DOP의 Input Type이 Surface SOP일 때를 기준으로 합니다. Particle Field를 쓰면 초기 입자 배치는 입력 지오메트리에서 오므로 Particle Separation을 바꿔도 초기 점 수가 직접 바뀌지 않습니다. 따라서 Surface SOP에서도 이 식은 시작값이지, 어떤 형상에도 맞는 정확한 카운트는 아닙니다.

Separation을 0.20m에서 0.10m로 낮추면 한 변의 간격은 절반이 됩니다. 같은 부피 안에 들어가는 3차원 간격 셀은 각 축에서 두 배씩 늘어나므로, 이상적인 격자에서는 총수가 2×2×2배가 됩니다. 그렇다면 복셀과 디스크 캐시도 같은 비율로 늘어날까요?

Grid Scale은 복셀 한 변을 정합니다

FLIP Object DOP의 Grid Scale은 Particle Separation에서 advection grid의 division size를 계산하는 배수입니다. 복셀 한 변은 Separation × Grid Scale로 가늠할 수 있습니다.

Particle SeparationGrid Scale복셀 한 변
0.20m2.00.40m
0.10m2.00.20m
0.10m4.00.40m

Grid Scale을 2.0으로 고정한 채 Separation을 반으로 줄이면 복셀 한 변도 반이 됩니다. 같은 3차원 영역을 밀집 격자로 채운다고 가정하면 복셀 수 역시 약 8배입니다. 반대로 Grid Scale을 2.0에서 4.0으로 올리면 복셀 한 변은 이전 크기로 유지할 수 있지만, 입자 수는 Separation에 따라 계속 늘어납니다.

후디니 FLIP Object의 Particle Separation 0.1, Particle Radius Scale 1.2, Grid Scale 2 기본값
Houdini 22.0.466 Apprentice에서 새로 만든 FLIP Object의 기본값입니다. Particle Separation 0.1, Particle Radius Scale 1.2, Grid Scale 2이므로 복셀 한 변은 0.1×2 = 0.2입니다.

Particle Radius Scale은 입자 반지름을 바꿉니다

Particle Radius Scale은 Separation에 곱해 입자 반지름을 정합니다. Separation이 0.20m이고 Radius Scale이 1.2라면 반지름 기준값은 0.24m입니다. Separation을 0.10m로 낮추고 같은 배수를 유지하면 0.12m가 됩니다.

이 값은 입자 크기와 표면 스무딩에 영향을 주지만, 입자 수를 직접 정하는 파라미터는 아닙니다. 입자 수를 바꾸려면 Particle Separation을 보세요. Radius Scale과 Grid Scale을 함께 바꾸면 표면과 격자 해상도까지 달라지므로, 처음에는 Separation만 바꿔 비교하는 편이 원인을 읽기 쉽습니다.

FLIP Particle Separation 계산기

물 덩어리의 가로·세로·높이와 Separation을 입력하세요. 입자당 채움 비율(k) 1.0은 단순 격자 추정입니다. Grid Scale과 Radius Scale도 실제 노드 값에 맞춰 바꿀 수 있습니다.

값을 입력하고 계산하기를 누르세요.

입자 수는 부피 ÷ Separation³ × 입자당 채움 비율(k)입니다. 복셀 수는 물이 든 상자를 밀집 격자로 채운 단순 추정입니다. .bgeo.sc 용량은 8m³·Separation 0.20m에서 측정한 11,187 bytes를 입자 수에 비례시킨 참고치이며, 실제 파일이나 Houdini 피크 메모리가 아닙니다.

기본값 2×2×2m, Separation 0.20m, Grid Scale 2.0에서는 입자 약 1,000개, 복셀 한 변 0.40m, 밀집 상자 복셀 125개, 첫 프레임 파일 약 10.92KiB를 표시합니다. 마지막 값은 같은 점 속성을 쓴 실측 파일을 기준으로 한 근사치입니다.

Houdini 19.5.435에서 같은 물 부피를 채워 봤습니다

창 없이 실행한 Houdini 19.5.435 hython에서 닫힌 2×2×2 Houdini unit 상자를 만들었습니다. 씬 단위를 미터로 보고 부피는 8m³로 잡았습니다. FLIP Object DOP, Gravity, FLIP Solver DOP을 연결하고 Particle Separation만 0.20m, 0.15m, 0.10m로 바꿨습니다.

Grid Scale은 2.0, Particle Radius Scale은 기본값 1.2, 중력은 9.80665m/s²로 유지했습니다. 첫 프레임의 DOP Import Geometry를 .bgeo.sc로 저장했습니다. 아래 시간은 초기화 비용이 큰 첫 프레임을 빼고 2~5프레임 cook 시간을 합산한 값입니다.

Separation첫 프레임 입자복셀 한 변첫 프레임 .bgeo.sc2~5프레임 시간 합계
0.20m1,000개0.40m11,187 bytes (10.92 KiB)0.159초
0.15m2,592개0.30m25,151 bytes (24.56 KiB)0.186초
0.10m8,000개0.20m73,757 bytes (72.03 KiB)0.277초

0.20m에서 0.10m로 간격을 절반으로 줄였을 때 첫 프레임 입자는 정확히 8배였습니다. 0.15m 결과는 단순 계산값 2,370개보다 많은 2,592개였습니다. 입자 배열과 형상 경계가 달라지면 부피 ÷ Separation³만으로 실제 개수를 맞출 수 없다는 사례입니다.

.bgeo.sc 파일은 10.92KiB에서 72.03KiB로 약 6.6배가 됐습니다. 이 파일은 DOP Import Geometry의 입자 데이터를 저장한 것으로, FLIP Solver가 쓰는 모든 volume grid나 피크 메모리를 포함하지 않습니다. 프레임 2~5 시간 합계는 0.159초에서 0.277초로 약 1.7배였지만, 작은 장면 하나의 단일 실행값입니다.

기본 재시딩이 켜져 있어 프레임 5에는 입자 수가 각각 1,023개, 2,617개, 8,851개로 달라졌습니다. 그래서 표의 입자 수는 모두 초기화된 첫 프레임 값입니다. 다른 CPU, 형상, CFL 조건, 서브스텝, 캐시 속성에서는 크기와 시간이 달라집니다.

Houdini 22 문서와 19.5 테스트의 차이

현재 SideFX Houdini 22 FLIP Object DOP 문서도 Particle Separation을 입자 간격이자 초기 입자 수를 조절하는 값으로 설명합니다. Particle Radius Scale은 Separation에 곱하는 입자 반지름 배수이고, Grid Scale은 Separation에서 advection grid division size를 계산하는 배수입니다. Particle Separation, Particle Radius Scale, Grid Scale의 정의는 19.5 문서와 현재 문서에서 같은 의미로 설명됩니다.

Houdini 22 문서에는 SOP 기반 FLIP Container와 FLIP Solver도 별도 노드로 나옵니다. SideFX는 이 노드들이 Houdini 19.5부터 제공된다고 표시합니다. 이 글의 표는 SOP 노드가 아니라 DOP FLIP Object를 19.5.435에서 실행한 결과이므로, 두 워크플로의 캐시 수치로 섞어 읽지 마세요.

간격을 반으로 줄이면 입자와 복셀 수는 약 8배입니다

고정된 3차원 부피에서 Separation을 반으로 줄이면 입자 수는 배열 조건에 따라 약 8배, Grid Scale을 고정했을 때 이상적인 밀집 복셀 수도 약 8배가 되지만, .bgeo.sc 크기와 계산 시간은 정확히 8배가 아닙니다.

이제 첫 질문에 답할 수 있습니다. 8배는 입자 간격의 세제곱에서 나오는 해상도 추정값입니다. 메모리 전체를 8배로 보는 숫자가 아닙니다. 실제 디스크 파일과 시뮬레이션 시간은 저장 속성, 압축, 활성 영역과 solver 설정에 따라 직접 확인해야 합니다.

실제 샷에서는 이 순서로 Separation을 정하세요

  • 물 덩어리의 실제 크기와 Houdini 씬 단위를 확인하세요.
  • 초기 Particle Separation으로 예상 입자 수를 계산하고, 낮은 해상도에서 짧은 구간을 먼저 시뮬레이션하세요.
  • Grid Scale로 복셀 한 변을 확인하세요. 입자만 늘리고 격자 해상도는 유지하고 싶다면 Grid Scale 조정 결과를 별도로 비교하세요.
  • Particle Radius Scale은 입자 수가 아니라 입자 반지름과 표면 스무딩을 바꾸는 값으로 다루세요.
  • 실제 첫 프레임 .bgeo.sc 크기와 몇 프레임의 cook 시간을 기록하세요. 피크 메모리는 별도로 모니터링하세요.

Pyro에서도 복셀 크기를 낮추면 밀집 격자 기준 계산량이 빠르게 늘어납니다. FLIP과 Pyro의 저장 방식은 다르지만, 해상도와 메모리 추정의 차이를 비교하려면 후디니 Pyro Voxel Size를 반으로 줄였을 때의 계산과 실측도 함께 확인하세요.

한 줄 정리

FLIP Particle Separation을 절반으로 줄이면 입자 수와 밀집 격자 수는 약 8배, 캐시 파일과 실제 시간은 직접 측정해야 합니다.

공식 자료

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.