【问题标题】:Specify the size of Attribute Array on custom Node in maya python 2.0 API在maya python 2.0 API中指定自定义节点上属性数组的大小
【发布时间】:2015-08-20 17:36:10
【问题描述】:

我对节点编写和 Maya 的 Python 2.0 API 比较陌生,我正在创建一个自定义节点来使用预定数量的输入点进行一些计算。出于我们的目的,我们会说 7 分。

我已经在我的节点类的初始化方法中使用以下代码成功地将复合数组属性添加到我的节点:

    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)

现在我有了这个,如何指定我希望 node.test (cAttr) 数组有 7 个元素?

非常感谢!

【问题讨论】:

    标签: python maya maya-api


    【解决方案1】:

    如果您在定义复合时要求数组具有默认大小或固定大小,则没有解决方案。

    您所能做的就是在每个实例创建后立即为其设置属性数组。为此,您需要实现 postConstructor() 方法。在自定义 python 对象实例成为有效的 Maya 节点后,Maya 核心立即调用该方法。

    postConstructor() -> 自我

    在创建用户定义节点时,maya 在内部会创建两个对象,即内部 MObject 和用户派生对象。 直到调用 MPxNode 构造函数之后,才建立这两个对象之间的关联。这意味着不能从 MPxNode 构造函数调用任何 MPxNode 成员函数。 当可以安全地调用任何 MPxNode 成员函数时,将在构造函数之后立即调用 postConstructor。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多