SOP SCATTER

인풋 지오메트리면 위에 규칙적인 또는 랜덤한 간격으로 점들을 만들어주는 Scatter 노드에 대해서 알아보자.

Posted: September 8, 2017
Version: Houdini 16

Scatter Surface Operator

Scatter SOP 은 인풋 지오메트리면 위에 원하는 개수의 새로운 점들을 생성한다.

Scatter SOP 노드

Scatter SOP 노드

 

Scatter SOP 은 다음과 같은 특징을 가진다.

1. 점 분포도 조절

균등한 간격 또는 랜덤한 간격으로 점을 생성한다.

인풋 지오메트리의 어트리뷰트 값에 따라 분포도를 조절한다.

 

2. 어트리뷰트 이어받기

생성된 점들은 인풋 지오메트리의 Point 어트리뷰트 값을 이어받는다.

 

3. 볼륨 인풋

인풋이 볼륨일 때도 점들을 생성할 수 있다.

이러한 특징은 예제를 통해 쉽게 이해할 수 있으므로 가볍게 읽고 넘어가도록 한다.

Scatter SOP 사용하기

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

SOP_scatter_1.jpg

 

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

이제 이 스피어 위에 Scatter SOP 을 이용해서 새로운 점들을 만들어 보자.

 

TAB 메뉴를 이용하여 Scatter SOP 을 하나 만든다.

SOP_scatter_2.jpg

 

만들어진 'scatter1' 노드를 'sphere1' 에 연결한다.

새로운 점들이 잘 보이도록 'sphere1' 노드의 Template Flag 를 Ctrl 키를 누르고 선택한다.

Ctrl 을 누르지 않고 Template Flag 를 선택하면 스피어가 투명하게 보인다.

Ctrl 을 누르지 않고 Template Flag 를 선택하면 스피어가 투명하게 보인다.

 

스피어 위에 새로운 점들이 균등한 간격으로 생긴다.

이 때, 이 점들은 스피어 안쪽이 아닌 스피어 면쪽에 위치하게 된다.

SOP_scatter_4.jpg
만약 인풋이 스피어가 아닌 볼륨이 오게되면 Scatter SOP 은 볼륨 내부에 점을 생성한다.

 

이제 'scatter1' 노드의 파라미터 속성을 조금씩 바꿔보자.

Force Total Count 속성은 생성할 점의 개수를 정한다.

즉, 현재 스피어 위에는 1000개의 점이 존재한다.

속성값을 바꿔가며 점 개수와 간격이 어떻게 달라지는지 관찰한다.

속성값을 바꿔가며 점 개수와 간격이 어떻게 달라지는지 관찰한다.

 

밑쪽에 Relax Iterations 속성은 점들의 간격을 균등하게 만드는 역할을 한다.

이 속성의 체크박스를 꺼보자.

 

Relax 효과가 없어지면서 점들이 랜덤한 간격으로 위치하게 된다.

Relax Iterations 값은 이러한 Relax 효과를 몇 번 반복할지 결정한다.

이 값이 낮을수록 간격은 랜덤해지고 높을수록 간격은 균일하게 된다.

SOP_scatter_6.jpg

Scatter SOP 어트리뷰트

인풋 지오메트리의 어트리뷰트를 이용해 점의 분포도를 조절할 수 있다.

여기서는 스피어의 Cd 어트리뷰트를 이용해 보자.

 

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

스피어 각 점에 Cd 값을 할당할 수 있도록 Primitive Type 에서 Polygon 을 선택한다.

Frequency 속성은 스피어 Primitives 를 얼마나 잘게 나눌 것인지 결정한다.

SOP_scatter_8.jpg

 

TAB 메뉴를 이용하여 Point-Old SOP 을 하나 만든다.

맨 위에 있는 Point 노드는 16에서 새로 나온 Attribute Expression SOP 이다.

맨 위에 있는 Point 노드는 16에서 새로 나온 Attribute Expression SOP 이다.

