使用 headsUpDisplay MEL 命令,可以在平视显示仪中创建或编辑自定义读数。
下文将说明使用该命令的基础知识。请阅读 headsUpDisplay 命令文档,了解该命令用途和标志的完整说明。
创建返回要在平视显示仪中显示的信息的 MEL 程序。
确定 Maya Creative 何时需要更新显示项目。例如,如果显示项目显示有关选定对象的信息,则只有在当前选择发生更改时,Maya Creative 才需更改显示项目。这是触发显示更新的事件。
Maya Creative 有许多您可以关注的事件。使用 headsUpDisplay -listEvents 可以查看所有事件的列表。
如果更新根据的是基于选择的事件(“SelectionChanged”或“SomethingSelected”),则可以使用 -nodeChanges 标志将事件侦听细化到仅侦听选定节点特定更改类型的触发。
-nodeChanges "attributeChange" 在选定节点上任何属性发生更改时触发。
-nodeChanges "connectionChange" 在选定节点上任何输入或输出发生更改时触发。
-nodeChanges "instanceChange" 在任何选定的实例化节点发生更改时触发。
选择用于项目在其中显示的列。这称为区域。下图显示了命令用于指示每个列的数字。0 是左上角,9 是屏幕右下角。
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
在区域内选择项目在其上显示的线。这称为块。
选择在显示线上显示于信息之前的标签,例如“位置:”。
创建平视显示仪项目:
headsUpDisplay -section <section number> -block <block number> -label "<label>" -command "<procedure()>" -event "<event>" <object name>;
然后,显示项目:
headsUpDisplay -edit -visability 1 <object name>;
或者隐藏项目:
headsUpDisplay -edit -visability 0 <object name>;
请参见以下示例。
命令所拥有的选项数多于此处所述项目数,特别是更改显示项目的外观和检查块使用情况的选项。请阅读 headsUpDisplay 命令文档,了解详细信息。
将创建平视显示仪项目(以及任何关联的用户界面)的命令添加到 userSetup.mel 中,使其永久添加到 Maya Creative 副本中。
例如,要在平视显示仪中显示选定对象的 XYZ 坐标,则创建返回选定对象 XYZ 坐标的 MEL 程序(例如,objectPosition())。
global proc float[] objectPosition () { string $selectedNodes[] = `selectedNodes`; float $position[3]; if (size($selectedNodes) > 0) { string $mainObject = $selectedNodes[ (size($selectedNodes) - 1) ]; $position[0] = `getAttr $mainObject.translateX`; $position[1] = `getAttr $mainObject.translateY`; $position[2] = `getAttr $mainObject.translateZ`; } else { $position[0] = 0; $position[1] = 0; $position[2] = 0; } return $position; }
然后,使用 headsUpDisplay 命令创建平视显示仪对象,并添加用户界面以启用或禁用显示项目。
// Create custom HUD objects // To create a script like this for testing, see the command documentation // for the headsUpDisplay command. // headsUpDisplay -section 4 -block 5 -label "Position:" -command "objectPosition()" -event "SelectionChanged" -nodeChanges "attributeChange" HUDObjectPosition; // Add menu items to control the custom items // global string $gHeadsUpDisplayMenu; // Add a divider to separate Maya items from custom items menuItem -parent $gHeadsUpDisplayMenu -divider true; // Add one menu item per heads up display object created above // menuItem -parent $gHeadsUpDisplayMenu -checkBox true -label "Object Position" -command "headsUpDisplay -e -vis 1 HUDObjectPosition" -annotation "Object Postion: Toggle the display of object position"\ myObjectPostionItem;