美文网首页Houdini
Houdini上下文全局变量选项Context Options

Houdini上下文全局变量选项Context Options

作者: MasterZhang | 来源:发表于2020-11-21 15:55 被阅读0次

什么是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

相关文章

  • Houdini上下文全局变量选项Context Options

    什么是context options? houdini18.0新增的但是到18.5都还没火虽有点小但继续开发会很有...

  • useContext

    上下文 全局变量是全局的上下文 上下文是局部的全局变量 使用方法 const Context = createCo...

  • 2018-06-05-Menu

    Munes 菜单选项 Options menu and action bar 选项菜单、显示到标题 context...

  • 2018-08-08

    React 高级指南 React 新版上下文(context) context ?答:上下文(Context) 提...

  • Odin Inspector 系列教程 --- Custom C

    Custom Context Menu Attribute:可用于任何属性,并将自定义选项添加到属性的上下文菜单。...

  • Options 选项

    // Options // OC中的选项使用的NS_OPTIONS定义选项类枚举,就是可以|的 /* typede...

  • Linux中的Context与同步

    Linux中的Context (上下文) 基于ARM64 Context 上下文: 上下文的概念:https://...

  • 领域驱动3 限界上下文

    一.理解限界上下文 1.限界上下文的定义 限界上下文:Bounded Context1)上下文(Context)表...

  • Context Hook

    Context Hook 用于获取上下文数据 使用context: 使用Context Hook:

  • SecureCRT配置自动记录日志

    1)在菜单里选择“Options选项”——“Global Options全局选项” 2)然后选择General常规...

网友评论

    本文标题:Houdini上下文全局变量选项Context Options

    本文链接:https://www.haomeiwen.com/subject/pkkeiktx.html