Houdini上下文全局變量選項(xiàng)Context Options

什么是context options?

houdini18.0新增的但是到18.5都還沒火雖有點(diǎn)小但繼續(xù)開發(fā)會(huì)很有前景的一項(xiàng)功能.一般稱為上下文選項(xiàng).所謂的context optinos可以理解為整個(gè)hip文件的全局變量.與Edit->Aliases and Variables不同,context options中定義的全局變量,可以直接以@的方式調(diào)用.而且重點(diǎn)是它可以使用腳本來創(chuàng)建與管理,對(duì)于開發(fā)人員來說非常方便.

以前我們可能使用copy parameter或者讀屬性的方式來獲取值,每用到一次就得重復(fù)操作一次,寫的表達(dá)式很長(zhǎng)很多,很迷,使用Top流創(chuàng)建全局屬性雖然也可以但是操作有點(diǎn)重,而且也不方便用腳本管理.現(xiàn)在一個(gè)統(tǒng)一面板一個(gè)@就搞定了.

打開方式

可以創(chuàng)建的類型

前面是標(biāo)簽名稱,后面小寫的是變量名稱,初創(chuàng)時(shí)houdini會(huì)根據(jù)標(biāo)簽自動(dòng)創(chuàng)建的小寫變量。我這里用的python3版所以有中文

創(chuàng)建的了中文也可以的

使用@來調(diào)用

image.png

腳本控制命令

hou.contextOptionNames()  #獲取所有添加的上下文選項(xiàng)

hou.setContextOption()   #設(shè)置上下文內(nèi)容

hou.contextOption()  #獲取指定的上下文內(nèi)容

hou.setContextOptionConfig()  #設(shè)置上下文配置

hou.contextOptionConfig()  #上下文配置

hou.removeContextOption() #移除指定的上下文內(nèi)容

#注:所有添加或者刪除的操作都需要刷新一下才能看見
>>> hou.contextOptionNames()
('myint', 'checkbox', '浮點(diǎn)滑動(dòng)條', 'node_path1', 'heading_title')

hou.setContextOption() 添加上下文選項(xiàng)

hou.setContextOption('opt1',1.0)

注:python3版本的houdini使用腳本創(chuàng)建是可以創(chuàng)建中文變量的,而且也能被腳本讀取,但是不能在節(jié)點(diǎn)面板上引用

導(dǎo)入導(dǎo)出上下文選項(xiàng)配置

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")

刪除上下文選項(xiàng)

for name in hou.contextOptionNames():
    hou.removeContextOption(name)

自定義配置PythonMenu

上下文選項(xiàng)里直接開放了自定義python選項(xiàng),如同添加回調(diào)函數(shù)一樣,有了這就可以搞事情了。在自定義之前需要先了解它的配置:

hou.contextOptionConfig(opt) #里面的參數(shù)是上下文變量名稱

新建一個(gè)python menu,重命名aa.通過該函數(shù)查看一下

image.png

所以發(fā)現(xiàn)配置config是一個(gè)json,里面有各元素組成,包括腳本。

所以可以定義自己的python menu,先創(chuàng)建一個(gè)上下文選項(xiàng)

import json
hou.setContextOption('cgai',0)  #需要先創(chuàng)建一個(gè)上下文選項(xiàng)
config={"label":"即時(shí)演繹","type":"py_menu"}
hou.setContextOptionConfig('cgai',json.dumps(config))

具體腳本還是進(jìn)界面來編寫,刷新一下界面,剛才創(chuàng)建的option就出現(xiàn)了,選擇它,然后點(diǎn)擊右上角的小筆圖標(biāo)進(jìn)行內(nèi)容編輯,

這里面其實(shí)就是python函數(shù)內(nèi)部,需要返回一個(gè)list,里面的元素以(name,value)的形式一一對(duì)應(yīng)菜單元素。

效果

一些不完善的地方

1.不支持相對(duì)變量文件路徑直接讀取

但是支持絕對(duì)路徑文件讀取

2.不支持任何直接表達(dá)式

包括vex,hscript,python

3.當(dāng)動(dòng)態(tài)計(jì)算houdini內(nèi)部節(jié)點(diǎn)數(shù)值時(shí),值會(huì)清空.但是常量可以持久保持,值隨函數(shù)執(zhí)行后釋放掉了,這很挫。

下面選擇Constant,@pym可以正常讀取,選擇CScale時(shí),發(fā)現(xiàn)@pym值閃一下就回到0,對(duì)應(yīng)物體也是移動(dòng)了一下,說明有計(jì)算,但是沒有持久保存.

4.一旦手誤x掉了就不能Ctrl+Z回來!!! 所以寫長(zhǎng)的腳本時(shí)候在外面先寫好吧.

Houdini18.5 python3

鏈接:https://pan.baidu.com/s/1RZgpBDThcryyVkMPNhnWLg

提取碼:cgai

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容