노드이름에 'Old' 가 붙은걸로 보아 후디니 다음 버전에서는 존재하지 않을 수도 있겠다. 지금이 Point SOP 을 맛볼 수 있는 유일한 기회일지도 모르니 최대한 즐기도록 하자.

 

만들어진 'point1' 노드를 'sphere1' 과 'scatter1' 사이에 연결한다.

'point1' 노드의 Display Flag 를 선택한다.

'point1' 노드의 Display Flag 를 선택한다.

 

'point1' 노드의 Keep Color 메뉴버튼을 클릭해서 Add Color 로 바꿔준다.

Add Color 는 단순히 인풋 지오메트리에 Cd 어트리뷰트를 만드는 기능이다.

Color R,G,B 속성에 VEX 형태의 기본값(@Cd) 이 들어가 있다.

SOP_scatter_11.jpg
우리는 아직 VEX 를 배우지 않았기 때문에 걱정하지 말자. 여기서 VEX 는 전혀 중요하지 않은 부분이다.

 

원하는 Cd 값을 넣기 위해 VEX 익스프레션을 지우자.

Color 속성 위에서 마우스 우클릭 후 Delete Channels 을 클릭한다.

Delete Channels 의 단축키는 Ctrl+Shift+좌클릭 이다. 자주 사용하는 기능이므로 알아두면 굉장히 편리하다.

Delete Channels 의 단축키는 Ctrl+Shift+좌클릭 이다. 자주 사용하는 기능이므로 알아두면 굉장히 편리하다.

 

지우자마자 기본색이 (1, 1, 1) 흰색으로 바뀐다.

SOP_scatter_12.jpg

 

Color 속성 R 에는 $BBX, G 와 B 에는 0 을 넣는다.

$BBX 는 Point-Old 노드가 가지는 로컬변수 중 하나이다.

각 점들의 P에서 X축의 최소값과 최대값을 [0-1] 범위내의 값으로 돌려준다.

즉, P.x 가 작은 점은 0에 가까운 값을 받고 P.x 가 높은 점은 1에 가까운 값을 받게 된다.

BBX 는 X 축으로의 Bounding Box 라는 뜻이다. 이 외에도 로컬변수 BBY, BBZ 는 각각 Y, Z 축으로의 Bounding Box 이다.

BBX 는 X 축으로의 Bounding Box 라는 뜻이다. 이 외에도 로컬변수 BBY, BBZ 는 각각 Y, Z 축으로의 Bounding Box 이다.

이러한 $BBX, $BBY, $BBZ 값은 오브젝트를 움직인다 해도 항상 일정하다. 왜냐하면, 점 위치의 절대값이 아닌 서로 상대적인 [0-1] 값을 얻기 때문이다.

 

스피어 각 점의 X축 값에 따라 0-1 사이의 값이 Color R에 적용된다.

현재 G,B 는 0이기 때문에 전체적으로 빨간색의 스피어가 된다.

SOP_scatter_15.jpg

 

이제 'scatter1' 노드의 Display Flag 를 켜보자.

다음과 같이 스피어의 Cd 어트리뷰트가 새로운 점들에게 전달되었음을 알 수 있다.

SOP_scatter_16.jpg

 

Cd 어트리뷰트는 전달이 됐지만 점의 분포도는 변함이 없다.

'scatter1' 노드의 Density Attribute 체크박스를 켜준다.

기본값인 'density' 를 지우고 'Cd' 를 입력한다.

SOP_scatter_19.jpg

 

이는 어트리뷰트 값에 근거해서 점들을 생성하겠다는 뜻이다.

즉, 어트리뷰트 값이 높은 부분일수록 많은 점들이 생성된다.

결과적으로 Cd Red 값이 높은 부분에 상대적으로 더 많이 분포된다.

SOP_scatter_17.jpg

 

어트리뷰트의 영향으로 분포도가 달라졌지만 점의 개수는 1000개를 유지한다.

'scatter1' 노드의 Force Total Count 속성값을 10000개로 늘려준다.

어트리뷰트가 미치는 영향이 좀더 확연히 드러난다.

SOP_scatter_18.jpg