Font size: +

attributes 추출(상수변수화) 및 조작 관련방법

Python과 DA(디지털에셋), VOPs, Point SOP, Attribute SOP

Aattribute Create SOP을 이용하면, 단 하나의 어트리뷰트를 만들거나 조작이 가능함.

  1. attribute종류(class)로는 vertex, point, primitive, detail 
  2. 타입으로는 Integer, Float, Vector, String
  3. variable Map 기능 : 예) foo라고 불리는 어트리뷰트는 디폴트로 대문자 FOO로 매핑된다.
  4. expression을 이용해서, 데이터나 어트리뷰트를 from 다른 Node에서 접근할수있다.
  5. 예) $FOO-1이 있다. 

정리)attribute create sop에서 variable MaP된 attribute를 expression주면..
느린편인데 그이유는 attribute접근을 위해 expression에 대하여 인터프리팅을 해야하기 때문이다.

Point SOP노드는 통상적인 Attribute 들을 각각 복수개로(한꺼번)을 만들거나 조작하게 해준다.

  • add/manipulate common attribute - Position, color, normal, velocity, up, etc...
  • 어트리뷰트의 (1:1)매치가 가능하다(타입 교환기능?). 이로서, 포인트 넘버대신 파티클 아이디로 매칭할수있다.
  • internal varmap(legacy) - 포인트SOP에서도 variable Map기능이 존재하지만, 다르다. 
    1.  x 좌표의 위치값(double)을 구할때, varmap으로 정의된 $POSX보다는 $TX를 더 많이 활용한다.
    2. 레드컬러 채널같은 경우에도 $CD1보다는 $CR을 많이 쓰고, 
    3. u좌표값을 얻을때도, $UV1보다는 $MAPU를 더 많이 사용한다.
  • AttribCreate SOP처럼 expression을 이용해서 정보를 추출할수있음.
  • 예) 다음의 expression function 은 geo1의 facet1노드의 3번의 포지션 x정보를 가져온다.
  • eg. point("/obj/geo1/facet1",3,"P",0)

정리) AttribCreate SOP에서와 마차가지로, SOP노드에서 expression을 써서 attribute에 접근하는것은 많이 느리다. 
수많은 수식의 evaluation과 수많은 if문의 인터프리팅작업은 연산을 느리게 하는 요인이 된다.

Python SOP 이나 DA(디지털 애셋)을 통해서 attribute를 만들수있다.

  • 하나의 강점이 python 루프의 String Functionality를 통해 attribute를 생성할수있다는것이다.(코드로 뭐든지 가능하다.)
  • Hou.Geometry.addAttrib을 이용해서 Attribute를 추가하거나 조작이 가능하다.

VOP Operators

VOPs를 사용하면 Operator들로 attribute를 조작한다.(조작만한다?)

1-1) parameter vop 
A. set values at sop level - 이걸 통하면 SOP레벨에서 값을 확인할수있고,
B. invisible at sop level - 이걸 통하면 SOP레벨에서 attribute를 안보이게 할수있다.
C. if attribute with the same name exist, overwrite parameter (import) - 어트리뷰트가 같은 이름이 존재하면 오버라이드하게된다(임포트) 이것은 현재 포인트 넘버를 가져오는 것과 비슷하다,
D. export - 파라미터로 값을 보낼수 있지만,
E. no varmap - varMAP은 일어나지 않는다. 이말은 정의된 attribute가 sop레벨에서 $변수쪽으로 값을 교환하지 않는다는것.(no 변수추출)

1-2) import attribute vop -를 통해 원하는 포인트 넘버의 attribute를 가져올수있음.
A. get attribute value of point number - 만약, 현재(current) 포인트와 포인트넘버 이전(previous) 포인트과 번호 이후(next)... 값등 neighbor Attribute 값들을 가져올수있다.
B. define vopsop input - You can also define the vopsop input. A vopsop can have up to four inputs, so you can define vopsop input zero, one, two and three.

