移動先: 概要 戻り値 キーワード 関連項目 フラグ Python の例

概要

headsUpDisplay([allDescendants=boolean], [allowOverlap=boolean], [attachToRefresh=boolean], [attributeChange=string], [block=int], [blockAlignment=string], [blockSize=string], [command=script], [conditionChange=string], [conditionFalse=string], [conditionTrue=string], [connectionChange=string], [dataAlignment=string], [dataFontSize=string], [dataWidth=int], [decimalPrecision=int], [disregardIndex=boolean], [event=string], [exists=boolean], [getOption=string], [gridColor=int], [label=string], [labelFontSize=string], [labelWidth=int], [lastOccupiedBlock=int], [layoutVisibility=boolean], [listConditions=boolean], [listEvents=boolean], [listHeadsUpDisplays=boolean], [listNodeChanges=boolean], [listPresets=boolean], [name=string], [nextFreeBlock=int], [nodeChanges=string], [padding=int], [preset=string], [refresh=boolean], [remove=boolean], [removeID=int], [removePosition=[int, int]], [resetNodeChanges=string], [scriptResult=boolean], [section=int], [setOption=[string, string]], [showGrid=boolean], [visible=boolean])

注意: オブジェクト名や引数を表す文字列はカンマで区切ります。これは概要には示されていません。

headsUpDisplay は、「元に戻す」が不可能、「照会」が可能、「編集」が可能です。

このコマンドは、3D ビューポート上にある非アクティブの 2D オーバーレイ プレーンに配置されるヘッドアップ ディスプレイ(HUD)オブジェクトを作成します。ユーザ スクリプトで指定する、実際的な情報を提供するために使用します。ビューポートに表示されるテキスト文字列は、このコマンドの各種フラグを使用してフォーマットします。

作成時に必要なフラグは、section フラグと block フラグのみです。preset フラグ、または command フラグ/trigger フラグが存在しない場合、ラベルのみがビューポートに描画されます。

HUD オブジェクトの作成時に、ID 番号が割り当てられます。必要に応じて、この ID 番号を使用して HUD オブジェクト(-rid/removeID [int IDNumber])を削除することができます。また HUD オブジェクトは、それらの位置(セクションとブロック)またはそれの固有の名前を使用して削除することもできます。

戻り値

int定期的なコマンド実行のための、ヘッドアップ ディスプレイ(HUD)の ID 番号。
string|int|int[2]対応する削除コマンドのヘッドアップ ディスプレイの名前、ID またはセクション、ブロック値。

戻り値の型は照会モードでは照会フラグが基になります。

キーワード

hud, headsupdisplay

関連項目

displayStats, polyEvaluate, scriptJob

フラグ

allDescendants, allowOverlap, attachToRefresh, attributeChange, block, blockAlignment, blockSize, command, conditionChange, conditionFalse, conditionTrue, connectionChange, dataAlignment, dataFontSize, dataWidth, decimalPrecision, disregardIndex, event, exists, getOption, gridColor, label, labelFontSize, labelWidth, lastOccupiedBlock, layoutVisibility, listConditions, listEvents, listHeadsUpDisplays, listNodeChanges, listPresets, name, nextFreeBlock, nodeChanges, padding, preset, refresh, remove, removeID, removePosition, resetNodeChanges, scriptResult, section, setOption, showGrid, visible
ロング ネーム(ショート ネーム) 引数型 プロパティ
name(n) string edit
このフラグは、ヘッドアップ ディスプレイ名の編集のみを許可します。
exists(ex) boolean createquery
このフラグは、指定したオブジェクトがヘッドアップ ディスプレイのレイアウトに存在するかどうかを返します。 このコマンドにオブジェクト名を提供する必要があります。このフラグは、他のフラグと併用することができません。
refresh(r) boolean create
このフラグは、指定したヘッドアップ ディスプレイのエレメントを強制的にリフレッシュし、表示される値を更新します。このフラグは、他のフラグと併用することができません。
label(l) string createqueryedit
目的情報の左側に表示されるテキスト文字列です。
layoutVisibility(lv) boolean createqueryedit
ヘッドアップ ディスプレイのレイアウトの可視性(オンかオフ)を切り替えます。これは、個々のヘッドアップ ディスプレイの可視性を修正するのではなく、レイアウトをオフにして、ヘッドアップ ディスプレイが画面に表示されないようにします。カスタマイズしたヘッドアップ ディスプレイの可視設定は維持されます。このフラグは、edit フラグと query フラグのみと併用できます。
visible(vis) boolean createqueryedit
ヘッドアップ ディスプレイのレイアウトの表示(オンかオフ)を切り替えます。
allowOverlap(ao) boolean createqueryedit
重なっているセクションの幅や制限に関わらず、ヘッドアップ ディスプレイを表示します(詳細については、-s/section フラグの説明を参照してください)。
section(s) int createqueryedit
HUD を表示させるセクションを定義します。画面は 10 セクションに分割されています。メイン ビューポートを分割する 10 の要素行列は、5 列 × 2 行で構成されます。セクションのレイアウトを以下に示します。

 ________________________
