2015-08-20 30 views
1

我對節點編寫和Maya的Python 2.0 API比較陌生,並且正在使用預定數量的輸入點創建自定義節點來執行一些計算。對於我們的目的,我們會說7分。在maya python 2.0中指定自定義節點上的屬性數組的大小API

我已經在我的節點類的初始化方法使用下面的代碼成功添加了複合陣列屬性我的節點:

cAttr = OpenMaya.MFnCompoundAttribute() 
    node.test = cAttr.create('test','t') 

    xv = OpenMaya.MFnUnitAttribute() 
    node.testX = xv.create('testX','tx',OpenMaya.MFnUnitAttribute.kDistance) 
    xv.storable = True 
    xv.writable = True 
    cAttr.addChild(node.testX) 

    xv = OpenMaya.MFnUnitAttribute() 
    node.testY = xv.create('testY','ty',OpenMaya.MFnUnitAttribute.kDistance) 
    xv.storable = True 
    xv.writable = True 
    cAttr.addChild(node.testY) 

    xv = OpenMaya.MFnUnitAttribute() 
    node.testZ = xv.create('testZ','tz',OpenMaya.MFnUnitAttribute.kDistance) 
    xv.storable = True 
    xv.writable = True 
    cAttr.addChild(node.testZ) 

    cAttr.array = True 

    node.addAttribute(node.test) 

現在,我都這樣了,我怎麼可以指定我想要的節點。測試(cAttr)數組有7個元素?

非常感謝!

回答

0

如果您在定義化合物時要求具有默認大小或數組的固定大小,則沒有解決方案。

您只需爲創建的每個實例設置屬性數組即可。爲此,您需要實現postConstructor()方法。該方法在自定義python對象實例成爲有效的Maya節點後由Maya核心調用。

postConstructor() - >自

內部Maya創建兩個對象創建用戶定義的節點時,內部MObject和用戶派生的對象。 只有在調用MPxNode構造函數之後,纔會創建這兩個對象之間的關聯。這意味着不能從MPxNode構造函數調用MPxNode成員函數。 當安全地調用任何MPxNode成員函數時,postConstructor將在構造函數之後立即被調用。

相關問題