Houdini 自定义节点参数面板 hou.ParmTemplate学习笔记

hou.ParmTemplate 继承图 子类

hou.ButtonParmTemplate
hou.ParmTemplate
hou.DataParmTemplate
hou.FloatParmTemplate
hou.FolderParmTemplate
hou.FolderSetParmTemplate
hou.IntParmTemplate
hou.LabelParmTemplate
hou.MenuParmTemplate
hou.RampParmTemplate
hou.SeparatorParmTemplate
hou.StringParmTemplate
hou.ToggleParmTemplate

目录

一、 ButtonParmTemplate按钮参数
二、 DataParmTemplate数据参数
三、 FloatParmTemplate浮点参数
四、 FolderParmTemplate多参数夹子参数
五、 FolderSetParmTemplate参数夹子的集合
六、 IntParmTemplate整数参数
七、 LabelParmTemplate标签参数
八、 MenuParmTemplate下拉菜单参数
九、 RampParmTemplate渐变类型Ramp参数
十、 SeparatorParmTemplate分隔符
十一、StringParmTemplate字符串参数
十二、ToggleParmTemplate复选框参数

一、ButtonParmTemplate 按钮参数类1

  • 表示按钮的参数,这是参数模板类最简单的类,只有一个初始化__init__方法,其他方法全部继承自hou.ParmTemplate
  • 创建一个subnet节点
obj = hou.node('/obj')
geo = obj.createNode('geo','My_Geometry')
subnet = geo.createNode('subnet','My_Subnet')
  • 创建subnetwork默认会有4个Label参数,用hide方法将其隐藏
subnet.parm('label1').hide(True)  # True表示隐藏,False表示不隐藏
subnet.parm('label2').hide(True)
subnet.parm('label3').hide(True)
subnet.parm('label4').hide(True)
  • 创建一个按钮实例
btn = hou.ButtonParmTemplate('btn1', 'Button1')  # 名称,标签名
  • 按钮需要执行某个脚本,默认是hscript类型,如果要使用python则需要用setScriptCallbackLanguage方法设置
  • 生成类实例之后有两种方法设置需要回调的脚本:
# 第一种是分别使用setScriptCallbackLanguage设置脚本类型和用setScriptCallback设置要调用的脚本
btn.setScriptCallbackLanguage(hou.scriptLanguage.Python)  # 设置脚本类型为python
btn.setScriptCallback("print 'hello'")

# 另一种是用setTags方法,setTags方法的参数是一个字典
btn.setTags({'script_callback_language':'python','script_callback':"print 'hello'"})
  • 将按钮实例添加到节点参数面板
subnet.addSpareParmTuple(btn)

在这里插入图片描述

二、DataParmTemplate 数据参数类 2

  • 表示数据类的参数元组
data = hou.DataParmTemplate('data1', 'My Data')
subnet.addSpareParmTuple(data)

三、FloatParmTemplate 浮点参数类 3

  • 表示浮点数类的参数元组
f1 = hou.FloatParmTemplate('foo',                          # 名称
                           'Foo',                         # 标签名
                           1,                              # 参数有几个元数
                           								   # 下面是可选项
                           (0.5,),                         # 默认值是一个元组
                           0.001,                          # 最小值
                           3.0,                            # 最大值
                           True,                           # 最小值钳制,True表示钳制
                           False,                          # 最大值钳制,False不钳制
                           hou.parmLook.Regular            # 枚举类型表示默认
                           hou.parmNamingScheme.Base1      # 名称方案
                           None,                           # disable_when
                           False,                          # 是否隐藏
                           False,                          # 隐藏标签
                           False,                          # 与下一个参数合并(下一个参数并排,而不是在在下面)
                           None,                           # 参数帮助
                           None,                           # 回调脚本
                           hou.scriptLanguage.Hscript,     # 回调脚本类型
                           {},                             # tags 字典
                           ('$T',)                         # 默认表达式 元组
                           (hou.scriptLanguage.Hscript,)   # 默认表达式类型 枚举类型 元组
                           ) 
subnet.addSpareParmTuple(f1)

