VOL SDF

Surface 까지의 거리값을 저장해주는 SDF 볼륨과 이를 활용하는 법에 관해서 알아보자.

Posted: April 3, 2018

Version: Houdini 16.5


SDF 볼륨이란?

SDF 는 Signed Distance Field 의 약자이다.

SDF 는 지오메트리를 볼륨으로 변환시 조금 특별한 데이터값을 갖는다.

SDF 는 부호를 지닌(Signed) 거리값(Distance) 을 갖는 볼륨(Field) 이다.

 

여기에서 부호는 다름아닌 + 또는 - 를 의미한다.

지오메트리 안쪽은 - 부호를, 바깥쪽은 + 부호를 가진다.

VOL_sdf_3.jpg

 

Distance 는 각 Voxel 위치에서 가장 근접한 지오메트리 면까지의 거리를 의미한다.

다음은 SDF 볼륨의 각 Voxel 이 가지는 필드값(Distance) 을 나타낸다.

파란색 스피어의 반지름은 1이다. 맨 안쪽을 보면 필드값이 -0.9 인 voxel 도 볼 수 있다. 스피어 가장자리 근처에서는 필드값이 0 에 가까워진다.

파란색 스피어의 반지름은 1이다. 맨 안쪽을 보면 필드값이 -0.9 인 voxel 도 볼 수 있다. 스피어 가장자리 근처에서는 필드값이 0 에 가까워진다.


SDF for Houdini Volume

Standard Houdini 볼륨 타입은 다음 두가지가 있다.

 

1. Fog Volume

Houdini Fog Volume

Houdini Fog Volume

Scalar 필드 를 데이터로 저장한다.

이 데이터값은 볼륨의 농도값을 나타낸다.

즉, 농도가 진한 Voxel 은 1 값을 가지고 흐린 Voxel 은 0 이 된다.

 

2. SDF Volume

Houdini SDF Volume

Houdini SDF Volume

Scalar 필드를 데이터로 저장한다.

이 데이터값은 지오메트리 면까지의 거리값을 나타낸다.

즉, 지오메트리 안쪽에 있는 Voxel 은 (-) 거리값을, 바깥쪽에 있는 Voxel 은 (+) 거리값을 가진다.

 

IsoOffset 노드에는 이러한 Houdini SDF 볼륨을 만들 수 있는 옵션이 있다.

Output Type 에서 Fog Volume 또는 SDF Volume 을 선택할 수 있다.

VOL_sdf_4.jpg
이번 강좌에서는 Iso Surface, Tetra Mesh 옵션에 대한 설명은 생략한다.

SDF for VDB Volume

Open VDB 볼륨 타입은 다음 두가지가 있다.

 

1. Fog VDB

VDB Fog Volume

VDB Fog Volume

Scalar 필드 를 데이터로 저장한다.

이 데이터값은 볼륨의 농도값을 나타낸다.

즉, 농도가 진한 Voxel 은 1 값을 가지고 흐린 Voxel 은 0 이 된다.

 

2. Distance(SDF) VDB

VDB Distance Volume

VDB Distance Volume

Scalar 필드를 데이터로 저장한다.

이 데이터값은 지오메트리 면까지의 거리값을 나타낸다.

즉, 지오메트리 안쪽에 있는 Voxel 은 (-) 거리값을, 바깥쪽에 있는 Voxel 은 (+) 거리값을 가진다.

 

VDB from Polygons 노드에는 이러한 VDB Distance 볼륨을 만들 수 있는 옵션이 있다.

파라미터에서 Distance VDB 또는 Fog VDB 를 선택할 수 있다.

볼륨 이름은 언제든지 수정할 수 있으므로 크게 신경쓰지 않도록 한다.

VOL_sdf_5.jpg
지오메트리를 SDF 변환시 씬뷰에 나타나는 볼륨이 농도라고 오해하기 쉽다. 씬뷰에 보여지는 볼륨은 디스플레이를 위한 가이드 정도로만 생각하자. 실제로 SDF 볼륨 렌더링시 예상과 다른 이미지가 나오는 것도 이 때문이다.