SOP 어트리뷰트 타입

프로그래밍에서 데이터 타입과 비슷한 개념인 후디니에서의 어트리뷰트 타입에 대해서 알아보자.

Posted: January 13, 2017

Version: Houdini 15


어트리뷰트 타입(Type) 이란?

앞서 우리는 어트리뷰트는 그 이름과 거기에 할당되는 값을 가진다고 배웠다.

어트리뷰트 타입이란 그 할당되는 값의 종류를 말한다.

어트리뷰트 타입은 크게 네 가지로 나눌 수 있다.

 

1. Float: 소수점이 있는 실수의 형태이다. (예: 0.3, -7.5, 1.0 )

2. Integer: 소수점이 없는 정수의 형태이다. (예: 4, 100, -50 )

3. Vector: 세 개의 실수가 한 묶음이 된 형태이다. (예: <1.5, 3.0, 6.1> )

4. String: 문자열로 이루어진 형태이다. (예: "dokak", "abc38" )

String 타입은 문자와 숫자의 조합을 허용하지만 이때 후디니는 그 숫자를 문자로 처리한다.


서로 다른 타입의 어트리뷰트 적용해 보기

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

 

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

이제 Attribute Create SOP 을 이용해서 에 어트리뷰트를 적용해 보자.

 

TAB 메뉴를 이용해 Attribute Create SOP 을 만든다.

 

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

 

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

"year" 라는 이름의 어트리뷰트에 2000 이라는 값을 부과한 것이다.

이번 강좌에서는 Class 속성은 기본값인 Point 를 유지한다.

이번 강좌에서는 Class 속성은 기본값인 Point 를 유지한다.

 

이제 Type 속성값을 Float 에서 Integer, Vector, String 으로 바꿔보자.

옵션 밑에 있는 Array 타입에 대한 설명은 이번 강좌에서는 생략하도록 한다.

옵션 밑에 있는 Array 타입에 대한 설명은 이번 강좌에서는 생략하도록 한다.

 

타입이 Vector 또는 String 일 때에는 파라미터 창이 조금 바뀐다.

타입에 따라 어트리뷰트 값을 다르게 넣어 보자.

 

타입이 Vector 일 때에는 Value 입력란이 세 개로 늘어난다.

Vector 라는 용어가 나올 때마다 3개의 값이 한 묶음이 된다는 것을 기억하자.

Vector 라는 용어가 나올 때마다 3개의 값이 한 묶음이 된다는 것을 기억하자.

 

타입이 String 일 때에는 원하는 문자열을 입력할 수 있다.

숫자를 입력해도 무방하나&nbsp;후디니는 이를 문자로 인식한다.

숫자를 입력해도 무방하나 후디니는 이를 문자로 인식한다.


적용된 어트리뷰트 확인하기

각 타입마다 어트리뷰트 값이 어떻게 다른지 확인해 보자.

'attribcreate1' 노드위에 마우스 오른버튼을 누르면 나오는 메뉴중 Spreadsheet 을 선택한다.

 

다음과 같이 Geometry Spreadsheet 윈도우가 나타난다.

Spreadsheet 은 처음에 한번만 열면 각 타입마다 달라지는 어트리뷰트 값이 자동으로 업데이트 된다.

Type: Floatyear 어트리뷰트에 소수점이 있는 실수값이 저장된다.

Type: Float

year 어트리뷰트에 소수점이 있는 실수값이 저장된다.


Type: Integeryear 어트리뷰트에 소수점이 없는 정수값이 저장된다.

Type: Integer

year 어트리뷰트에 소수점이 없는 정수값이 저장된다.


Type: Vectoryear 어트리뷰트에 세 개의 실수로 이루어진 벡터값이 저장된다.

Type: Vector

year 어트리뷰트에 세 개의 실수로 이루어진 벡터값이 저장된다.


Type: Stringyear 어트리뷰트에 문자열로 이루어진 텍스트값이 저장된다.

Type: String

year 어트리뷰트에 문자열로 이루어진 텍스트값이 저장된다.

 

애초에 'sphere1' 노드가 기본값인 Primitive 이므로 총 점의 개수는 하나밖에 없다.