Basic: Attributes III by Peter Quint
sphere(SOP) - atttribcreate(SOP)
sphere(SOP)
PrimitiveType: Polygon Mesh
Radius:1, 2, 1
atttribcreate(SOP)
Name: myvar
Type: Float
Size: 3
マルチコンポーネント・アトリビュートの作成方法
ここでSizeが1であると下のValueでは1つ(左端)しか使えない。
しかしSizeを3にすると3つのコンポーネントをもたせる事が出来る。
myvar[0], myvar[1], myvar[2]
TypeをVectorにしても同じくコンポーネントは三つになる。
ただし myvar[x], myvar[y], myvar[z]
----------
point(SOP)を追加
Add Color $MYVAR1, $MYVAR2, $MYVAR3
Details Viewをみると、
myvar[0], myvar[1], myvar[2]の値がそれぞれ入っているのがわかる。
--------------
attribcreate1(SOP)のアウトプットにattribcreate(SOP)を別フローで追加。
Name: myvec
Type: Vector
Value:1, 1, 1
※カスタムDisplayオプション
シーンビューでdキーを押してディスプレイオプションを表示する。
Customの横にある三角ボタンを押してCreate Attrib Vectorで追加する。
できたオプション名を右クリックして詳細設定。
表示されるのはvectorとなる。
たとえばxyzが1,1,1であるならそのポイントを0,0,0の起点とした1,1,1に向かう線で表示される。
--------------
objレベルへ移動し、上記のカスタム表示のベクトルが上を向くようにSphereを回転させる。
この状態でアトリビュート血を見てもmyvecの値は1,1,1で変わっていない。
しかしシェーダーなどに適用される場合、このベクトル値はトランスフォームされた値になる。
ObjレベルでGeometryノードを作成
内部に入りobjectmerge(SOP)を作成。
object1にSphereを設定。
/obj/sphere
この段階ではTransformが適用されていない。
objectMergeノードのTransformは
デフォルトでは「into Specific Object」
これはその下のTransform Objectにオブジェクトを指定する必要がある。
「into This Object」に変更すると
このオブジェクトにトランスフォームが適用される。
myvarは1,1,1という風にカスタムアトリビュートの設定値が表示されている。
myvecは0.0860114,1.72959,-0.0334987という風にトランスフォームが適用された値となっている。
これがベクターと、3floatコンポネントの違いである。
(要するにローカルとワールドの違いか)
--------------
sphere1 - attribcreate1だけのネットワークにする。
attribcreate1
Name: myvar
Class: Detail
Type: Float
Size: 1
Value: 1234
attribPromote(SOP)を接続
(attribPromote: アトリビュートを異なるレベルへとコピーする方法)
Original Class: Detail
Original Name: myvar
New Class: Point
Promotion Method: First Match
---------------
<myvar(Primitive)でのテスト>
Change New Name: On
New Name : 空欄
Attrib Promoteが機能せず、Promotion Methodはスルー。
名称は元と同じ、アトリビュートは元のクラスの位置に表示される。
例:myvar(Primitive)はDetails Viewの「Primitive」に表示される。
Change New Name: On
New Name: newvar
AttirbPromoteは機能し、Promotion Methodで処理される。
名称は新しく入力した名前になり、アトリビュートは新しいクラスに表示される。
例:myvar(Primitive) --> newvar(Point)は「Point」に表示される。
Change New Name:Off
New Name: (無効)
AttirbPromoteは機能し、Promotion Methodで処理される。
名称は元と同じ名前になり、アトリビュートは新しいクラスに表示される。
例:myvar(Primitive) --> myvar(Point)が「Point」に表示される。
<Detail --> Point 変換の例>
-- attribCreate1--
Class: Detail
Type: Float
Size: 1
Value: rand($PT)
[Details View] : myvarの値はDetailクラスに0.641601と表示されている(一行のみ)
-- attribPromote1--
Detail --> Point
[Details View] : PointクラスにID毎に42行(0-41)表示、すべて同じ値。
Sum of Squares(Promote Method)では、0.411651
それ以外のPromote Methodは全て0.641601
<Point --> Detail 変換の例>
-- attribCreate1--
Class: Point
Type: Float
Size: 1
Value: rand($PT)
[Details View] : PointクラスにID毎に42行(0-41)表示。
全て異なる表示。
0- 0.641601
1- 0.800464
2- 0.510895
3- 0.775474
4- 0.879506
5- 0.20504
......
-- attribPromote1--
Point --> Detail
[Details View] : Detailクラスに1行のみ表示。
Promote Method毎に値は異なる。
maximum: 0.98474
minimum: 0.0382924
Average: 0.570707
Mode: 0.0382924
Median: 0.657865
Sum: 23.9697
Sum of Squares: 17.0393
Root Mean Square: 0.636944
First Match: 0.641601
Last Match: 0.0382924
--------------
Sphere1にMeasure(SOP)を接続
measure1(SOP) :プリミティブの特定の計測値を元にアトリビュートを作る
Type: Area (各ポリゴンの面積を計る)
[Details View] : PrimitiveクラスにポリゴンID毎に80行(0-80)表示。
アトリビュート名:area
0: 0.1393
1: 0.1393
2: 0.1393
3: 0.165396
(...以下繰り返し)
このスフィア全体の表面積を求めるには
measure1にattribpromote(SOP)を接続
Original Class: Primitive
Original Name: area
New Class: Detail
Promotion Method: Sum
[Details View] : Detailクラスのareaアトリビュートが表示される。(一行のみ)
スフィア全体の面積は 11.6659
--------------
sphere1(SOP) -- attribcreate1(SOP)
radiusY: 2
Name: myvar
Class: Point
Type: Float
Size: 1
Value: rand($PT)
sphere1(SOP)のアトリビュートをsphere2(SOP)を作りそれに移行する。
Primitive Type: polygon
左インプット:sphere2
右インプット:attribcreate1
Attribute: Other Attribute
Attribute Name: myvar
--------------
<異なる数のポイントを持ったジオメトリにアトリビュートを引き渡す>
radiusY: 2
point0: チェックボックスオン
attribcreate1をadd(SOP)に接続
Name: myvar
Class: point
Type: Float
Sizez : 1
Default: 0.01
Value: 1223
attribtransfer1(SOP)を作成: myvarアトリビュートをsphere1のポイントに引き渡す。
左インプット: sphere1
右インプット: attribcreate1
これによりadd1でつくられた1つのポイントにあるmyvarの値は、
sphere1(ポリゴン)の全ポイントに引き渡される。
[Details View] : PointクラスにID毎に42行(0-41)表示。
すべてmyvarの値「1223」
ここでattribtransfer1のDistance Thresholdを操作してみる。
放射状のフィルター領域。
Sphereの直径は1で、縦方向が2
Addのポイントからの距離。
このThresholdの範囲内にある場合はmyvarのデフォルト値0.01を表示。
たとえば1.01でいくつかのxz平面に近いポイントのmyvarが1223の値になり、
2.1にするとすべてのポイントのmyvar値が1223になる。
これをたとえば0.9にしてaddノードをシーンビュー上で移動すると、addノードから0.9範囲の中にあるポイントだけが1223の値を持つことになる。
ちなみに1は今回のスフィアのxz面の直径で、2はY方向の長さである。
それは 「$MYVECX, $MYVECY, $MYVECZ」である。
(注)このメモはビデオチュートリアルを見ての私的なメモで、完全な記録ではありません。
各自の利用は自己判断でお願いします。
抜け落ち、間違いの指摘は歓迎です。
0 件のコメント:
コメントを投稿