Created on | Updated on

Houdini でプログラミング:ポイントとプリミティブ

概要

mceclip0.png

Houdini での制作は基本的にノードベースであり、プログラミングを必要としません。
しかし Houdini がサポートする PythonやWrangle などの言語を使うことで、これらのノードを制御し、さらに柔軟な表現が可能になります。

mceclip29.png

本記事では、wrangle と python を用いて、ポイントとポリゴンの作成と削除を解説します。

ポイント・ポリゴンを作成

Wrangle:addpoint(), addprim(), addvertex()

mceclip1.png
Wrangle でポイントを作るには addpoint() を使います。第二引数に指定できるのは vector 型(要素は xy か xyz)の座標か、int 型のポイント番号です。

mceclip2.pngmceclip3.png
上の例では p0-p3 は指定した座標でポイントを生成し、p4 はポイント番号 3 と同じ座標を持ちます。

Houdini ではポイントが独立して存在できるので、ポリゴン無しでも成り立ちます。

mceclip5.png
addprim() でポイントを持たないポリゴンまたはポリラインを作成し、addvertex() を使ってジオメトリのプリミティブに頂点を追加します。

addprim() の第二引数は string 型の Type であり、開いたポリゴンを作る "polyline" や閉じたポリゴンを作る "poly" のほかに、球体を作る文字列なども用意されています。

addvertex() の第二引数で追加先のプリミティブを指定し、第三引数で追加する頂点を指定します。

mceclip6.png

Python:createPoint(), createPolygon(), addVertex()

mceclip9.png
mceclip10.png
Python ではポイント作成に createPoint() を使います。ただし引数に座標を指定しないと原点に作成されます。

任意のポイントに作成するには setPosition() で座標を指定することで可能です。

createPolygon() でポリゴンを作り、addVertx() でプリミティブに頂点を指定します。

mceclip11.pngmceclip12.png
setIsClosed() を使うことで開いたポリゴンを作ることもできます。

ポイント・プリミティブの削除

Wrangle:removepoint(), removeprim()

mceclip13.png
wrangle でのポイントの削除は removepoint() です。第二引数に削除するポイント番号を指定します。

可変の第三引数で、ポイントの削除で無効になったプリミティブを削除するかどうかも指定できます。

mceclip16.png

mceclip26.png
プリミティブの削除は removeprim() です。プリミティブをグループ化してそのグループごと削除することも可能です。第二引数で削除するプリミティブ番号を指定し、第三引数でポイントを残すか指定できます。

mceclip27.pngmceclip28.png
上の例では、ポイントを残すようにしているため左上のポイントが残っているのがわかります。

Python:deletePoints(), deletePrims()

mceclip24.pngmceclip21.pngmceclip22.png
ポイントとプリミティブの削除にはそれぞれ dletePoints() と deletePrims() を使います。iterPoint() や iterPrims() で番号を取得し、引数に指定します。

 

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

サポート問い合わせ