|    |    |    |    |    |
|    |    |    |    |    |
| 0  | 1  | 2  | 3  | 4  |
|    |    |    |    |    |
|____|____|____|____|____|
|    |    |    |    |    |
|    |    |    |    |    |
| 5  | 6  | 7  | 8  | 9  |
|    |    |    |    |    |
|____|____|____|____|____|

各セクションは、上記のとおり 0 から 9 までの番号で表されます。 たとえば、上列の左から 2 行目の場合、セクションは次のように定義されます。-sec 1

ヘッドアップ ディスプレイが重なり合って文字が煩雑になることを回避するため、それぞれの行には表示の優先順位が定義されていて、各セクションの表示にも優先順位が設定されています。この優先順位に従って、画面スペースが狭まって行のセクション幅が重なり合うと、HUD は優先順位が一番低いセクションを自動的に削除します。これらのセクションは非表示になり、消去されたことを伝える警告メッセージが表示されます。この処理は、最優先のセクションのみが残るまで継続されます。

それぞれの行の優先順位は、次のように定義されます(上列を例に挙げます)。セクション 0 が最優先され、セクション 4 が 2 番目と、外側のセクションの優先順位が最も高くなります。 次に セクション 2 、続くセクション 1 と 3 の優先順位は等しく、共に優先順位が最も低くなります。この優先順位の構造は、下列にも適用されます。外側の 2 セクションが最優先され、中央のセクションが続き、残りの 2 セクションの優先順位が最も低くなります。

つまりビューポートの幅が狭まって上列のセクションが重なり始めた場合、まずセクション 1 と 3 がビューから削除され、続いてセクション 2 が、最後にセクション 4 が削除されます。ブロック レイアウトについても、同様の説明が以下に記されています。

block(b) int createqueryedit
セクション内で、HUD が属する個々のブロックを表します。各セクションは一列のブロックから構成されます。 各セクションに含まれるブロックの総数は異なります。

各セクションに表示されるブロック数は、各セクションにあるブロックのサイズとウィンドウのカレント サイズによって決まります。ブロック数は 0 から始まり、必要に応じて増加します。

結果として生じる各 HUD の出力文字列は、次に挙げる justify、padding、labelWidth、dataWidth などのフォーマット フラグで定義するパラメータで、各ブロック内でフォーマットされます。レイアウトは下図のとおりです。

__________________________________________
|     |     |        |         |     |     |
|  P  |  J  |   LW   |   DWX   |  J  |  P  |
|_____|_____|________|_________|_____|_____|
P = 幅のサブブロック、パディング
J = ブロック全体の行端揃え
LW = 幅のサブブロック、labelWidth
DWX = 特定数の幅のサブブロック、特定数のデータ要素用の dataWidth

ブロック レイアウト

上図は、各ブロックのレイアウトを示しています。幅: パディング、labelWidth、dataWidth はそれぞれのフラグで定義されます。ブロックのレイアウトの詳細: まずブロックのパディングが計算されます。次に上図の 2 つの主要サブブロック(LW と DWX)がブロックの左右マージンの間で位置揃えされ、一緒に配置されます。主要サブブロックの幅はその内容に関わらず、変化しません。上図で唯一特有のサブブロックは X(特定数)のサブブロックを表す DWX サブブロックのみで、X はコマンドが返すデータ要素の数です。

ブロックの位置決め

上部セクションのブロックは主要ビューポートの上端から始まり、下部セクションは下端から始まります。 ブロックは、ビューポートの中間から動的に非表示になります。したがって、比較的多いブロック数はビューポートへと引き寄せられません。

最後に、単一ブロックを占有できる HUD の数は一つです。 占有されているブロックに HUD をさらに配置しようとするとエラーになります。 HUD を配置する際の注意点です。

