attributes 추출(상수변수화) 및 조작 관련방법
Python과 DA(디지털에셋), VOPs, Point SOP, Attribute SOP
Aattribute Create SOP을 이용하면, 단 하나의 어트리뷰트를 만들거나 조작이 가능함.
- attribute종류(class)로는 vertex, point, primitive, detail
- 타입으로는 Integer, Float, Vector, String
- variable Map 기능 : 예) foo라고 불리는 어트리뷰트는 디폴트로 대문자 FOO로 매핑된다.
- expression을 이용해서, 데이터나 어트리뷰트를 from 다른 Node에서 접근할수있다.
- 예) $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기능이 존재하지만, 다르다.
- x 좌표의 위치값(double)을 구할때, varmap으로 정의된 $POSX보다는 $TX를 더 많이 활용한다.
- 레드컬러 채널같은 경우에도 $CD1보다는 $CR을 많이 쓰고,
- 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도 추가 할수있음.
Comments 2
남선생님말씀대로...
예전에 vex가
데이터[attribute]를 manipulating 기능만 있던 것이...
현재는 geometry Construction[생성]기능도 할수있게 되었다네용.
속도문제라면 최대한 vex로 작업하는것이 장점이고,
그외는 파이썬이나 sop Node랑 expression처리 하면 될것이고,
시간이 지나서
알고리즘 flow를 단순화
재사용처리에 관심이 많다면.. hdk쪽에 관심을 가지면되겠죠
[근데 c++ 프로그래밍 api다루는거라 후디니하고는 별개의 얘기를 많이 알아야됩니당.
컴퓨터공학쪽 사람이 아니라면 배우는데 오래걸립니당; 전 10년걸렸심; 그쪽 전공이 아니라서]
파이썬도 그런점에서는 스크립트이상의 객체지향수준으로 사용하려면 꽤 배우는데 오래걸릴겁니당. ㅍㅎㅎㅎㅎ
이미지를 올릴려고 하니 않올라가네, 뭔가 손을 바야할 듯!
뭔가 씨를 뿌리고, 과실을 얻을때까지 노력을 해야지 한분야에서 성공했다고 할 수 있겠지. 땅만 일구기만 한다고 농사를 잘 짓는다는건 아닌거 같애. 과실을 맺어야지.