headsUpDisplay MEL コマンドを使用して、ヘッドアップ ディスプレイでカスタム読み出しを作成、編集します。
コマンドの基本的な使い方については以下で説明しています。コマンドの使い方やフラグの詳しい説明についてはオンライン ヘルプで「headsUpDisplay」コマンドを参照してください。
Maya が表示項目をいつ更新すべきかを決定します。たとえば、表示項目が選択したオブジェクトについての情報を表示している場合、この項目を更新する必要があるのは選択状態が変更されたときだけです。これが表示の更新を引き起こすイベントです。
Maya にはリスニングすることができるたくさんのイベントがあります。すべてのイベントのリストを表示するには、headsUpDisplay -listEvents を使用してください。
選択ベースのイベント(「SelectionChanged」または「SomethingSelected」)に基づいて更新する場合、-nodeChanges フラグを使い、選択されたノードに特定のタイプの変更が行われた場合だけ反応するようにイベントのリスニングを洗練することができます。
-nodeChanges "attributeChange" は選択されたノードのアトリビュートが 1 つでも変更された場合、反応します。
-nodeChanges "connectionChange" は選択されたノードの入力または出力が変更された場合、反応します。
-nodeChanges "instanceChange"は選択されたインスタンス化ノードが変更された場合、反応します。
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」コマンドを参照してください。
たとえば、選択したオブジェクトの 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;