nextFreeBlock(nfb) int create
指定したセクションで、空いている最初のブロックのブロック番号を返します。
lastOccupiedBlock(lob) int create
指定したセクションで、最後に占有されたブロックのブロック番号を返します。
blockSize(bs) string createqueryedit
各ブロックの高さを設定します。選択できる高さは、small、medium、large です。 ピクセル単位では、それぞれ 20、35、50 ピクセルに相当します。
padding(p) int createqueryedit
ブロックの左右マージンの幅を指定します。デフォルト値は 15 ピクセルです。
blockAlignment(ba) string createqueryedit
ブロックの、その列内でのアラインメントを指定します。使用可能なアラインメントは「center」、「left」、「right」で、デフォルトは「left」です。
labelFontSize(lfs) string createqueryedit
ラベルのフォント サイズを設定します。使用可能なサイズは small と large です。
dataFontSize(dfs) string createqueryedit
返されたデータのフォント サイズを設定します。使用可能なサイズは small と large です。
dataAlignment(da) string createqueryedit
データ ブロックとデータ テキストの、HUD ブロック内でのアラインメントを指定します。 使用可能なアラインメントは「left」と「right」で、デフォルトは「left」です。
labelWidth(lw) int createqueryedit
ラベルを保持する仮想「テキストボックス」のピクセル幅を指定します。この「テキストボックス」の内容は左揃えにされます。ラベルの実際の幅が「テキストボックス」の幅を超える場合、「テキストボックス」の寸法に合わせてラベルが切り捨てられます(ブロックのレイアウトを確認する場合は、-block フラグの説明を参照してください)。
dataWidth(dw) int createqueryedit
データ値を保持する仮想「テキストボックス」のピクセル幅を指定します。 配列など複数の値を返すコマンドの場合、データ要素ごとに指定した幅の「テキストボックス」が作成されます。ラベルのデータ幅が「テキストボックス」の幅より大きい場合、「テキストボックス」の寸法に合わせてデータ値が切り捨てられます(ブロックのレイアウトを確認する場合は、-block フラグの説明を参照してください)。
decimalPrecision(dp) int createqueryedit
コマンドが返す浮動小数点値の小数精度を設定します。精度値の有効範囲は、1~8 です。
showGrid(sg) boolean createqueryedit
このフラグは、HUD レイアウトのグリッド ラインの表示を切り替えます。
gridColor(gco) int createqueryedit
このフラグは、非アクティブなカラー パレットを使って、グリッド ラインのカラーを指定します。1~23 までのインデックス番号を指定すると、パレットから対応するカラーが選択されます。
command(c) script createqueryedit
目的の情報を得るために、実行するプロシージャまたはスクリプトを指定します。値または値の配列を返す必要があります。 コマンドが値を返さない場合は、警告メッセージが表示されます。 このフラグは、condition フラグ、event フラグ、attachToRefresh フラグなどのトリガ フラグと併用する必要があります。
nodeChanges(nc) string createqueryeditmultiuse
このフラグは、選択ベースのトリガ(すなわち、「SelectionChanged」や「SomethingSelected」)と併用した場合のみに動作し、それ以外の場合は無視されます。このフラグは HUD スクリプトをアタッチし、選択したノードに対する特定の変更が行われたときに実行します。このフラグを使用して、nodeChange を設定します。nodeChange をリセットするには、-rnc/resetNodeChanges フラグを使います。すべての使用可能なノード変更のリストを表示するには、-lnc/listNodeChanges フラグを使います。使用可能なノード変更のリストとそれらの機能を次に記します。

attributeChange: このスクリプトは、現在選択されているノードのすべてのアトリビュート変更に対応します。

connectionChange: このスクリプトは、現在選択されているノードのすべてのコネクション変更に対応します。

instanceChange: このスクリプトは、現在選択されているノードのすべてのインスタンス変更に対応します。

このフラグは照会モードで、すべての nodeChanges の値を対(nodeChange の名前に続きその値)で返します。

警告: (パフォーマンス警告)
対象のノード変更が HUD スクリプトによって引き起こされた場合、nodeChange トリガを選択ベースのトリガにアタッチするとパフォーマンスが著しく低下することがあります。

したがって、HUD コマンドやスクリプトを簡潔にし、用途をデータの読み出しに限定するように努めてください。アトリビュートの修正、コネクションやインスタンスの作成は、パフォーマンスの低下につながります。

