Posted: March 29, 2021
Version: Houdini 18.0
detail(a, b)
각각의 인자는 다음과 같은 역할을 한다.
a: 어트리뷰트를 얻으려는 대상 지오메트리
b: 얻으려는 어트리뷰트 이름
괄호안에 각 인자들의 타입 은 다음과 같다.
인자 a 는 Wrangle 노드의 인풋번호이므로 Integer 타입을 기대한다.
인자 b 는 어트리뷰트 이름이므로 String 타입을 기대한다.
detail 함수 예제
detail() 함수를 이용해서 박스의 색깔을 바꿔보자.
후디니를 열고 /obj 에 박스 지오메트리를 하나 만든다.
만들어진 ‘box1' 노드를 더블클릭하여 Geometry 레벨로 들어간다.
Null SOP, Attribute Create SOP, Attribute Wrangle SOP 노드를 만들고 다음과 같이 연결해 준다.
연결한 뒤에는 'attribwrangle1' 노드의 Display Flag 를 선택한다.
Wrangle 노드와 같이 여러개의 인풋을 연결할 때는 그 순서에 주의한다.
박스의 색깔을 변화시키는게 목적이므로 'box1' 노드를 첫번째 인풋에 연결한다.
어트리뷰트 참조만 하기때문에 'attribcreate1' 노드는 두번째 인풋에 연결한다.
아직 VEX 를 입력하지 않았기 때문에 박스는 어떤 변화도 없다.
Null 노드는 점, 선, 면, 버택스 개수가 모두 0인 빈 껍데기이다.
그럼에도, Null 지오메트리는 detail 클래스 의 어트리뷰트를 가질 수 있다.
‘attribcreate1’ 노드의 파라미터를 다음과 같이 수정한다.
‘null1’ 노드에 ‘color’ 라는 이름의 detail 어트리뷰트가 할당된다.
그리고 rgb 각각 0.1/0.2/0.3 인 vector 타입의 데이터값을 갖는다.
‘attribcreate1’ 노드위 마우스 중간버튼으로 color 어트리뷰트가 추가되었음을 확인한다.
이 color 어트리뷰트의 데이터값을 알고싶으면 spreadsheet 을 열어서 확인한다.
위의 아이콘중 마지막에 있는 detail 버튼을 눌러서 확인한다.
'attribwrangle1' 노드의 VEXpression 란에 다음과 같이 VEX 를 입력한다.
VEXpression 칸에 입력하는 동안은 결과를 볼수 없다. 마우스 커서를 VEXpression 칸 밖으로 이동시켜 클릭해야 입력된 VEX 가 적용된다. 바로 결과를 볼 수 있는 단축키는 Ctrl + Enter 이다.
그 결과, 박스의 색깔이 군청색이 되었다.
이제 VEX 코드를 한문장씩 차근차근 보도록 하자.
detail() 함수 첫번째 인자로 쓰인 1은 'attribwrangle1' 노드의 인풋번호를 뜻한다.
인풋번호는 0부터 시작하므로 1은 두번째 인풋인 'attribcreate1' 노드를 말한다.
즉, 어트리뷰트를 참조할 대상이 null 오브젝트인 것이다.
두번째 인자 “color" 는 null이 가진 어트리뷰트들 중, color 데이터를 참조한다는 뜻이다.
참고로, null은 현재 P, color 이외에는 어떤 어트리뷰트도 갖고 있지 않다.
그리고 이 리턴값을 'read_color' 라는 vector 타입 변수 에 할당하였다.
참조하려는 어트리뷰트(color) 가 벡터이므로 변수 'read_color' 의 타입도 vector 로 정해준 것이다.
박스의 색깔 'Cd' 어트리뷰트 값에 위에서 만든 'read_color' 변수를 대입했다.
이와 같이, 변수는 VEX 안에서 원할 때마다 불러져 쓰일 수 있다.
결과적으로 박스는 null에 할당된 color 어트리뷰트를 참조하여 군청색으로 바뀌는 것이다.