hou Module Functions
Houdini/Python 2013. 4. 1. 23:06 |※ sys.path.append(os.environ['HFS'] + '/houdini/scripts/python')
import hou
- HOM hou -
hou.pwd(function) -> 현재 노드의 위치를 알아온다.
hou.cd(function) -> 현재 위치를 바꾼다.
hou.Node(class)
node(self, node_path) -> node_path 의 노드 이름을 반환한다.
inputs(self) -> input으로 연결된 노드 이름을 반환한다.
setFirstInput(setf,, node_to_become_input, output_index=0) or setFirstInput(self, indirect_to_become_input)
setFirstInput(None) -> 연결된 상위 노드가 끊어진다. unparent가 된다.
children(self) -> 자식 노드를 반환한다.
ex) for i in hou.node('/obj').children():
print i.name()
/obj 하위에 있는 node 이름들을 반환한다.
destroy(self) -> 노드를 삭제한다.
createNode(self, node_type_name, node_name=None, run_init_scripts=True, load_contents=True) -> 노드를 만든다.
parm(self, parm_path) -> 파라미터 값을 가지고 온다.
hou.objNode
worldTransform(self) -> geometry(into world space) 의 위치를 매트릭스로.
set(self, value, language=None) -> 파라미터에 값을 설정한다.
worldTransform 함수를 이용한 예제)
상위 노드와의 연결을 그냥 끊어 버리면, 상속받고있던 노드의 포지션값을 다시 원상태로 돌아간다.
하지만, 밑의 스크립트를 이용하면 상속받고 있던 표지션값을 그대로 유지시키면서 연결을 끊을 수 있다.
def unparentKeepPos(obj_node)
xform = obj_nod.worldTransform()
obj_node.setFirstInput(None)
obj_node.setWorldTransform(xform)
unparantKeepPos(hou.node('/obj/box_object')
toolutils Module
toolutils.sceneView() -> 씬 뷰어 창을 반환한다. (뷰어 창만 관여)
ex) 뷰 창에서 선택한 obj의 경로를 반환하는 예제
scene_viewer = toolutils.sceneViewer()
path = scene_viewer.pwd() -> 씬 뷰어의 네트워크 경로를 가져온다. 만약, /obj/geo1에서 뷰어창이 보인다면, 반환되는 경로는 /obj/geo1 이다.
obj = scene_viewer.selectObjects(quick_select = True)[-1] -> 뷰 창에서 원하는 것을 선택할 수 있도록 해준다.
ex) 뷰 창에서 선택한 것의 노드를 상위노드와 연결 해제한다. 그러면서 상속받은 값 유지시키는 예제
viewer = toolutils.sceneViewer()
obj_name = viewer.selectObjects(quick_select=True)[-1]
unparentAndKeepPos(obj_name)
hou.SceneViewer selectObjects(self, prompt='Select objects', sel_index=0, allow_drag=False, quick_select=False, use_existing_selection=True, allow_multisel=True, allowed_types=('*',), icon=None, label=None) : viewer에서 오브젝트를 선택하는 넘인데... 정확한 설명이 없당 된장 추측은 prompt는 viewer에서 뭘 하라고 하는 메세지를 출력 해주는 거 같고, quick_select=True 하면 선택을 use_existing_selection=False하면 이미 선택된 넘들은 무시하라는 뜻인듯... hou.SceneViewer.selectObjects(quick_select=True)[-1] 대략 이런 식이면 이런 에러 메시지가 TypeError: unbound method selectObjects() must be called with SceneViewer instance as first ar gument (got nothing instead) 그래서 import toolutils viewer = toolutils.sceneViewe() node1 = viewer.selectObjects(quick_select=True)[-1] <-- 아무것도 선택이 되어져 있지 않을 경우 node2 = viewer.selectObjects(use_existing_selection=False, quick_select=True)[-1] <-- 뭔가가 선택되어져 있을 경우 무시하고 다시 선택하는 경우 ---------------------------------------------------------------------------------------------- standalone CentOS 5.1 x86_64 Python 2.5 $ cd /opt/hfs10.0.465/ $ source houdini_setup_bash import sys, os sys.path.append(os.environ['HFS'] + '/houdini/scripts/python') import hou import hou 에서 ImportError: libpython2.5.so.1.0: cannot open shared object file: No such file or directory 이런 에러라면 /opt/hfs10.0.465/python/lib/libpython2.5.so.1.0 를 Houdini DSO - error on '/opt/hfs10.0.465/houdini/dso/audio/CL_AudiereClipReader.so' libaudiere-1.9.4.so: cannot open shared object file: No such file or directory 이런 에러라면 /opt/hfs10.0.465/dsolib/libaudiere-1.9.3.so 를 LD_LIBRARY_PATH에 추가 해 주어야 한다 걍 이런게 귀찮다면 $ export LD_LIBRARY_PATH=/opt/hfs10.0.465/python/lib:/opt/hfs10.0.465/dsolib:$LD_LIBRARY_PATH ---------------------------------------------------------------------------------------------- Geo convert - hom standalone 준비할 것들에 대해서 console 을 실행합니다 $ cd /opt/hfs10.0.465/ $ source houdini_setup_bash $ export LD_LIBRARY_PATH=/opt/hfs10.0.465/python/lib:/opt/hfs10.0.465/dsolib 여기 까지 하면 후디니를 파이썬에서 넌구이 버전으로 실행이 가능해 집니다 확인 방법은 $ python >>> import sys, os >>> sys.path.append(os.environ['HFS'] + '/houdini/scripts/python') >>> import hou >>> import hou 했을 때 에러가 없어야 합니다 참고 하세요 위와 같은 환경 셋팅이 되면 구이버전 후디니가 안됩니다 리눅스에서만 해봤습니다 ubuntu9.10 64bit 파이썬 버전이 틀려도 됐습니다 후디니파이썬2.5.2 리눅스설치된파이썬2.6.4 실행 방법 usage : ./geoCutting.py [hip file] [geo path] [cutting box file] [output] [hip file] : 포인트들과 컷팅박스가 있는 후디니 화일입니다 /home/pinkclear/ntfsData/WORK/Project/FLD047/pointCutting.hip [geo path] : 컨버팅 하기 전 원본 geo 가 있는 디렉토리입니다 컨버팅할 geo만 있는게 좋습니다 /home/pinkclear/ntfsData/WORK/Project/FLD047/original_geo [cutting box file] : 컷팅박스 geo 화일입니다 /home/pinkclear/ntfsData/WORK/Project/FLD047/cutting_box.geo [output] : 컷팅 박스로 잘려진 포인트들의 geo 가 저장될 디렉토리입니다 /home/pinkclear/ntfsData/WORK/Project/FLD047/cutting_geo ./geoCutting.py /home/pinkclear/ntfsData/WORK/Project/FLD047/pointCutting.hip /home/pinkclear/ntfsData/WORK/Project/FLD047/original_geo /home/pinkclear/ntfsData/WORK/Project/FLD047/cutting_box.geo /home/pinkclear/ntfsData/WORK/Project/FLD047/cutting_geo 전체적인 명령은 이렇게 됩니다 $ ./geoCutting.py 라고만 하면 간단 설명이 나옵니다 usage : ./geoCutting.py [hip file] [geo path] [cutting box file] [output] sample : ./geoCutting.py /home/pinkclear/ntfsData/WORK/Project/FLD047/pointCutting.hip /home/pinkclear/ntfsData/WORK/Project/FLD047/original_geo /home/pinkclear/ntfsData/WORK/Project/FLD047/cutting_box.geo /home/pinkclear/ntfsData/WORK/Project/FLD047/cutting_geo 이렇게 ※ Help에서 "feedloader" 검색하여 알아보기.
'Houdini > Python' 카테고리의 다른 글
Scene View Select (obj, geo, dop, etc...) (0) | 2013.07.11 |
---|---|
rot, trans, scale (0) | 2013.05.25 |
Python으로 만든 뷰창 옵션 지우기 (0) | 2013.02.23 |
모든 하위 노드 출력하기 (0) | 2013.02.22 |
Houdini Python Test (0) | 2013.02.20 |