什么是context options?
houdini18.0新增的但是到18.5都还没火虽有点小但继续开发会很有前景的一项功能.一般称为上下文选项.所谓的context optinos可以理解为整个hip文件的全局变量.与Edit->Aliases and Variables不同,context options中定义的全局变量,可以直接以@的方式调用.而且重点是它可以使用脚本来创建与管理,对于开发人员来说非常方便.
以前我们可能使用copy parameter或者读属性的方式来获取值,每用到一次就得重复操作一次,写的表达式很长很多,很迷,使用Top流创建全局属性虽然也可以但是操作有点重,而且也不方便用脚本管理.现在一个统一面板一个@就搞定了.
打开方式
可以创建的类型
前面是标签名称,后面小写的是变量名称,初创时houdini会根据标签自动创建的小写变量。我这里用的python3版所以有中文
创建的了中文也可以的
使用@来调用
image.png脚本控制命令
hou.contextOptionNames() #获取所有添加的上下文选项
hou.setContextOption() #设置上下文内容
hou.contextOption() #获取指定的上下文内容
hou.setContextOptionConfig() #设置上下文配置
hou.contextOptionConfig() #上下文配置
hou.removeContextOption() #移除指定的上下文内容
#注:所有添加或者删除的操作都需要刷新一下才能看见
>>> hou.contextOptionNames()
('myint', 'checkbox', '浮点滑动条', 'node_path1', 'heading_title')
hou.setContextOption() 添加上下文选项
hou.setContextOption('opt1',1.0)
注:python3版本的houdini使用脚本创建是可以创建中文变量的,而且也能被脚本读取,但是不能在节点面板上引用
导入导出上下文选项配置
import contextoptions
# Export all context options in this scene to a JSON file
contextoptions.exportJson("options.json")
# Import context options from a JSON file and merge them over
# any existing options in this scene
contextoptions.importJson("options.json")
删除上下文选项
for name in hou.contextOptionNames():
hou.removeContextOption(name)
自定义配置PythonMenu
上下文选项里直接开放了自定义python选项,如同添加回调函数一样,有了这就可以搞事情了。在自定义之前需要先了解它的配置:
hou.contextOptionConfig(opt) #里面的参数是上下文变量名称
新建一个python menu,重命名aa.通过该函数查看一下
image.png所以发现配置config是一个json,里面有各元素组成,包括脚本。
所以可以定义自己的python menu,先创建一个上下文选项
import json
hou.setContextOption('cgai',0) #需要先创建一个上下文选项
config={"label":"即时演绎","type":"py_menu"}
hou.setContextOptionConfig('cgai',json.dumps(config))
具体脚本还是进界面来编写,刷新一下界面,刚才创建的option就出现了,选择它,然后点击右上角的小笔图标进行内容编辑,
这里面其实就是python函数内部,需要返回一个list,里面的元素以(name,value)的形式一一对应菜单元素。
效果
一些不完善的地方
1.不支持相对变量文件路径直接读取
但是支持绝对路径文件读取
2.不支持任何直接表达式
包括vex,hscript,python
3.当动态计算houdini内部节点数值时,值会清空.但是常量可以持久保持,值随函数执行后释放掉了,这很挫。
下面选择Constant,@pym可以正常读取,选择CScale时,发现@pym值闪一下就回到0,对应物体也是移动了一下,说明有计算,但是没有持久保存.
4.一旦手误x掉了就不能Ctrl+Z回来!!! 所以写长的脚本时候在外面先写好吧.
Houdini18.5 python3
链接:https://pan.baidu.com/s/1RZgpBDThcryyVkMPNhnWLg
提取码:cgai
网友评论