본문 바로가기

Technical Artists/Houdini
[Houdini] Python scripting - hou.node()

Windows > Python Shell 을 누르면 Python 코드를 입력할 수 있는 창이 열린다.

IDE의 코드 입력창이라고 생각하면 된다.
자유롭게 원하는 코드를 입력하고 엔터를 쳐서 실행시키면 된다.


// hou.node 

- hou.node()

hou.node('경로')

obj = hou.node('/obj')

후디니에서 특정 경로의 노드를 가져오는 함수

'' 안에 원하는 노드의 경로를 입력하면 된다.
반환값이 있기 때문에 변수에 할당할 수 있다.


- hou.createnode()

hou.node('경로').createNode('노드 타입', '노드명')

myGeo = obj.createNode('geo', 'test')
obj.createNode('box', 'textBox')

특정 경로에 원하는 노드를 생성해 주는 함수

geo명을 생략하면 자동으로 geo1, geo2 ···.. 생성된다.
hou.node()를 변수에 할당해뒀다면 그 후로 해당 변수를 활용해서 함수를 호출할 수 있다.


Shelf Tool에 python script 를 등록해놓고 클릭하여 유용하게 사용할 수도 있다.

먼저 New Shelf Tab을 누른 후 원하는 대로 이름을 설정하여 Shelf Tool Tab 을 생성한다.

생성된 탭을 클릭 후 Tool 공간을 우클릭 한 후 New Tool을 눌러준다.

Options 탭에서 이름을 정해주고, Script 탭에 코드를 입력하면 된다.
연습용으로 앞에서 해본 박스 생성 코드를 등록해주었다.

생성한 Tool을 클릭만 하면 Geo 노드와 그 안에 Box 노드까지 생성된다.

import hou

# Getting the obj Context
obj = hou.node('/obj')

# Create a Geometry node in /obj
myGeo = obj.createNode('geo', 'myGeo')

# Create a box inside of myGeo
myBox = myGeo.createNode('box', 'myBox')

# Create variables to use
height = 1
width = 3
depth = 2

# Assigning variable to box parameters
box.parm('sizex').set(width)
box.parm('sizey').set(height)
box.parm('sizez').set(depth)

print(box.asCode())


* asCode()는 해당 노드를 생성하는 python 코드를 string으로 반환하는 함수이다.

나는 아직 왕초보라 이걸 일일이 다 읽어보진 않지만..
공부할 때 도움이 되니 습관처럼 찍어둬도 좋을 것 같다.


https://www.sidefx.com/docs/houdini/hom/hou/node_.html

 

hou.node

node(path) → hou.OpNode or None If the path starts with a /, Houdini will look for a node with that exact path. Otherwise, the Houdini searches relative to the current path. See hou.pwd() for more information about Houdini’s current path. For each occu

www.sidefx.com

공식 문서 굿.