Houdini 自定义节点参数面板 hou.ParmTemplate学习笔记_第1张图片

  • hou.parmLook 枚举类,控制参数外观

    • hou.parmLook.Regular
      默认参数
    • hou.parmLook.Logarithmic
      显示一个滑块,用于更改对数刻度上的值
    • hou.parmLook.Angle
      该参数具有用于输入角度的弧控制,如果使用此外观,请将参数的命名方式设置为hou.parmNamingScheme.Base1
    • hou.parmLook.Vector
      该参数在标签旁边有一个句柄来编辑矢量方向,如果使用此外观,请将参数的命名方案设置为hou.parmNamingScheme.XYZW
    • hou.parmLook.ColorSquare
      参数在标签旁边有一个方形按钮,用于显示当前颜色。您可以单击方框以编辑颜色。如果使用此外观,请将参数的名称方案设置为 hou.parmNamingScheme.RGBA
    • hou.parmLook.HueCircle
      该参数具有一个饼形的色盘,就像COP中的keying节点一样
    • hou.parmLook.CRGBAPlaneChooser
      该参数具有RGBA掩码,其中的按钮用于切换红色,绿色,蓝色和alpha平面
  • hou.parmNamingScheme 枚举类,控制名称方案

    • hou.parmNamingScheme.Base1
      “foo1”,“foo2”,“foo3”,…
    • hou.parmNamingScheme.XYZW
      “foox”,“fooy”,“fooz”,“foow”
    • hou.parmNamingScheme.XYWH
      “foox”,“fooy”,“foow”,“fooh”
    • hou.parmNamingScheme.UVW
      “foou”,“foov”,“foow”
    • hou.parmNamingScheme.RGBA
      “foor”,“foog”,“foob”,“fooa”
    • hou.parmNamingScheme.MinMax
      “foomin”, “foomax”
    • hou.parmNamingScheme.MaxMin
      “foomax”, “foomin”
    • hou.parmNamingScheme.StartEnd
      “foostart”, “fooend”
    • hou.parmNamingScheme.BeginEnd
      “foobegin”, “fooend”

四、 FolderParmTemplate 夹子参数类 4

  • 用夹子管理多个参数
color = hou.FloatParmTemplate('color', 'Color', 3, (0.9, 0.9, 0.9), 0, 1, True, True, hou.parmLook.ColorSquare, hou.parmNamingScheme.RGBA)
frange = hou.IntParmTemplate('f', 'Start/End/Inc', 3, (1, 100, 1))
floder = hou.FolderParmTemplate('floder1', 'Floder1', (color, frange), hou.folderType.TabbedMultiparmBlock)

subnet.addSpareParmTuple(floder)
  • hou.folderType 给参数夹子不同的外观
    • Collapsible
      在这里插入图片描述
    • Simple
      在这里插入图片描述
    • Tabs
      在这里插入图片描述
    • RadioButtons
      在这里插入图片描述
    • MultiparmBlock
      在这里插入图片描述
    • ScrollingMultiparmBlock
      在这里插入图片描述
    • TabbedMultiparmBlock
      Houdini 自定义节点参数面板 hou.ParmTemplate学习笔记_第2张图片

五、 FolderSetParmTemplate 多夹子类 5

  • 同时创建多个夹子
fd_set1 = hou.FolderSetParmTemplate('fd_set1', ('floder_a','floder_b','floder_c'), hou.folderType.Simple)
subnet.addSpareParmTuple(fd_set1)

a1 = hou.FloatParmTemplate('a1', 'A1', 1, (0.5,))
b1 = hou.FloatParmTemplate('b1', 'B1', 1, (0.5,))
c1 = hou.FloatParmTemplate('c1', 'C1', 1, (0.5,))

subnet.addSpareParmTuple(a1, ('floder_a',))
subnet.addSpareParmTuple(b1, ('floder_b',))
subnet.addSpareParmTuple(c1, ('floder_c',))

a2 = hou.FloatParmTemplate('a2', 'A2', 1, (0.2,))
a3 = hou.FloatParmTemplate('a3', 'A3', 1, (0.4,))
floder1 = hou.FolderParmTemplate('floder2', 'Floder2', (a2, a3), hou.folderType.Simple)
subnet.addSpareParmTuple(floder1, ('floder_a',))

Houdini 自定义节点参数面板 hou.ParmTemplate学习笔记_第3张图片

六、 IntParmTemplate 整数参数类 6

参考 FloatParmTemplate浮点参数

七、 LabelParmTemplate 标签参数类 7

  • 参数的值类型也是标签类型的参数
label5 = hou.LabelParmTemplate('label5', "My Label", ('A', 'B', 'C', 'haha', 'hehe' ,'hello'))
subnet.addSpareParmTuple(label5, ('floder_a',))

Houdini 自定义节点参数面板 hou.ParmTemplate学习笔记_第4张图片

八、 MenuParmTemplate 下拉菜单参数类 8

  • 创建一个下拉菜单
menu = hou.MenuParmTemplate('res', 'Resolution', ('low', 'mid', 'hi'), ('Lower', 'Middle', 'High'), 1)
subnet.addSpareParmTuple(menu, ('floder_a', 'Floder2'))
  • 下拉菜单的默认值为1,则标签显示为Middle
    Houdini 自定义节点参数面板 hou.ParmTemplate学习笔记_第5张图片

