将自定义属性分组到Maya中的节点

时间:2016-01-18 08:25:33

标签: c++ attributes maya

我正在用c ++编写一个Maya插件,并且有一个自定义的MPxLocatorNode。
我已经为这个节点添加了许多自定义属性:

   MFnNumericAttribute nAttr;

    Attrib1 = nAttr.create( "Attribute1", "att1", MFnNumericData::kInt,1.0 );
    nAttr.setKeyable(false);
    nAttr.setStorable(true);
    nAttr.setReadable(true);
    nAttr.setWritable(true);
    nAttr.setHidden(false);
    addAttribute( unitId );

    Attrib2 = nAttr.create( "Attribute2", "att2", MFnNumericData::kInt,1.0 );
    nAttr.setKeyable(false);
 ...

但是我需要添加大量这些属性,因此在属性编辑器中显示时需要对它们进行分组。有没有办法动态创建组或分隔符?

1 个答案:

答案 0 :(得分:3)

我对分组这个词感到有点困惑,但我会回答2个分组选项。

第一个是将属性分组为复合。化合物的一个很好的例子是点化合物。简而言之,你得到一个拥有3个双重属性的point属性。因此,x,y,z坐标在Point属性下分组。如果现在进入频道编辑器,您将看到分组效果。在“属性编辑器”中,对于已知/预定义类型,将自动分配控件,也可以进行一些分组。

现在,由于您提到了“属性”面板,我认为您对如何教授“属性编辑器”以使其具有与默认布局不同的布局更感兴趣。如果您创建一个AE<我的自定义节点名称> Template.mel文件,其中包含相同名称的功能,那么您可以控制布局的完成方式,并对每个属性的控件进行分组,显示,隐藏和更改

例如,我有一个可以从here下载的自定义节点。由于它是Python和MEL,你可以从那里获得完整的源代码。

节点名称为adskMathNode。 所以我创建了一个AEadskMathNodeTemplate.mel文件。 该文件包含一个声明如下的函数:

global proc AEasdkMathNodeTemplate (string $nodeName) {
    editorTemplate -beginScrollLayout ;
    ...
}

这是您描述新布局的地方。 你将在Maya文件夹中获得更多更好的例子 /脚本/ AETemplates