1-3) add attribute vop 
A. Add attribute will basically allow you to define the varmap, this is good because later on you will be able to access the variable throuh "$ATTRIBUTE_NAME".
또한, 아무값도 입력하지 않는다면, default로 아무런 일도 일어나지않고 pass된다.
B. type modifier (float[3]/vector) - 또한 타입의 형태를 정의해 줄수 있는데, float3와 vector가 다른이유는 다음에 다루기로 하겠다.

2) ~특징~

A. 장점 : vops는 속도가 빠르다.

1. 멀티쓰레드를 지원

2. SIMD로 수많은 포인트가 하나의 같은 operation에 실행

3. 컴파일되어 인터프리터로 실행되지않음.
B. 단점 : vops에서 많은 일을 하게 되면 램을 많이 사용해서 후디니가 다운될수있음.3) add arrays with vex : vex를 사용해서, array형의 attribute도 추가 할수있음.

Mantra의 폭넒은 사용
CGwars Membership
 

Comments 2

PlumpMath (website) on Wednesday, 26 March 2014 15:42

남선생님말씀대로...
예전에 vex가
데이터[attribute]를 manipulating 기능만 있던 것이...
현재는 geometry Construction[생성]기능도 할수있게 되었다네용.

속도문제라면 최대한 vex로 작업하는것이 장점이고,
그외는 파이썬이나 sop Node랑 expression처리 하면 될것이고,

시간이 지나서
알고리즘 flow를 단순화
재사용처리에 관심이 많다면.. hdk쪽에 관심을 가지면되겠죠
[근데 c++ 프로그래밍 api다루는거라 후디니하고는 별개의 얘기를 많이 알아야됩니당.
컴퓨터공학쪽 사람이 아니라면 배우는데 오래걸립니당; 전 10년걸렸심; 그쪽 전공이 아니라서]

파이썬도 그런점에서는 스크립트이상의 객체지향수준으로 사용하려면 꽤 배우는데 오래걸릴겁니당. ㅍㅎㅎㅎㅎ

남선생님말씀대로... 예전에 vex가 데이터[attribute]를 manipulating 기능만 있던 것이... 현재는 geometry Construction[생성]기능도 할수있게 되었다네용. 속도문제라면 최대한 vex로 작업하는것이 장점이고, 그외는 파이썬이나 sop Node랑 expression처리 하면 될것이고, 시간이 지나서 알고리즘 flow를 단순화 재사용처리에 관심이 많다면.. hdk쪽에 관심을 가지면되겠죠 [근데 c++ 프로그래밍 api다루는거라 후디니하고는 별개의 얘기를 많이 알아야됩니당. 컴퓨터공학쪽 사람이 아니라면 배우는데 오래걸립니당; 전 10년걸렸심; 그쪽 전공이 아니라서] 파이썬도 그런점에서는 스크립트이상의 객체지향수준으로 사용하려면 꽤 배우는데 오래걸릴겁니당. ㅍㅎㅎㅎㅎ
prisms (website) on Wednesday, 26 March 2014 15:57

이미지를 올릴려고 하니 않올라가네, 뭔가 손을 바야할 듯!
뭔가 씨를 뿌리고, 과실을 얻을때까지 노력을 해야지 한분야에서 성공했다고 할 수 있겠지. 땅만 일구기만 한다고 농사를 잘 짓는다는건 아닌거 같애. 과실을 맺어야지.

이미지를 올릴려고 하니 않올라가네, 뭔가 손을 바야할 듯! 뭔가 씨를 뿌리고, 과실을 얻을때까지 노력을 해야지 한분야에서 성공했다고 할 수 있겠지. 땅만 일구기만 한다고 농사를 잘 짓는다는건 아닌거 같애. 과실을 맺어야지.
Already Registered? Login Here
Wednesday, 16 July 2025