HOUDINI
HScript

最大/最小のバウンディングボックスサイズを取得する

2012/07/04 過去記事の移行記事


例えば、Geo to I3D ROPを使用する時、解像度の設定やバウンドのサイズの設定が必要になる。
このメモでは、それらを持ってくるエクスプレッションについてまとめることにする。

スクリーンショット 2012-06-24 13.45.33.png

まず最初に、IsoOffset SOPなどのバンドボックスを持ったデータをおかなければならない。それから、ボックス内に値を入力する。しかしながら、例えば、バンドボックスのサイズを変更した際や何かIso Surfaceと関連したものを変更した際に自動的に値が変更するようにしたい。そこで、それらの値にエクスプレッションを当てることにする。

先に解像度に関して述べると、適切なサイズの値を持ってくるためにこのエクスプレッションを使用する。

volumeres(surface_node, prim_id, axis)

もし、Geo to I3Dノードにこのエクスプレッションを入れたいのであれば、それぞれのaxis resolutionに入れる。例えば、サーフェイスノードがIsoOffset(isooffset1)の場合でボリュームノードの数が0の時、エクスプレッションはこうなる。

volumeres("../../isooffset1", 0, 0)

ここでaxisの値の所に0を入れた理由は、左のボックスはX軸に値するからだ。
ここで使用する値を記載しておく。

X軸 = 0
Y軸 = 1
Z軸 = 2

次にMin Bounds及びMax Boundsに当てはめるエクスプレッションだが、こういう構造になっている。
bbox(surface_node, type)
ここでのsurface_nodeは例えばIsoOffsetから値を持ってくるのであれば、そのIsoOffsetのパスを書けばいいのだが、Typeが少し特徴的だ。Min Boundsの場合、それらを箇条書きするならばこうなる。

X軸 Type = D_XMIN
Y軸 Type = D_YMIN
Z軸 Type = D_ZMIN

そして、これをMax Boundsのパラメーターに入力する際はMINのところをMAXに書き換えるだけだ。