こんにちは、篠島です。
VOPネットワーク内でVOPノードを組み合わせていろんな事をすることが出来ます。普通のノードはマルチスレッド対応してなかったりしますが、VOPネットワークを自分で組むとマルチスレッド対応なので処理速度も普通のノードよりも早いです。
サンプルのHipファイルです。ファイルを見ながら読んだほうがわかりやすいです。
basic_vop.zip
例えばSOPの中でジオメトリに対して処理するVOPネットワークを作るノードは以下のものがありますが、基本的にはすべて同じAttribute VOPで、パラメーターのRun OverがPointやPrimitivesと変わっていて、VOPの処理をする対象が変わってきます。もしRun Overの部分がDetail (only once) になっているとそのVOPは1回だけDetailアトリビュートに対して実行されます。
- Attribute VOP
- Point VOP
- Primitive VOP
- Vertex VOP
例えば下のようにラインのジオメトリがあり、ポイントの数が10だとします。ここでPoint VOPを使うと、そのVOPネットワークの処理が全てのポイント1つずつに対して行われ、合計10回実行されます。
試しに簡単なVOPを作ってみます。ポイントのY座標をポイント番号で置き換えたものが下になります。Pは位置を表すVectorなので、Vector to Floatで一度Floatに分解して値を変更してからFloat to VectorでVectorになおしてPに出力します。ptnumがポイント番号を意味し、これをそのままY座標の値として使っています。
VOPネットワークのGeometry VOP Global Parametersで表示されている名前ですが、Preferenceで変えることが出来ます。PreferenceのNetwork,Editor,Nodes, and Treesのところから、Show Full Input and Output Names on VOP NodesをOFFにすると、Point Numberなどの名前がptnumと省略されます。
VOPにまだ慣れない最初はフルネーム表示でも良いとは思いますが、慣れたらぜひ省略された名前を使ってください。なぜかというと、ptnumやらnumptなどはWrangleノードでそのまま使われているので、知っておくと便利です。