독학.NET

VOL 기초

Goemetry 레벨에서 볼륨이 어떻게 만들어지고 Voxel 들이 어떤 데이터를 갖는지 자세히 들여다 보자.

Posted: September 26, 2017
Version: Houdini 16

볼륨 필드(Field)

후디니 볼륨은 Primitive 로 취급 받는다.

각 Voxel 안에 저장되는 볼륨 데이터를 필드(Field) 라고 부른다.

데이터 타입 은 한자리 실수값인 Float 이거나 세자리 실수값인 Vector 이다.

 

대표적인 Float 타입의 필드로는 Density(볼륨 농도) 가 있다.

대표적인 Vector 타입의 필드로는 Vel(볼륨 속도) 이 있다.

Float 타입의 필드를 가리키는 또다른 말로 Scalar Field 가 있다. Scalar Field 는 주로 다이나믹(Dynamics) 영역에서 자주 쓰이는 용어이다.

볼륨 생성하기

후디니에서 볼륨을 생성하는데는 여러가지 방법이 있다.

이번 예제에서는 가장 기본적인 방법을 택한다.

 

후디니를 열고 /obj 에 지오메트리를 하나 만든다.

VOL_basic_1.jpg

 

만들어진 'geo1' 노드를 더블클릭하여 Geometry 레벨로 들어간다.

안에 있는 'file1' 노드를 지워준다.

 

TAB 메뉴로 Volume SOP 을 하나 만든다.

VOL_basic_2.jpg

 

만들어진 'volume1' 노드는 자체적으로 볼륨을 생성한다.

VOL_basic_6.jpg

 

씬 뷰에는 다음과 같이 속이 텅 빈 주황색 박스가 보인다.

우리가 원하는 볼륨은 왜 보이지 않는걸까?

VOL_basic_3.jpg

 

사실 우리가 보고 있는 저 텅빈 주황색 박스가 볼륨이다.

그리고 이 박스는 보이지 않는 여러개의 Voxel 들로 이루어져 있다.

 

'volume1' 노드 위에서 마우스 중간버튼으로 요약 정보를 확인하자.

Points, Primitives, Vertices, Volumes 개수가 모두 1이 되었다.

밑에 있는 Voxels: 1000 은 현재 볼륨이 1000 개의 Voxel 로 이루어짐을 보여준다.

[10, 10, 10] 은 X, Y, Z 각 축으로의 Voxel 개수를 말한다.

VOL_basic_7.jpg
Point 어트리뷰트인 P 는 단순히 볼륨의 Center 위치값을 가진다.

Scalar Field

사실 위에서 만든 볼륨은 Scalar 타입의 필드이다.

'volume1' 노드의 Rank 기본값이 Scalar 이기 때문이다.

VOL_basic_8.jpg

 

또한 Initial Value 속성이 모두 0이므로 각 Voxel이 가지는 데이터 값은 모두 0이 된다.

 

이번에는 볼륨에 이름을 추가하고 Initial Value 값을 수정해보자.

Name 속성에 'density'를, Initial Value 첫번째 속성에는 1을 입력한다.

VOL_basic_4.jpg
Rank 속성이 Scalar 일 때는 Initial Value 첫번째 속성값만 볼륨에 영향을 미친다.

 

'volume1' 노드에서 요약 정보를 다시 확인한다.

이번에는 name 이라는 Primitive 어트리뷰트가 새로 생겼다.

name 어트리뷰트의 값은 위에서 입력했던 'density' 이다.

볼륨이 1000(10x10x10) 개의 Voxel 로 이루어진 것도 확인할 수 있다.

VOL_basic_13.jpg

 

결과적으로 'density' 이라는 이름의 Scalar 필드를 얻게 되었다.

또한 모든 Voxel 의 density 데이터 값은 1이 된다.

VOL_basic_9.jpg

Vector Field

이번에는 위에서 만든 Scalar 필드를 Vector 타입의 필드로 바꿔보자.

'volume1' 노드의 파라미터창을 다음과 같이 수정한다.

VOL_basic_10.jpg
Rank 속성이 Vector 일 때는 Initial Value 세 속성값 모두 볼륨에 영향을 미친다.

 

'volume1' 노드에서 요약 정보를 다시 확인한다.

이번에는 3개의 Primitives 가 있음을 알 수 있다.

Vector 필드이기 때문에 'vel' 볼륨이 vel.x, vel.y, vel.z 로 분리되었다.

세 볼륨 모두 1000(10x10x10) 개의 Voxel 로 이루어진 것도 확인할 수 있다.

VOL_basic_12.jpg

 

결과적으로 'vel' 이라는 이름의 Vector 필드를 얻게 되었다.

또한 모든 Voxel 의 vel.x, vel.y, vel.z 데이터 값은 1이 된다.

VOL_basic_11.jpg