ヘッドアップ ディスプレイでカスタム読み出しを作成する

headsUpDisplay MEL コマンドを使用して、ヘッドアップ ディスプレイでカスタム読み出しを作成、編集します。

コマンドの基本的な使い方については以下で説明しています。コマンドの使い方やフラグの詳しい説明についてはオンライン ヘルプで headsUpDisplay コマンドを参照してください。

構成要素

プロシージャ

ヘッドアップ ディスプレイで表示する情報を返す MEL プロシージャを作成します。

更新イベント

Maya が表示項目をいつ更新すべきかを決定します。たとえば、表示項目が選択したオブジェクトについての情報を表示している場合、この項目を更新する必要があるのは選択状態が変更されたときだけです。これが表示の更新を引き起こすイベントです。

Maya にはリスニングすることができるたくさんのイベントがあります。すべてのイベントのリストを表示するには、headsUpDisplay -listEvents を使用してください。

選択ベースのイベント(「SelectionChanged」または「SomethingSelected」)に基づいて更新する場合、-nodeChanges フラグを使い、選択されたノードに特定のタイプの変更が行われた場合だけ反応するようにイベントのリスニングを洗練することができます。

-nodeChanges "attributeChange" は選択されたノードのアトリビュートが 1 つでも変更された場合、反応します。

-nodeChanges "connectionChange" は選択されたノードの入力または出力が変更された場合、反応します。

-nodeChanges "instanceChange"は選択されたインスタンス化ノードが変更された場合、反応します。

セクションとブロックの位置

項目が表示されるカラムを選択します。これはセクションと呼ばれます。次の表はコマンドが各カラムを参照する際に使用する番号を示しています。0 は画面の左上隅、9 は右下隅です。

0

1

2

3

4

5

6

7

8

9

表示項目が表示されるセクション内のラインを選択します。これはブロックと呼ばれます。

ラベル(Label)

表示ライン上の情報の前に表示されるラベル、たとえば「Position:」を選択します。

コマンド例

ヘッドアップ ディスプレイの項目を作成するには

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 に追加されるようにします。

たとえば、選択したオブジェクトの XYZ 座標をヘッドアップ ディスプレイで表示する場合、選択したオブジェクトの XYZ 座標を返す MEL プロシージャ(たとえば、objectPosition())を作成します。

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 コマンド

次に、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;