九、 RampParmTemplate 渐变Ramp参数类 9

r1 = hou.RampParmTemplate('color_ramp',                      
                     "Color Ramp", 
                     hou.rampParmType.Color,        # 枚举类型,Color表示ramp的类型为颜色
                     2,
                     hou.rampBasis.CatmullRom,      # 枚举类型,CatmullRom表示平滑
                     True,
                     hou.colorType.LAB)             # 枚举类型,颜色模式 RGB HSV HSL LAB XYZ
r2 = hou.RampParmTemplate('spline_ramp',                      
                     "Spline Ramp", 
                     hou.rampParmType.Float,        # 枚举类型,Float 表示ramp的类型为线性
                     2,
                     hou.rampBasis.CatmullRom)
subnet.addSpareParmTuple(r1, ('floder_a',))
subnet.addSpareParmTuple(r2, ('floder_a',))

Houdini 自定义节点参数面板 hou.ParmTemplate学习笔记_第6张图片

十、 SeparatorParmTemplate 分隔符 10

  • 创建一个水平分隔符用于分割
sep1 = hou.SeparatorParmTemplate('sep1')
subnet.addSpareParmTuple(sep1, ('floder_a', 'Floder2'))

十一、 StringParmTemplate 字符串参数类 11

  • 加载外部磁盘文件或者选择内部节点
# 磁盘文件
str1 = hou.StringParmTemplate('file',
                              'File', 
                              1, 
                              ("C:/geo/$HIP/$OS.$F4.bgeo.sc",),    # 默认值是元组
                              hou.parmNamingScheme.Base1,
                              hou.stringParmType.FileReference,    # 引用磁盘上的文件
                              hou.fileType.Geometry)
str1.setTags({'filechooser_mode':'read'})                          # 文件选择类型为只读

str2 = hou.StringParmTemplate('camera',
                              'Camera', 
                              1, 
                              ("/obj/cam1",), 
                              hou.parmNamingScheme.Base1,
                              hou.stringParmType.NodeReference,    # 引用节点
                              hou.fileType.Geometry)
str2.setTags({'oprelative':'.','opfilter':'!!OBJ/CAMERA!!'})       # 选择路径和节点类型过滤

subnet.addSpareParmTuple(str1, ('floder_a', 'Floder2'))
subnet.addSpareParmTuple(str2, ('floder_a', 'Floder2'))

Houdini 自定义节点参数面板 hou.ParmTemplate学习笔记_第7张图片

十二、 ToggleParmTemplate 复选框 12

  • 创建一个复选框用于勾选
tog = hou.ToggleParmTemplate('loadimg', 'loadimg')
tog.setJoinWithNext(True)                                          # 与下一个参数并排成一行
tog.hideLabel(True)                                                # 隐藏标签
img = hou.StringParmTemplate('img', 'Load Image', 1, ('',),
                             hou.parmNamingScheme.Base1,
                             hou.stringParmType.FileReference,     # 引用外部磁盘文件
                             hou.fileType.Image)                   # 文件类型为图片格式
img.setDisableWhen('{ loadimg == 0 }')                             # 勾选复选框才会启用该参数

lod_floder = hou.FolderParmTemplate('lod', 'Load Image', 
                                    (tog, img), 
                                    hou.folderType.ImportBlock)    # 使用外部快,因为并排参数需要在一个夹子里

subnet.addSpareParmTuple(lod_floder, ('floder_a', 'Floder2'))
  • 当勾选了Load Image前面的复选框才启用此参数
    Houdini 自定义节点参数面板 hou.ParmTemplate学习笔记_第8张图片

  1. ButtonParmTemplate 创建按钮 ↩︎

  2. DataParmTemplate 创建数据类参数 ↩︎

  3. FloatParmTemplate 创建浮点类参数 ↩︎

  4. FolderParmTemplate 夹子参数类 ↩︎

  5. FolderSetParmTemplate 多夹子类 ↩︎

  6. IntParmTemplate 整数参数类 ↩︎

  7. LabelParmTemplate 标签参数类 ↩︎

  8. MenuParmTemplate 下拉菜单参数类 ↩︎

  9. RampParmTemplate 渐变Ramp参数类 ↩︎

  10. SeparatorParmTemplate 分隔符 ↩︎

  11. StringParmTemplate 字符串参数类 ↩︎

  12. ToggleParmTemplate 复选框 ↩︎

你可能感兴趣的:(python,Houdini)