SOP 어트리뷰트 트랜스퍼

근처에 있는 지오메트리에서 어트리뷰트를 이전시킬 수 있는 Attribute Transfer 노드에 대해서 알아보자.

Posted: April 6, 2018

Version: Houdini 16.5


Attribute Transfer Surface Operator

Attribute Transfer SOP 은 포인트 클라우드 와 동일한 기능을 하는 노드이다.

기본적으로 근처에 있는 지오메트리의 어트리뷰트를 가져와서(Transfer) 자신이 취할 수 있다.

SOP_attr_transfer_1.jpg

 

지오메트리 요소 별로 네 가지 트랜스퍼 방식이 있다.

Detail: 근접한 디테일의 어트리뷰트를 가져온다.

Primitives: 근접한 면의 어트리뷰트를 가져온다.

Points: 근접한 점의 어트리뷰트를 가져온다.

Vertices: 근접한 버택스의 어트리뷰트를 가져온다.

VEX 레벨에서 사용하는 Point Cloud 는 Attribute Transfer 노드에 비해서 훨씬 섬세하고 복잡한 제어가 가능하다. 자신의 작업 의도와 목적에 따라 적절히 선택하도록 한다.

Attribute Transfer 예제

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

SOP_attr_transfer_2.jpg

 

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

TAB 메뉴를 이용해 Grid SOP 과 Sphere SOP 을 하나씩 만든다.

SOP_attr_transfer_8.jpg
SOP_attr_transfer_9.jpg

 

만들어진 'grid1' 노드의 파라미터를 다음과 같이 수정한다.

Rows, Columns 속성은 각각 가로/세로로 나누려는 분할선의 개수를 말한다.

SOP_attr_transfer_3.jpg

 

만들어진 'sphere1' 노드의 파라미터를 다음과 같이 수정한다.

Primitive Type 속성에서 Polygon Mesh 를 선택한다.

Rows, Columns 속성은 각각 가로/세로로 나누려는 분할선의 개수를 말한다.

SOP_attr_transfer_4.jpg

 

Color SOP 을 두개 생성한뒤, 각각 그리드와 스피어 노드에 하나씩 연결한다.

그리드에 연결한 노드의 색은 검정색(Color: 0 0 0) 으로 수정한다.

스피어에 연결한 노드의 색은 빨간색(Color: 1 0 0) 으로 수정한다.

노드자체의 색뿐만 아니라 Color 노드의 파라미터에 있는 Color 속성값을 수정해야 한다.

노드자체의 색뿐만 아니라 Color 노드의 파라미터에 있는 Color 속성값을 수정해야 한다.

Color 노드의 Class 기본값이 Point 이므로 만들어지는 "Cd" 는 점 어트리뷰트가 된다.

 

이제 스피어가 가진 빨간색 정보를 그리드로 전달(Transfer) 해 보자.

Attribute Transfer SOP 을 만들고 다음과 같이 연결한다.

연결한 뒤에는 'attribtransfer1' 노드의 Display Flag 를 선택하도록 한다.

연결한 뒤에는 'attribtransfer1' 노드의 Display Flag 를 선택하도록 한다.

 

이때 두개의 인풋 연결순서에 주의하도록 한다.

첫번째 인풋에는 어트리뷰트를 전달받으려는 그리드 지오메트리를 연결한다.

두번째 인풋에는 어트리뷰트를 전달시키려는 스피어 지오메트리를 연결한다.

 

결과적으로 검정색이었던 그리드 전체가 빨간색으로 변한다.


Attribute Transfer 원리

'attribtransfer1' 노드의 파라미터를 자세히 들여다 보자.

[Attributes] 탭의 Detail, Primitives, Points, Vertices 속성에서 전달하려는 어트리뷰트를 정한다.

우리가 필요한 Cd 는 점 어트리뷰트이므로 Points 속성에 "Cd" 를 입력한다.

SOP_attr_transfer_10.jpg
만약 이 Points 속성을 공란으로 비워두면, 스피어 점들이 가지는 모든 어트리뷰트가 자동으로 트랜스퍼된다. "Cd" 를 입력하기도 전에 이미 그리드 색이 바뀐것도 이 때문이다. 다시 말해서 공란으로 비워놔도 관계없지만 트랜스퍼하려는 어트리뷰트를 확실히 입력하는 것은 좋은 습관이 될 수 있다.

 

맨 위에서 이러한 트랜스퍼는 근접성에 기반하여 작동한다고 했다.

현재 스피어에 근접한 점들만이 아니라 그리드의 모든 점들이 빨간색이 되었다.

SOP_attr_transfer_11.jpg

 

'attribtransfer1' 노드 [Conditions] 탭의 Distance Threshold 속성이 그 해답이다.

이 속성은 그리드 각 점의 위치를 기준으로 반경(원의 반지름 형태) 몇 미터까지 참조할 대상을 찾으려는지 정한다.

SOP_attr_transfer_12.jpg

 

현재 그 기본값이 10 이기 때문에 그리드의 모든 점들이 스피어 지오메트리를 발견할 수 있게 된다.

이 Distance Threshold 값을 0.2 미터로 낮춰보자.

SOP_attr_transfer_15.jpg

 

다음과 같이 스피어와 그리드가 접한 부분의 점들만 고리모양으로 빨간색이 된다.

스피어 안쪽과 바깥쪽에 있는 그리드 점들은 작아진 반경 내에서 스피어를 발견하지 못해 원래의 검정색을 유지한다.

SOP_attr_transfer_14.jpg
이번 예제에서는 색상정보인 Cd 어트리뷰트를 트랜스퍼 해보았다. 이는 단순히 트랜스퍼 과정을 씬뷰에서 손쉽게 확인하기 위함이고, Attribute Transfer 노드는 Cd 를 포함한 모든 어트리뷰트를 트랜스퍼할 수 있음을 기억한다.