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

후디니 Heightfield 해상도 계산: 크기·Grid Spacing·메모리

vfx 잡학지식 읽는 시간 약 8분 조회 1

후디니 Heightfield의 해상도는 Size와 Grid Spacing으로 정해집니다. 각 축의 샘플 수는 Size ÷ Grid Spacing에 가까우며 전체 셀 수는 X×Y입니다. 간격을 절반으로 줄이면 셀 수와 float32 레이어 메모리는 대략 네 배가 되므로, 디테일을 올리기 전에 계산해 보세요.

Heightfield 해상도·메모리 계산기

같은 길이 단위로 입력하세요. 메모리는 float32 기준이며 Erode 배수는 대략적인 작업량 비교입니다.

계산 중입니다.

기준은 500×500 cells, 5회입니다. Unreal 값은 Epic의 정사각형 권장 크기와 가장 가까운 항목이며, 직사각형 지형과 스케일은 별도로 확인하세요.

Size와 Grid Spacing이 셀 수를 정합니다

HeightField SOP는 height와 mask라는 두 개의 2D volume primitive를 만듭니다. Houdini 19.5.435에서 Size 1000×1000m일 때 Grid Spacing 2m는 500×500, 3m는 333×333, 4m는 250×250으로 측정됐습니다. 1000÷3은 333.33이지만 출력은 333 샘플이었습니다. Size 2000m와 spacing 3m에서는 667개였습니다. 소수 비율에서는 계산식만으로 끝내지 말고 실제 volume 해상도를 확인하세요.

1000m 정사각형해상도셀 수float32 두 레이어 계산값volume memoryusage 실측
spacing 2m500×500250,0002,000,000 bytes2,033,488 bytes
spacing 3m333×333110,889887,112 bytes901,944 bytes
spacing 4m250×25062,500500,000 bytes508,912 bytes

float32 한 레이어의 계획값은 셀 수×4 bytes입니다. 실제 volume memoryusage에는 작은 관리 비용이 더해졌습니다. 이 수치는 volume primitive 메모리이며 Houdini 프로세스의 피크 메모리나 디스크 캐시 크기가 아닙니다. height, mask 외에 debris·sediment 같은 레이어를 만들면 그 배열만큼 메모리가 더 필요합니다.

후디니 HeightField SOP Size 1000 Grid Spacing 2 설정과 HeightField Noise 네트워크
Houdini 22.0.466 Apprentice의 HeightField 파라미터입니다. Size 1000×1000, Grid Spacing 2로 두면 height·mask 레이어가 각각 500×500 셀이 됩니다.

Erode 반복 수와 cook 시간도 비교했습니다

Houdini 19.5.435의 HeightField Erode::2.0을 사용했습니다. Size 2000×2000m, Freeze at Frame 2(한 프레임), Cache Simulation과 시각화는 껐습니다. Water와 Debris의 Spread Iterations를 같은 값으로 두고 각 조합을 세 번 실행한 중앙값입니다.

Spacing / 해상도1회5회10회
2m / 1000×10000.307초0.346초0.444초
3m / 667×6670.271초0.278초0.297초
4m / 500×5000.260초0.373초0.252초

Spacing 4m의 5회 값처럼 측정 시간이 셀 수나 반복 수에 단순 비례하지 않았습니다. 이 값은 Windows 11 Pro, AMD Ryzen 7 5800X3D에서의 짧은 실측이며, 다른 씬의 완료 시간을 보장하지 않습니다. 계산기의 Erode 배수는 (셀 수×반복 수)÷(250,000×5)인 작업량 비교값입니다. 실제 시간은 같은 씬과 설정으로 직접 cook해 확인하세요.

HeightField Output과 Unreal 해상도는 따로 맞추세요

HeightField Output에서 Use Resolution을 끄면 입력 volume 해상도를 출력 픽셀 수로 사용하고, 켜면 X·Y 픽셀 수를 별도로 지정합니다. 따라서 작업용 Heightfield 해상도와 게임 엔진에 넘길 heightmap 해상도를 분리할 수 있습니다. PNG 등 일반 이미지 형식은 레이어를 RGBA 채널에 나눠 담고, EXR은 별도 plane으로 저장할 수 있습니다.

Epic의 Unreal Engine 5.0 Landscape Technical Guide는 component와 section 구성을 바탕으로 505×505, 1009×1009, 2017×2017, 4033×4033, 8129×8129 등 권장 heightmap 크기를 제시합니다. 모든 지형에 강제되는 하나의 크기는 아닙니다. HeightField Output의 실제 픽셀 수를 맞춘 뒤 Unreal import preview에서 component 수와 X·Y 스케일을 확인하세요. heightmap 해상도가 같아도 물리적 지형 폭이 자동으로 일치하지는 않습니다.

Pyro처럼 3차원 volume의 복셀 수와 메모리를 따로 계산할 때는 후디니 Pyro Voxel Size 메모리 계산을 참고하세요. 지형은 2D 배열이라 해상도 증가 차원이 다릅니다.

Heightfield Grid Spacing을 정하는 순서

  • 실제 작업 범위에 맞춰 Size X와 Size Y를 정하세요.
  • 필요한 지형 디테일에 맞춰 Grid Spacing 후보를 고르세요. 넓은 배경 지형은 큰 간격으로 시작하고, 카메라가 가까이 오는 지형은 세부가 보이는지 확인해 간격을 줄이세요.
  • 예상 샘플 수와 float32 레이어 수를 곱해 메모리 배열 크기를 비교하세요.
  • HeightField SOP를 cook한 뒤 Volume Info 또는 출력 해상도에서 실제 샘플 수를 확인하세요.
  • HeightField Output과 Unreal import preview에서 최종 픽셀 수, component 구성, 스케일을 따로 점검하세요.

spacing을 줄이기 전에 HeightField Noise의 패턴 크기도 확인하세요. Noise가 표현하려는 가장 작은 형태보다 샘플 간격이 크면 결과가 거칠거나 계단처럼 보일 수 있습니다. 반대로 화면에서 식별되지 않는 작은 디테일까지 모두 저장하면 지형 레이어만 커지고 작업 시간이 길어집니다. 최종 카메라 거리와 엔진의 목표 해상도에 맞춰 필요한 detail만 남기세요.

Houdini 19.5와 22 문서의 Erode 버전을 구분하세요

실측은 Houdini 19.5.435의 HeightField Erode::2.0입니다. 현재 SideFX 문서의 HeightField Erode는 3.0이며, per-frame Iterations 항목을 설명합니다. 19.5에서는 Freeze at Frame과 Water·Debris Spread Iterations가 별도 파라미터이므로 UI와 반복 개념을 그대로 대응시키지 마세요. Size와 Grid Spacing을 정한 뒤 실제 해상도와 레이어 수로 메모리를 계산하고, Erode는 해당 Houdini 버전의 설정으로 직접 측정하는 것이 안전합니다.

공식 자료

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.