resetNodeChanges(rnc) string editmultiuse
このフラグは、指定した nodeChange を false にリセットします。このフラグは、edit フラグ下のみで動作します。詳細については、-nc/nodeChanges フラグの説明を参照してください。
attachToRefresh(atr) boolean createqueryedit
コマンドをリフレッシュ プロセスにアタッチします。このスクリプトは待機リフレッシュが実行される度に実行され、直後に更新されます。
conditionTrue(ct) string createedit
指定した条件が true になった場合に、データをサンプリングするためにコマンドを実行するトリガです。指定した条件は、定義済みまたはユーザ定義のブーリアンである必要があります。存在する条件のリストを取得するには、-lc/listConditions フラグを使います。
conditionFalse(cf) string createedit
指定した条件が false になった場合に、データをサンプリングするためにコマンドを実行するトリガです。指定した条件は、定義済みまたはユーザ定義のブーリアンである必要があります。存在する条件のリストを取得するには、-lc/listConditions フラグを使います。
conditionChange(cc) string createedit
指定した条件が変わった場合に、データをサンプリングするためにコマンドを実行するトリガです。指定した条件は、定義済みまたはユーザ定義のブーリアンである必要があります。存在する条件のリストを取得するには、-lc/listConditions フラグを使います。
event(ev) string createedit
指定したイベントが発生した場合に、コマンドを実行します。指定したイベントは、定義済みの Maya イベントである必要があります。存在するイベントのリストを取得するには、-le/listEvents フラグを使用します。
attributeChange(ac) string createedit
指定したアトリビュートの値が変わった場合に、コマンドを実行します。文字列はディペンデンシー ノードと特定のアトリビュートの両方を特定する必要があります。ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)この HUD は削除されます。
connectionChange(con) string createedit
指定したアトリビュートの関連付けが変わった場合に、このコマンドを実行します。文字列はディペンデンシー ノードと特定のアトリビュートの両方を特定する必要があります。 ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)この HUD は削除されます。
disregardIndex(di) boolean createedit
このフラグは -ac/attributeChange フラグと併用した場合のみに使用できます。これを指定し、HUD がマルチ(インデックス付き)アトリビュートにアタッチされている場合、変更されたマルチ アトリビュートに関わらず、HUD コマンドが実行されます。
allDescendants(ad) boolean createedit
このフラグは -ac/attributeChange フラグと併用した場合のみに使用できます。これを指定し、HUD が複合アトリビュートまたはマルチ アトリビュートにアタッチされている場合、指定したアトリビュートとその子孫に対する変更に基づいて HUD コマンドが実行されます。
preset(pre) string createqueryedit
この設定を使用して、通常の MEL コマンドやスクリプトでは取得できない特別なデータを読み出す HUD を含む、特定の定義済み HUD を選択します。このフラグは、コマンドと trigger フラグの組み合わせとは相互排他的です。ただしプリセットは block alignment、label、dataFontSize など、その他すべての headsUpDisplay アトリビュート フラグと動作します(以下に記されたフラグを除く)。使用可能なプリセットのリストを取得するには、このコマンドの -lp/listPresets フラグを使います。

使用可能なプリセットの説明を次に記します。

cameraNames
HUD が寄せているビューごとに、ビューが使用しているカメラ名をデータ ブロック内に返します。
polyVerts
カメラから見える頂点の数に関する 3 つの値をデータブロック内に返します。
  • 第 1 の値: カメラから見えるアクティブと非アクティブな頂点の数を表します。
  • 第 2 の値: カメラから見えるアクティブ オブジェクトのみにある頂点の数を表します。
  • 第 3 の値: カメラから見えるアクティブな頂点の数を表します。
