使用属性模式创建属性

 
 
 

您可以使用属性模式创建动态或扩展属性。属性模式是关于可以添加到任何特定节点或节点类型的动态或扩展属性的描述。使用此功能后,您无需逐个使用 addAttraddExtension 命令创建每个属性。

pyJsonAttrPatternFactory.py 插件不支持此功能。

属性模式文件

要使用此功能,首先要创建一个模式文件。该模式文件列出将添加到节点或节点类型并可以采用插件定义的任何格式的属性。Maya 插件 pyJsonAttrPatternFactory.py 支持 .json 格式。您也可以添加一个用于描述模式文件语法的模式文件(可选)。

模式只是关于通过 applyAttrPattern 命令复制到节点或节点类型的属性的描述。

某些模式类型由插件定义,除非卸载该插件,否则不会删除这些模式类型。

一个模式文件可以包含多个模式,每个模式可以包含多个属性。应用一个模式时,将应用其所有属性,并不仅仅是其中一部分。有关采样模式文件,请参见 attrPatternSchema.json;有关 <maya 安装目录>/devkit/plug-ins/scripted 目录中的采样模式文件,请参见 sampleAttrPatterns.json

属性模式命令

使用 createAttrPatterns 命令创建模式文件中列出的模式集。然后,使用 applyAttrPattern 命令将模式文件的任一模式中列出的属性附加到节点或节点类型。使用 applyAttrPattern 命令,可以确定是否创建动态或扩展属性。如果在命令之后列出节点名称,将创建动态属性。如果使用 -nt 标志列出节点类型,将创建扩展属性。

使用 listAttrPatterns 命令列出可用的模式实例和模式类型。

使用模式将属性应用于节点后,这些属性将不再与该模式关联,并只能使用 deleteAttrdeleteExtension 命令(而不是 deleteAttrPattern 命令)删除。

使用属性模式创建动态或扩展属性的工作流程概要

  1. 创建 json 格式的模式文件,该文件列出了将添加到节点或节点类型的属性。
    提示仅设置不采用默认值的标志的值。未明确设置的任何标志采用其默认值。
  2. <maya 目录>/devkit/plug-ins/scripted/ 位置添加到 PYTHONPATH 环境变量。
  3. 选择“窗口 > 设置/首选项 > 插件管理器”(Window > Settings/Preferences > Plug-in Manager)并加载 pyJsonAttrPatternFactory.py 插件。
    注意也可以使用 loadPlugin pyJsonAttrPatternFactory.py; 命令。
  4. 使用 createAttrPatterns 命令创建模式文件中的模式集。
    注意对于不需要模式文件的较简单属性,可以使用带有 -patternDefinition 标志以及包含模式描述的硬编码字符串的 createAttrPatterns 命令,来创建模式。
  5. 使用 applyAttrPattern 命令将模式中所述的属性附加到特定节点(动态属性)或节点类型(扩展属性)。
注意也可以使用 MPxAttributePatternFactory 类定义新的属性模式类型。工厂会创建包含新属性描述的 MAttributePattern。

示例

下面是此功能的简单示例应用:

  1. 按如下方式创建模式文件,并将其保存为 .json 文件:
    [
               {
                  “name” : “samplePattern”,
                  “attribute” : [
                        {
                                  “name” : “sampleAttr”,
                                  “defaultValue” : 0.0,
                                  “attributeType”: “float”
                        }
                                ]
               }
            ]
    
  2. 通过“插件管理器”(Plug-in Manager)或在命令行上使用 loadPlugin 来加载 pyJsonAttrPatternFactory.py
    loadPlugin pyJsonAttrPatternFactory.py;
  3. 按如下方式创建 samplePattern:
    createAttrPatterns –pt “json” –pf “yourfile.json”;
    注意现在,如果输入 listAttrPatterns; 命令,将列出 samplePattern。
  4. 创建节点并列出其属性:
    createNode addMatrix;
    // Result: addMatrix1 //
    listAttrs;
    // Result: [the addMatrix attributes] //
    
  5. 使用 applyAttrPattern 命令将模式(即其属性)从模式文件附加到节点:
    applyAttrPattern –pn “samplePattern” “addMatrix1”;

    将添加动态属性 sampleAttr。

  6. 使用 listAttrs 命令确认是否已添加动态属性:
    listAttrs;
    // Result: [the addMatrix attributes] sampleAttr //