我正在用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);
...
但是我需要添加大量这些属性,因此在属性编辑器中显示时需要对它们进行分组。有没有办法动态创建组或分隔符?
答案 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