Posted: January 29, 2018
Version: Houdini 16
VDB from Polygons Surface Operator
VDB from Polygons SOP 역시 인풋 지오메트리(폴리곤) 를 볼륨으로 변환시켜 준다.
VDB from Polygons SOP 노드
VDB from Polygons SOP 은 다음과 같은 특징을 가진다.
1. Output: VDB 볼륨
VDB from Polygons 노드는 Open VDB Volume 을 생성한다.
2. 볼륨 타입: Scalar 필드
만들어진 볼륨의 타입은 Float(Scalar) 필드 이다.
3. Input: Water-Tight
인풋으로 오는 도형에 빈틈이 없고 막혀있어야(Water-Tight) 정확한 볼륨을 계산해 준다.
이러한 특징들은 아래 예제를 따라하며 복습하도록 한다.
VDB from Polygons 예제
VDB from Polygons 노드를 이용해서 토러스 오브젝트를 볼륨으로 변환시켜 보자.
후디니를 열고 /obj 에 토러스 지오메트리를 만든다.
만들어진 'torus1' 노드를 더블클릭하여 Geometry 레벨로 들어간다.
TAB 메뉴에 'VDB from' 라고 치면 VDB 볼륨을 생성하는 여러가지 노드를 볼 수 있다.
토러스 오브젝트는 폴리곤이므로 VDB from Polygons 노드를 선택한다.
만들어진 'vdbfrompolygons1' 노드를 'torus1' 에 연결한다.
연결한 뒤에는 'vdbfrompolygons1' 노드의 Display Flag 를 선택한다.
다음과 같이 토러스 지오메트리가 VDB 볼륨으로 변환된다.
결과물이 VDB 볼륨이기 때문에 Voxel 들은 최대한 토러스 형태에 가깝게 형성된다.
Wireframe 모드에서는 볼륨이 나타나지 않는다. 씬 뷰에서 단축키 'w' 를 눌러서 Shaded 모드로 확인하도록 한다.
'vdbfrompolygons1' 노드 위에서 마우스 중간버튼으로 요약 정보를 확인하자.
현재 11,468(35x15x35) 개의 Voxel 들로 이루어진 것을 확인할 수 있다.
요약 정보에는 추가로 Voxel Size 라는 것이 보인다.
Voxel Size 정보는 볼륨 변환에 사용되는 Voxel 개수에 영향을 준다.
이는 'vdbfrompolygons1' 노드에 있는 Voxel Size 속성에서 결정한다.
기본값인 0.1 은 0.1 미터당 한개의 Voxel이 채워진다는 뜻이다.
예를 들어, X축으로 1미터 길이의 오브젝트는 X축으로 10개의 Voxel이 채워지게 된다.
Voxel Size 값이 낮을수록 Voxel 개수가 늘어나면서 인풋의 디테일을 더욱 잘 나타낼 수 있다.
값을 너무 낮게 설정할 경우, 버벅거림과 함께 프로그램이 다운될 수 있으니 주의하도록 한다.
여기서 의문점이 생기게 된다.
'torus1' 노드의 요약 정보를 보면 토러스 사이즈가 XYZ 각각 3, 1, 3 미터이다.
'torus1' 노드의 바운딩 박스 사이즈
Voxel Size 가 0.1 이므로 Voxel 개수는 9000(30x10x30) 개가 되어야 한다.
그런데 11,468(35x15x35) 개로 계산된 이유는 무엇일까?
이는 볼륨변환시 바운딩 박스 가 바뀌기 때문이다.
'torus1' 에서 3, 1, 3 미터였던 바운딩 박스가 'vdbfrompolygons1' 에서 3.5, 1.5, 3.5 미터로 늘어난다.
이 늘어난 길이를 0.1 로 나눴기 때문에 Voxel 개수가 XYZ 각각 35, 15, 35 개가 된 것이다.
또다른 의문점은 총 Voxel 개수에 있다.
35x15x35 를 계산해보면(곱하면) 총 Voxel 개수는 18,375 여야 한다.
이 개수가 11,468 개로 줄어든 이유는 VDB 볼륨의 특징에서 기인한다.
즉, 전체 바운딩 박스를 채우고 있는 18,375개 중에 유효한 Voxel은 토러스 형태에 근접한 11,468개 뿐이다.
게다가 'vdbfrompolygons1' 노드의 Fill Interior 옵션이 꺼져있기 때문에 Voxel 개수는 더욱 줄어든다.
Fill Interior 옵션은 토러스 내부에도 Voxel 을 채워넣는 역할을 한다.
결국 VDB from Polygons 노드는 내부/외부 가 아닌 지오메트리 겉면에 가깝게(얇게) 형성된다는 것을 알 수 있다.
토러스를 형성하는 VDB 볼륨을 비주얼라이즈 한 모습
이는 'vdbfrompolygons1' 노드에서 왜 볼륨을 Distance VDB 라고 불리는지와 관련이 있다.
이 Distance VDB 를 이해하려면 SDF(Signed Distance Field) 개념의 등장이 필요하다.
SDF 볼륨에 관해서는 다음 강좌에서 자세히 다루기로 한다.