相关参考文档:https://www.sidefx.com/docs/houdini/hom/hou
CSDN
在vscode中使用houdini python api方法: https://pakreht.com/houdini/configure-vscode-for-python/
Houdini houモジュールの入力補完の為のStubファイル生成メモ
hou.pwd(): 一个用于获取当前节点的函数.geometry(): 获取当前节点的几何体,获取的数据只能引用,需要先使用hou.pwd获取到当前的node才能获取当前的geo,例如node = hou.pwd()
geo = node.geometry().points() 获取的是当前几何体的所有点的列表,可以使用该列表对点进行循环操作。如果想获取其中的某个点,可以这样写。(如果点特别多,可以使用geo.iterPoints():)
node = hou.pwd()
geo = node.geometry()
p0 = geo.points()[0]
.iterPoints 是提供一个惰性生成器,使你可以逐个访问几何体的点,而无需一次性将所有点加载到内存中。这在处理非常大的几何体时更加高效。演示:获取3号点的位置()
node = hou.pwd()
geo = node.geometry()
p3 = geo.iterPoints()[3]
pos = p3.position()
print(pos)
也可以配合python的len函数获取当前模型的点总数,例如:
node = hou.pwd()
geo = node.geometry()
np = len(geo.iterPoints())
print(np)
.attribValue() 里面输入属性名,可以获取指定元素上指定点的值。演示:
#获取点属性
node = hou.pwd() # 获取当前节点对象
geo = node.geometry() # 获取节点的几何体数据
point = geo.iterPoints()[7] # 获取编号为 7 的点
a = point.attribValue("a") # 获取点 7 上属性 "a" 的值
print(a) # 打印属性 "a" 的值
#获取detail属性
node = hou.pwd()
geo = node.geometry()
a = geo.attribValue("a")
print(a)
.selectedNodes() 返回当前选择的节点列表,如果只选择了一个并操作当前节点需要这样写:node = hou.selectedNodes()[0].parm(“file”).evalAsString(): 获取指定节点上指定参数的值,例如获得当前选择节点的file路径,在Python Shell 节点运行
如果是值是整数则这样写:num = node.parm("count").evalAsInt()
如果值是浮点则这样写:num = node.parm("count").evalAsFloat()
node = hou.selectedNodes()[0]
parm = node.parm("file").evalAsString()
print(parm)
#打印结果
>>> >>> G:/DigitFold/HDATool/json/image/att.jpg
.prims(): 获取所有的面数量,可用于面循环。.vertives(): Houdini python无法直接获取所有顶点。.position(): 获取点的位置。例如
node = hou.pwd()
geo = node.geometry()
p0 = geo.points()[0]
p0p = p0.position()
print("位置",p0p)
.createPolygon(); 创建一个prim.createPoint(); 创建一个点.setPosition(); 设置一个位置属性,生成一个0 2 0位置的点:
node = hou.pwd()
geo = node.geometry()
point = geo.createPoint()
point.setPosition((0,2,0))
.addvertex(); 添加顶点.deletePrims() 删除模型上的面,需要先创建一个面的列表
node = hou.pwd()
geo = node.geometry()
p1 =[geo.prim(0),geo.prim(1)]
geo.deletePrims(p1)
. findPointAttrib() 查找点属性有没有指定的属性,如果有就会返回属性和属性类型,如果没有返回None例如
node = hou.pwd()
geo = node.geometry()
ro = geo.findPointAttrib("a")
print(ro)
返回值:
有属性
<hou.Attrib Point 'a' (1 Float) of geometry frozen at 000000228E4C9D00>
<hou.Attrib Point 'a' (1 String) of geometry frozen at 000000228E4C9D00>
无属性
None
其他类型属性查找函数
findPrimAttrib
findVertexAttrib
findGlobalAttrib
None
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容