2017-10-12 83 views

回答

1

這是可行的,但並非微不足道。

你會用scriptJob來觀察變化並相應地更新你的gui。

某些類型的更改會直接顯示 - 例如,您可以通過腳本作業響應用戶更改播放範圍,該腳本作業對playbackRangeChanged事件作出反應。上面鏈接的文檔頁面包含可以偵聽的更改事件的列表。

如果您正在觀察屬性的更改,則可以使用attributeChange scriptJob類型在特定屬性發生更改時(通過UI或其他任何方式)運行腳本。

import maya.cmds as cmds 

def test(): 
    print "focal length:", cmds.getAttr('perspShape.focalLength') 

cmds.scriptJob(ac = ("perspShape.focalLength", test)) 

其他種類的變化(其中大多數)不能作爲預定義的事件:例如,每當Persp相機的焦距變化,這將打印的消息。您可以使用condition command創建自己的事件,但您必須編寫檢測更改的代碼。很多人通過使用腳本作業來簡化事情,該腳本作業在Maya閒置並查找更改時運行。這很有效,但是你必須小心翼翼地編寫它,因爲複雜的腳本會讓Maya變得非常緩慢 - 只要用戶沒有與UI進行交互,它就會運行。

相關問題