Python for Houdini函数整理

相关参考文档: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
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容