Houdiniで簡単なPythonのツールをつくる
はじめに
Houdiniを勉強するにあたり、自分の得意分野であるリギングから進めようと考え、チュートリアルを始めました。リンク
チュートリアルを進める上で気になったのが、ノードとノードの位置合わせ方法です。
1. 指定位置にあるノードの子として位置を合わせたいノードを接続
2. 位置を合わせたいノードの移動値を0にする
3. 【keep Position When Parenting】 にチェックを入れる
4. 接続を切断する
ノードを位置合わせするたびに、上記の手順を繰り返しています。
こんなのやってられないので、ツールを作ってみました。
位置合わせツール
指定位置にあるノードと位置を合わせたいノードを選択し、下記のコードを実行すると、位置合わせができます。
Nodes = hou.selectedNodes()
if len(Nodes) >= 2:
Target_Node = Nodes[0]
Source_Nodes = Nodes[1:]
xform = Target_Node.worldTransform()
posx = xform.at(3,0)
posy = xform.at(3,1)
posz = xform.at(3,2)
for Source_Node in Source_Nodes:
Source_xform = Source_Node.worldTransform()
Source_xform.setAt(3,0,posx)
Source_xform.setAt(3,1,posy)
Source_xform.setAt(3,2,posz)
Source_Node.setWorldTransform(Source_xform)
else:
print("ノードが選択されていません。:")
コード解説
Nodes = hou.selectedNodes()
選択されたノードを取得しています。
xform = Target_Node.worldTransform()
posx = xform.at(3,0)
posy = xform.at(3,1)
posz = xform.at(3,2)
ノードのワールドのトランスフォームを取得します。座標行列から移動値を抜き出します。
for Source_Node in Source_Nodes:
Source_xform = Source_Node.worldTransform()
Source_xform.setAt(3,0,posx)
Source_xform.setAt(3,1,posy)
Source_xform.setAt(3,2,posz)
位置合わせしたいノードのワールド座標を取得し、上記で抜き出した移動値を位置行列にセットします。
Source_Node.setWorldTransform(Source_xform)
最後に、位置合わせしたいノードのワールド座標を更新します。
Author And Source
この問題について(Houdiniで簡単なPythonのツールをつくる), 我々は、より多くの情報をここで見つけました https://qiita.com/shigehiro/items/0101d88e6d391ddc5a24著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .