概要
Houdini での制作は基本的にノードベースであり、プログラミングを必要としません。
しかし Houdini がサポートする PythonやWrangle などの言語を使うことで、これらのノードを制御し、さらに柔軟な表現が可能になります。
本記事では、wrangle と python を用いて、ポイントとポリゴンの作成と削除を解説します。
ポイント・ポリゴンを作成
Wrangle:addpoint(), addprim(), addvertex()
Wrangle でポイントを作るには addpoint() を使います。第二引数に指定できるのは vector 型(要素は xy か xyz)の座標か、int 型のポイント番号です。
上の例では p0-p3 は指定した座標でポイントを生成し、p4 はポイント番号 3 と同じ座標を持ちます。
Houdini ではポイントが独立して存在できるので、ポリゴン無しでも成り立ちます。
addprim() でポイントを持たないポリゴンまたはポリラインを作成し、addvertex() を使ってジオメトリのプリミティブに頂点を追加します。
addprim() の第二引数は string 型の Type であり、開いたポリゴンを作る "polyline" や閉じたポリゴンを作る "poly" のほかに、球体を作る文字列なども用意されています。
addvertex() の第二引数で追加先のプリミティブを指定し、第三引数で追加する頂点を指定します。
Python:createPoint(), createPolygon(), addVertex()
Python ではポイント作成に createPoint() を使います。ただし引数に座標を指定しないと原点に作成されます。
任意のポイントに作成するには setPosition() で座標を指定することで可能です。
createPolygon() でポリゴンを作り、addVertx() でプリミティブに頂点を指定します。
setIsClosed() を使うことで開いたポリゴンを作ることもできます。
ポイント・プリミティブの削除
Wrangle:removepoint(), removeprim()
wrangle でのポイントの削除は removepoint() です。第二引数に削除するポイント番号を指定します。
可変の第三引数で、ポイントの削除で無効になったプリミティブを削除するかどうかも指定できます。
プリミティブの削除は removeprim() です。プリミティブをグループ化してそのグループごと削除することも可能です。第二引数で削除するプリミティブ番号を指定し、第三引数でポイントを残すか指定できます。
上の例では、ポイントを残すようにしているため左上のポイントが残っているのがわかります。
Python:deletePoints(), deletePrims()
ポイントとプリミティブの削除にはそれぞれ dletePoints() と deletePrims() を使います。iterPoint() や iterPrims() で番号を取得し、引数に指定します。