Houdini python memo! ver 15.0.244.16
はじめに
import hou #/objに"geo1"という名前のgeoノードを作る。 oGeo = hou.node('/obj').createNode('geo','geo1') #/obj/geo1を取得 oNode = hou.node('/obj/geo1') #選択したノードを取得(配列で) oNodes = hou.selectedNodes() oNode = oNodes[0] #使えるメソッド一覧 dir(oNode) #メソッドの使い方を調べる help(oNode.parm) # name取得 oNode.name() # Path取得 oNode.path() #現在のグローバルノード print hou.pwd() #現行のノードを変更する hou.cd("/obj")
球を作成 その1
import hou geo = hou.node('/obj').createNode('geo', 'sphere',0) geo.createNode('sphere')
球を作成 その2(作って消して色つけて)
import hou hou.cd("/obj) node = hou.pwd() geo = node.createNode('geo') geo.node('file1').destroy() geo.createNode('sphere') #ついでに色もつけてみる c=hou.Color([1,0,0]) geo.setColor(c)
ノードのコネクション
oGeo = hou.node("obj").createNode('geo','geo1',0) #Sphere(SOP)を作成 oSphe= oGeo.createNode('sphere', 'sphere') #Box(SOP)をoSpheの出力に作成する oBox = oSphe.createOutputNode('box', 'box') #File(SOP)をoSpheの入力に作成する oFile = oSphe.createInputNode(0,'file', 'file') #Transform(SOP)をoBoxの出力に作成する oXform = oBox.createOutputNode('xform', 'xform') #null(SOP)を作って、入力につなぐ oNull = oGeo.createNode('null', 'null') oNull.setInput(0,oXform) #入力のリストを取得する inlist = oBox.inputs() #出力のリストを取得する outlist = oBox.outputs()
パラメータとか
import hou geo = hou.node('/obj').createNode('sphere', 'sphere') n = hou.node(/obj/geo1) # パラメータ取得 tx = n.parm("tx") #取得したパラメータを評価 tx.eval() #指定したフレームのパラメータ値を取得 tx.evalAtFrame(10) #取得したパラメータに値をセット tx.set(0.2) #エクスプレッション追加 tx.setExpression("$FF") #キーフレーム全消し tx.deleteAllKeyframes() #名前を指定してパラメータの値をセット n.setParms({"tx":1, "ty":2, "tz":3}) #パラメータを全部表示してみる for i in n.parms(): print i.name()
「例:1」含むノードをリストで取得
import hou n = hou.selectedNodes() children = n.children() for child in children: print child.name()
「例:2」 例1と同様の機能を関数定義
def childrenOfNode(node): result = [] for c in node.children(): result += childrenOfNode(c) result.append(c) return result
ポップアップメッセージ
hou.ui.displayMessage("hoge")
ノードのローカル変数
lvar('TX') #$TXのこと
ランダムとかノイズとか
hou.hmath.rand(lvar("PT")) #ポイント番号からランダム値を生成 hou.hmath.noise1d([lvar("TX"),lvar("TY"),lvar("TZ")]) hou.hmath.noise1d([lvar("TX"),lvar("TY"),lvar("TZ"), time()]) #時間で変化
Newtwork Editor上の座標を取得
p = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) print p.selectPosition()
Newtwork Editor上の座標を指定
oGeo = hou.node('obj').createNode('geo','sphere',0) oSphere = oGeo.createNode('sphere') oSphere.setPosition([1,1])
Newtwork Editor上の座標を指定して配置
p = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) pos = p.selectPosition() oSphere = p.pwd().createNode('sphere') oSphere.setPosition(pos)
最後にPythonじゃないけど・・・。
ShelfをTabMenuから使えるようにする
TabMenueに表示させたいShelfのアイコンを右クリック->Edit Tool…
ContextタブのNetwork PaneでObjやSOP等のカテゴリを指定する。
続く?
参考
コメント