Houdini有非常多的Python模块可使用,不止一个hou,如hutil、toolutils、husd、kramautils等,只是帮助文档并没有提起,可从源代码docstring中查询;
//查询有效的模块 help('modules')
Houdini Object Model(HOM)是houdini提供的一套API(主要由C++实现,包含大量类和函数,涵盖houdini各个方面),允许用户通过编程方式控制houdini内部的结构和功能;HOM 主要通过 Python接口 hou
模块提供给用户(但它也有 C++ 接口),可使用python scripting language,获取houdini信息及控制houdini;HOM可替代HScript功能;
在python内,hou package是模块、类、函数的最高层级(定义HOM);当在参数编辑器或命令行shell内写入表达式时,hou模块会自动导入;
hou模块按功能可分为三类:子模块(sub-modules)、类(classes)、函数(functions);
- 子模块(sub-modules),首字母小写,不带括号,其内可能还有类、函数;
- hou.hipFile、hou.session、hou.ui、hou.qt、hou.hotkeys
- 类(classes),首字母大写,不带括号,类必须实例化使用,实例化对象可调用其属性和方法;
- hou.Node、hou.Geometry、hou.Parm、hou.Attrib、...
- hou.Point、hou.Prim(hou.Face、hou.PackedPrim、hou.Quadric、hou.Surface、hou.VDB、hou.Volume)、hou.Edge、hou.Vertex
- hou.Face(hou.Polygon)
- 函数(functions),首字母小写,带括号;
- hou.pwd()、hou.node()、hou.expandString()
hou模块,包含访问Houdini的所有子模块、类、及函数;
//查询hou模块路径 >>> print(hou.__file__) D:\Houdini/Houdini20.0.547/houdini/python3.10libs\hou.py
//Python Shell代码
>>> hou.node('/obj')
<hou.OpNode at /obj>
>>> obj.createNode('geo', 'mygeo')
<hou.ObjNode of type geo at /obj/mygeo1>
>>> geo.createNode('box', 'maybox')
<hou.SopNode of type box at /obj/mygeo/maybox1>