polyEdges
カメラから見えるエッジの数に関する 3 つの値をデータブロック内に返します。 3 つの値の順序は、polyVerts プリセットと同様です。
polyFaces
カメラから見えるフェースの数に関する 3 つの値をデータ ブロック内に返します。3 つの値の順序は、polyVerts プリセットと同様です。
polyUVs
カメラから見える UV の数に関する 3 つの値をデータブロック内に返します。3 つの値の順序は、polyVerts プリセットと同様です。
polyTriangles
カメラから見える三角の数に関する 3 つの値をデータ ブロック内に返します。3 つの値の順序は、polyVerts プリセットと同様です。
frameRate
フレーム レートと「fps」文字列の両方を含む単一の文字列をデータ ブロック内に返します。これはリフレッシュごとに更新されます。
viewAxis
HUD 内のグリッド軸の向きを描画します。これはリフレッシュごとに更新されます。このプリセットはすべてのアトリビュート フラグに対応しますが、プリセットに影響を与えるのは block alignment と block size などのブロック アトリビュート関連のフラグに限定されます。このプリセットのブロック寸法は、blockSize -「large」、blockWidth -「50」で、ピクセルの領域は 50x50 になります。
distanceFromCamera
ビューのカメラから、ビュー内で選択したオブジェクトが含まれるバウンディング ボックスの中心までの距離をデータ ブロック内に返します。
listConditions(lc) boolean createquery
このフラグは、適用できるすべての条件の名前を含む文字配列を返します。
listEvents(le) boolean createquery
このフラグは、使用可能なすべてのイベントの名前を含む文字配列を返します。
listHeadsUpDisplays(lh) boolean createquery
このフラグは、既存の全 HUD の名前を含む文字配列を返します。
listNodeChanges(lnc) boolean createquery
このフラグは、使用可能なすべてのノード変更の名前を含む文字配列を返します。
listPresets(lp) boolean createquery
このフラグは、使用可能なすべてのプリセット HUD の名前を含む文字配列を返します。
scriptResult(sr) boolean query
このフラグは照会フラグとの併用に限定されます。このフラグで照会すると、HUD の最新の結果が返されます。
remove(rem) boolean createedit
このコマンドは、指定した HUD 名の、指定した HUD オブジェクトを削除します。このフラグはその他すべてのフラグをオーバーライドし、他の削除フラグとは相互排他的です。
removeID(rid) int createedit
このコマンドは、指定した HUD オブジェクトの、作成時に割り当てられる、指定した HUD の ID 番号を削除します。このフラグはその他すべてのフラグをオーバーライドし、他の削除フラグとは相互排他的です。
removePosition(rp) [int, int] createedit
このコマンドは、HUD レイアウトにある特定のブロック位置のコンテンツを削除します。 このフラグはその他すべてのフラグをオーバーライドし、他の削除フラグとは相互排他的です。このフラグの構文は、-removePosition/rp [section] [block] です。
setOption(so) [string, string] edit
このフラグは、先頭文字列で指定したオプションを編集します。カレントのオプションは、スムース メッシュ プレビュー内の smpPolyCount -「cage」または「smp」- ポリゴン数の表示を定義します。
getOption(op) string query
このフラグは、文字列で指定したオプションの値を返します。 オプションのリストについては、setOption を参照してください。

このフラグは照会モードでは値が必要になります。


: コマンドの作成モードで使用可能なフラグ : コマンドの編集モードで使用可能なフラグ
: コマンドの照会モードで使用可能なフラグ : タプルまたはリストとして渡された複数の引数を持てるフラグ

Python の例

import maya.cmds as cmds

#
#Define a procedure that returns a value to be used by the Heads Up Display
#
def objectPosition(*args):
	try:
		selectedNodes = cmds.selectedNodes()
		mainObj = selectedNodes[-1]
		positionList = cmds.getAttr('%s.translate' % mainObj)
		return positionList[0]
	except:
		return (0.0,0.0,0.0)
#
#Now, create a HUD object to display the return value of the above procedure
#
#Attributes:
#
#        - Section 1, block 0, represents the top second slot of the view.
#        - Set the blockSize to "medium", instead of the default "small"
#        - Assigned the HUD the label: "Position"
#        - Defined the label font size to be large
#        - Assigned the HUD a command to run on a SelectionChanged trigger
#        - Attached the attributeChange node change to the SelectionChanged trigger
#          to allow the update of the data on attribute changes.
#
cmds.headsUpDisplay( 'HUDObjectPosition', section=1, block=0, blockSize='medium', label='Position', labelFontSize='large', command=objectPosition, event='SelectionChanged', nodeChanges='attributeChange' )
#
#Create a preset HUD object to display the camera names.
#
#Attributes:
#
#    - Section 2, block 0, represents the top middle slot of the view.
#    - Using blockalign, the HUD object is centered in the middle of the block
#    - Setting a dw of 50, allocates a space of 50 pixels for the data to reside in.
#    - Finally setting the preset to "cameraNames", selects a preset which will
#      automatically insert the associated data into the data field.
#
cmds.headsUpDisplay( 'HUDCameraName', s=2, b=0, ba='center', dw=50, pre='cameraNames')
#
#Now, remove these two HUDs. Both can be removed in three ways: name, ID or position.
#The following examples will demonstrate removal by name and position
#
cmds.headsUpDisplay( 'HUDObjectPosition', rem=True )
cmds.headsUpDisplay( rp=(7, 0) )