VEX 기초

Attribute VOP 와 동일한 기능을 가진 Attribute Wrangle 노드를 이용해 간단한 VEX 코딩을 연습해 보자.

Posted: September 6, 2017
Version: Houdini 16

Attribute Wrangle 이란?

Attribute Wrangle 노드는 Attribute VOP 과 동일한 기능을 한다.

다만 Wrangle 에서는 VOP 노드를 연결하지 않고 직접 코딩하면서 VEX 작업을 한다.

Attribute Wrangle 노드

Attribute Wrangle 노드

 

앞서 VEX 는 후디니 전반적인 영역에서 쓰이는 언어라고 설명했다.

즉, VEX 작업이 가능한 곳은 SOP, POP, SHOP, COP 등 후디니 대부분의 영역이다.

그 중에, 우선 SOP 영역에서 VEX 에 연관된 노드들을 살펴보자.

 

/obj 에 지오메트리를 한 개 만들고 안으로 들어가서 네트워크뷰에 Tab 키를 친다.

탭 메뉴에서 'wrangle' 을 타입하면 다음과 같은 SOP 들을 볼 수 있다.

Geometry 레벨에서 볼 수 있는 노드들이기 때문에 SOP 인 것이다.

Geometry 레벨에서 볼 수 있는 노드들이기 때문에 SOP 인 것이다.

밑에 있는 Point wrangle, Primitive wrangle, Vertex wrangle 은 사실 Attribute wrangle 과 동일하다. Volume wrangle 은 볼륨과 관련된 VEX 작업을 하는 곳이므로 나중에 다루기로 한다.

Attribute Wrangle 용도

Attribute Wrangle 은 그 이름에서 알 수 있듯이 어트리뷰트와 관련이 있다.

Attribute Wrangle 의 주된 용도는 다음과 같이 요약할 수 있다.

  • 어트리뷰트 불러오기

  • 불러온 어트리뷰트 가공하기

  • 가공된 어트리뷰트 내보내기

 

밑의 간단한 예제를 통하여 위의 세 가지 과정을 한 눈에 이해하자.

설명에 앞서 어트리뷰트, 어트리뷰트 클래스, 어트리뷰트 타입 강좌를 먼저 확인한다.


Attribute Wrangle 예제

VOP 기초 에서 했던 동일한 예제를 여기서는 Wrangle 노드를 사용한다.

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

 

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

박스 오브젝트에 Color SOP 을 이용하여 색상을 부여하자.

 

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

 

만들어진 'color1' 노드를 'box1' 에 연결한다.

 

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

Color 속성은 각각 R, G, B 값을 나타낸다.

 

다음과 같이 박스에 빨간색이 적용된다.

 

자, 이제 Attribute Wrangle 을 사용해서 Cd 어트리뷰트를 수정해 보자.

TAB 메뉴를 이용하여 Attribute Wrangle 을 하나 만든다.

VEX_basic_2.jpg

 

만들어진 'attribwrangle1' 노드를 'color1' 에 연결한다.

'attribwrangle1' 노드의 첫번째 인풋에 주의해서 연결한다.

'attribwrangle1' 노드의 첫번째 인풋에 주의해서 연결한다.

Attribute Wrangle 처럼 인풋이 여러개인 노드들이 있는데, 이때 수정하려는 주된 지오메트리를 항상 첫번째 인풋에 연결하도록 한다.

 

박스에는 아직 아무런 변화가 없다.

아직 'attribwrangle1' 노드에서 VEX 작업을 하지 않았기 때문이다.

 

'attribwrangle1' 노드의 VEXpression 란에 다음과 같이 VEX 를 입력한다.

VEX_basic_4.jpg

 

VEX 를 입력한면 곧바로 박스가 흰색이 된다.

VEX_basic_5.jpg
VEXpression 칸에 입력하는 동안은 결과를 볼 수 없다. 마우스 커서를 VEXpression 칸 밖으로 이동시켜 클릭해야 입력된 VEX 가 적용된다. 바로 결과를 볼 수 있는 단축키는 Ctrl + Enter 이다.

 

VEX 는 작업자의 의도를 후디니에게 전달해 주는 언어이다.

초보자에게 자칫 어려워 보일 수 있는 이 기계어를 우리나라 구어체로 해석해 보자.

vector addcolor = set(0, 1, 1);
@Cd = @Cd + addcolor;

일단, addcolor 라는 변수에 (0, 1, 1) 이라는 벡터형 데이터를 잠시 저장해줘.
그리고나서 기존 색상에 이 addcolor 를 더해서 그 결과를 새로운 색상정보로 업데이트 해줘.