関数
ペインのレイアウト
desktop(name)
→ hou.Desktop
指定した名前のデスクトップを返します。 そのようなデスクトップがなければNoneを返します。
desktops()
→ tuple
of hou.Desktop
すべてのデスクトップを返します。
サンプルは、hou.Desktop.setAsCurrent()を参照してください。
addDesktop(name)
radialMenu(name)
→ hou.RadialMenu
名前付きメニューを表現したhou.RadialMenuオブジェクトを返します。
そのメニューが存在しなければNone
を返します。
radialMenus()
→ tuple
of hou.RadialMenu
既存メニューを表現したhou.RadialMenuオブジェクトのタプルを返します。
createRadialMenu(name, label)
→ tuple
of hou.RadialMenu
指定した名前とラベルで新しいRadialメニューオブジェクトを作成します。
panes()
→ tuple
of hou.Pane
すべての可視ペインのタプルを返します。これにはすべてのフローティングウィンドウのペインも含みます。
hou.Desktop.panes()も参照してください。
paneTabs()
→ tuple
of hou.PaneTab
すべての可視ペインタブのタプルを返します。これにはすべてのフローティングウィンドウのペインも含みます。
hou.Desktop.paneTabs()も参照してください。
currentPaneTabs()
→ tuple
of hou.PaneTab
ペインタブが含まれたペイン(すべてのフローティングウィンドウ内のペインを含む)内で選択された可視ペインタブすべてのタプルを返します。
hou.Desktop.currentPaneTabs()も参照してください。
paneTabOfType(type, index=0)
→ hou.PaneTab or None
指定したタイプのペインタブを検索して返します。そのようなタブがなければNoneを返します。
type
hou.paneTabType列挙変数。
index
指定したタイプの複数タブがあれば、このパラメータは、どのタブを返すのか決定します。
1番目に見つかったタブを返すには、index=0
を使用し、
2番目に見つかったタブを返すには、index=1
を使用します。
デフォルトではindexが0です。
hou.Desktop.paneTabOfType()も参照してください。
findPane(pane_id)
→ hou.Pane or None
指定した固有IDのペインを返し、そのようなペインが存在しなければNone
を返します。
hou.Desktop.findPane()も参照してください。
findPaneTab(name)
→ hou.PaneTab or None
指定した名前のペインタブを返し、そのようなタブが存在しなければNone
を返します。
名前の頭には、オプションでデスクトップ名とピリオドを付けることができます。
hou.Desktop.findPaneTab()も参照してください。
floatingPanels()
→ tuple
of hou.FloatingPanel
すべての可視フローティングペインを返します。
hou.Desktop.floatingPanels()も参照してください。
paneUnderCursor()
マウスカーソル下にあるhou.Paneオブジェクトを返します。
マウスカーソル下に何もペインがなければNone
を返します。
このメソッドは、現行デスクトップに取り付けられていないペインを含む可視ペインすべてを検索します。
paneTabUnderCursor()
hou.ui.paneUnderCursor()と同様ですが、これはマウスカーソル下にあるhou.PaneTabオブジェクトを返します。
マウスカーソル下に何もペインタブがなければNone
を返します。
このメソッドは、現行デスクトップに取り付けられていないペインタブを含む可視ペインタブすべてを検索します。
スクリプトによるUI
displayConfirmation(text, severity=hou.severityType.Message, help=None,
title=None, details=None, details_label=None, suppress=hou.confirmType.OverwriteFile)
→ int
メッセージとOK、Cancelのボタンが付いたウィンドウをポップアップ表示し、ユーザーがボタンを押すまで待ちます。
ユーザーがOKを押せばTrue
を返し、そうでないならFalse
を返します。
suppress
パラメータを使用すれば、ユーザーが再度この確認ダイアログを表示しないように要求した時に、このダイアログの表示をスキップさせることができます。
このダイアログは、ユーザーにチェックボックスを表示させ、今後このダイアログを表示させたくないかどうかを示させることもできます。
text
表示するメッセージ。
severity
ダイアログ上に表示させるアイコンを決定するhou.severityType値。
hou.severityType.Fatal
を使用すると、ユーザーがダイアログを閉じた後にHoudiniを終了することに注意してください。
help
メインメッセージの下に表示させる追加のヘルプ情報。
title
ウィンドウのタイトル。None
の場合は、タイトルが"Houdini"になります。
details
ユーザーが"Show Details"をクリックすると表示される追加メッセージを含んだ文字列。
details_label
詳細テキストを表示させるかどうかを制御する展開/折り畳みボタンのラベルを含んだ文字列。
details_expanded
がTrueに設定されていれば、このパラメータは何の効果もありません。
'''ファイルを上書きしたいかどうかをユーザーに促し、OKが選択されればファイルを保存します。''' if hou.ui.displayConfirmation("Overwrite the current hip file?", suppress=hou.confirmType.OverwriteFile): hou.hipFile.save()
displayMessage(text, buttons=('OK',), severity=hou.severityType.Message, default_choice=0, close_choice=None, help=None, title=None, details=None, details_label=None,
details_expanded=False)
→ int
メッセージと1つ以上のボタンが付いた小さなウィンドウをポップアップ表示し、ユーザーがボタンを押すまで待ちます。 ユーザーが押したボタンのインデックスを返します。
text
表示するメッセージ。
buttons
ボタンの名前を含んだ文字列シーケンス。デフォルトでは、メッセージウィンドウには1個のOKボタンを含みます。
severity
ダイアログ上に表示させるアイコンを決定するhou.severityType値。
hou.severityType.Fatal
を使用すると、ユーザーがダイアログを閉じた後にHoudiniを終了することに注意してください。
default_choice
ユーザーがEnterを押した時に選択されるボタンのインデックス。
close_choice
ユーザーがEscapeを押したり、ダイアログを閉じた時に選択されるボタンのインデックス。
help
メインメッセージの下に表示させる追加のヘルプ情報。
title
ウィンドウのタイトル。None
の場合は、タイトルが"Houdini"になります。
details
ユーザーが"Show Details"をクリックすると表示される追加メッセージを含んだ文字列。
details_label
詳細テキストを表示させるかどうかを制御する展開/折り畳みボタンのラベルを含んだ文字列。
details_expanded
がTrueに設定されていれば、このパラメータは何の効果もありません。
details_expanded
ブール値。Trueなら、詳細メッセージを表示させるテキスト領域が常に表示され、折り畳むことができません。 Falseなら、詳細メッセージ領域は、メッセージボックスがポップアップされた時に初期段階で折り畳まれていて、 ユーザーがそれを展開することで詳細メッセージを読むことができます。
def saveIfNeeded(): '''保存するかどうかユーザーに尋ね、Yesを選択するとHIPファイルが保存されます。''' if hou.ui.displayMessage("Save the current hip file?", buttons=("Yes", "No")) == 0: hou.hipFile.save()
readInput(message, buttons=('OK',), severity=hou.severityType.Message, default_choice=0, close_choice=None, help=None, title=None, initial_contents=None)
→ (int
, str
)
テキストボックス付きの小さなウィンドウがポップアップ表示され、ユーザーがテキストの行を入力するまで待ちます。
整数を含んだタプルとユーザーが入力したテキストを返します。
整数は押したボタンのインデックスです。
close_choice
がNoneでなく、ユーザーが閉じるボタンをクリックまたはEscapeを押してダイアログを閉じた場合、
返される整数はclose_choice
に設定されます。
message
テキストフィールドの上に表示させるメッセージ。
buttons
ボタンの名前を含んだ文字列シーケンス。デフォルトでは、メッセージウィンドウには1個のOKボタンを含みます。
severity
ダイアログ上に表示させるアイコンを決定するhou.severityType値。
hou.severityType.Fatal
を使用すると、ユーザーがダイアログを閉じた後にHoudiniを終了することに注意してください。
default_choice
ユーザーがEnterを押した時に選択されるボタンのインデックス。
close_choice
ユーザーがEscapeを押したり、ダイアログの閉じるボタンをクリックした時に選択されるボタンのインデックス。
2個以上のボタンがあり、close_choice
がNoneの場合、ユーザーはEscapeやダイアログの閉じるボタンを使ってダイアログを閉じることができません。
1個のボタンのみがあり、close_choice
がNoneの場合、ユーザーはEscapeやダイアログの閉じるボタンを使ってダイアログを閉じることができ、ボタンのインデックスが返されます。
help
メインメッセージの下に表示させる追加のヘルプ情報。
title
ウィンドウのタイトル。None
の場合は、タイトルが"Houdini"になります。
initial_contents
テキストフィールドの初期内容。None
なら、テキストフィールドは初期段階で空っぽです。
hou.ui.readMultiInput()も参照してください。
readMultiInput(message, input_labels, password_input_indices=(), buttons=('OK',), severity=hou.severityType.Message, default_choice=0, close_choice=None, help=None, title=None, initial_contents=(0,))
→ (int
, tuple
of str
)
テキストボックスが付いた小さなウィンドウをポップアップ表示し、ユーザーがテキストを複数の入力フィールドに入力するまで待ちます。
整数を含んだタプルとユーザーが入力した文字列のタプルと入力フィールド毎のテキストを返します。
その整数は、押したボタンのインデックスです。
close_choice
がNoneでなく、ユーザーが閉じるボタンをクリックしたりEscapeを押してダイアログを閉じると、返される整数はclose_choice
に設定されます。
message
テキストの上に表示させるメッセージ。
input_labels
各入力フィールドの前に表示されるラベルのシーケンス。 シーケンス長は、ウィンドウ内に表示される入力フィールドの数を決定します。
password_input_indices
入力フィールドがパスワードフィールドのインデックスのシーケンス。 このシーケンス内にないインデックスのフィールドは、パスワードフィールドになりません。
buttons
ボタンの名前を含んだ文字列シーケンス。デフォルトでは、メッセージウィンドウには1個のOKボタンを含みます。
severity
ダイアログ上に表示させるアイコンを決定するhou.severityType値。
hou.severityType.Fatal
を使用すると、ユーザーがダイアログを閉じた後にHoudiniを終了することに注意してください。
default_choice
ユーザーがEnterを押した時に選択されるボタンのインデックス。
close_choice
ユーザーがEscapeを押したり、ダイアログの閉じるボタンをクリックした時に選択されるボタンのインデックス。
2個以上のボタンがあり、close_choice
がNoneの場合、ユーザーはEscapeやダイアログの閉じるボタンを使ってダイアログを閉じることができません。
1個のボタンのみがあり、close_choice
がNoneの場合、ユーザーはEscapeやダイアログの閉じるボタンを使ってダイアログを閉じることができ、ボタンのインデックスが返されます。
help
メインメッセージの下に表示させる追加のヘルプ情報。
title
ウィンドウのタイトル。None
の場合は、タイトルが"Houdini"になります。
initial_contents
各テキストフィールドの初期の内容を指定したリスト。 リスト長は、入力フィールドの数と同じである必要はありません。 リスト長が短ければ、初期段階では、残りの入力フィールドが空っぽになります。
hou.ui.readInput()も参照してください。
selectFile(start_directory=None, title=None, collapse_sequences=False, file_type=hou.fileType.None, pattern=None, default_value=None, multiple_select=False, image_chooser=False, chooser_mode=hou.fileChooserMode.ReadAndWrite, width=0, height=0)
→ str
ファイル選択ダイアログ付きのウィンドウをポップアップ表示し、ユーザーがファイル名を選択するまで待ちます。 選択したファイルまでのパスを返します。
start_directory
初期のダイアログで表示するディレクトリ。
title
ダイアログのウィンドウタイトル。
collapse_sequences
一般的な数値パターンが使われたファイルシーケンスを$Fを含んだパターンに折り畳むかどうか。
file_type
選択するファイルタイプを意味したhou.fileType列挙値。 可視ファイルのセットは、このファイルタイプとパターンで決まります。
pattern
このパターンに一致したファイル(とファイルタイプで制限されたもの)のみがリストされます。デフォルトでは、すべてがパターンに一致します。
default_value
ダイアログ内のファイル名フィールドのデフォルトの内容。
multiple_select
ユーザーが複数ファイルを選択できるかどうか。
image_chooser
ダイアログで画像のサムネイルを表示するかどうか。
chooser_mode
ユーザーにお願いするファイルが読み込みなのか書き込みなのかを記述したhou.fileChooserMode列挙値。
width
選択ダイアログの幅。0の場合は、選択ダイアログはデフォルトの幅を使用します。
height
選択ダイアログの高さ。0の場合は、選択ダイアログはデフォルトの高さを使用します。
selectFromList(choices, default_choices=(), exclusive=False, message=None, title=None, column_header="Choices", num_visible_rows=10, clear_on_cancel=False, width=0, height=0)
→ tuple
of int
リストボックス内に選択セットが付いたウィンドウをポップアップ表示させて、ユーザーに0個以上の選択をさせます。 選択を受け入れると、その選択された行インデックスのリストが返されます。 選択をキャンセルすると、その初期選択(デフォルトの選択)が返されます。
choices
選択可能な項目を含んだ文字列シーケンス。
default_choices
初期段階で選択させる項目のインデックスを含んだ整数シーケンス。
exclusive
ユーザーが必ず選択項目のどれかを選択しなければならないかどうか。
message
リストボックスの上に表示させるメッセージ。
title
ウィンドウのタイトル。None
の場合は、タイトルが"Houdini"になります。
column_header
選択リストの列ヘッダー。ユーザーは、このヘッダーラベルをクリックしてリストをソートすることができます。
None
の場合は、そのヘッダーは削除されます。
整数のタプルは、表示されるソート順ではなく、オリジナルのアイテム順を意味します。
num_visible_rows
同時に表示できるエントリーの行数。 この表示できる行よりも選択項目が多い場合は、Houdiniはスクロールバーを使用します。
clear_on_cancel
Trueに設定すると、選択がキャンセルされた時に空っぽのタプルが返されます。 Falseに設定すると、選択がキャンセルされた時に初期選択(default_choices)が返されます。
width
選択ダイアログの幅。0の場合は、選択ダイアログはデフォルトの幅を使用します。
height
選択ダイアログの高さ。0の場合は、選択ダイアログはデフォルトの高さを使用します。
selectFromTree(choices, picked=(), exclusive=False, message=None, title=None, clear_on_cancel=False, width=0, height=0)
→ tuple
of str
ツリー選択内に選択セットが付いたウィンドウをポップアップ表示させて、ユーザーに0個以上の選択をさせます。 これらの選択項目は、パスセパレータとしてフォワードスラッシュを使用することでツリー内に配置されます。 選択を受け入れると、その選択されたパスのリストが返されます。 選択をキャンセルすると、その初期選択(ピック)が返されます。
choices
選択可能な項目を含んだ文字列シーケンス。
picked
初期段階で選択させる項目を含んだ文字列シーケンス。
exclusive
ユーザーが必ず選択項目のどれかを選択しなければならないかどうか。
message
リストボックスの上に表示させるメッセージ。
title
ウィンドウのタイトル。None
の場合は、タイトルが"Make Selection"になります。
clear_on_cancel
Trueに設定すると、選択がキャンセルされた時に空っぽのタプルが返されます。 Falseに設定すると、選択がキャンセルされた時に初期選択(picked)が返されます。
width
選択ダイアログの幅。0の場合は、選択ダイアログはデフォルトの幅を使用します。
height
選択ダイアログの高さ。0の場合は、選択ダイアログはデフォルトの高さを使用します。
selectNode(relative_to_node=None, initial_node=None, node_type_filter=None, title=None, width=0, height=0, multiple_select=False, custom_node_filter_callback=None)
→ str
, list of str
, or None
ノードツリービューが付いたウィンドウをポップアップ表示させて、ユーザーにノードを選択させます。
ユーザーがノードを選択すると、そのノードまでのパスを含んだ文字列を返します。
ユーザーがクリアを押すと、None
を返します。ユーザーがキャンセルを押すと、None
を返します。
ユーザーがmultiple_selectをTrue
に設定すると、選択されたパスを含んだ文字列のリストを返し、クリアまたはキャンセルが押されたらNone
を返します。
relative_to_node
相対パス用のhou.Nodeまたは、相対パスをサポートしないならNone
。
ノードを渡すと、Use Relative Pathsチェックボックスが有効になります。
このパラメータを指定して、ユーザーがUse Relative Pathsチェックボックスを使用すれば、この関数は、そのノードの相対パスを返します。
initial_node
初期段階で選択されるhou.Node。
node_type_filter
オプションのhou.nodeTypeFilter列挙値で、これはツリービュー内で表示させるノードのタイプを決めます。
title
選択ダイアログのウィンドウタイトル。None
に設定すると、そのウィンドウタイトルはデフォルトの"Choose Operator"になります。
width
選択ダイアログの幅。0の場合は、選択ダイアログはデフォルトの幅を使用します。
height
選択ダイアログの高さ。0の場合は、選択ダイアログはデフォルトの高さを使用します。
multiple_select
選択ダイアログで複数のノードを選択可能にするかどうか。
True
に設定すると、戻りタイプはパスのリストになります。
False
に設定すると、戻りタイプはパスの名前を含んだ文字列になります。
custom_node_filter_callback
選択ダイアログ内のノード毎に呼び出されるPythonコールバック関数。 このコールバック関数は、1個のhou.Node引数を受け取り、選択ダイアログ内でそのノードを表示させるべきかどうかのブール値を返します。
以下の関数は、hou.Parmを受け取り、ユーザーにノードを選択させ、ユーザーがキャンセルをクリックしない限りはパラメータの値を設定します。
def setParmOnNode(parm, node_type_filter=None): path = hou.ui.selectNode(relative_to_node=parm.node(), node_type_filter=node_type_filter) if path is not None: parm.set(path)
以下のようにこの関数をコールすることができます:
>>> setParmOnNode(hou.parm("/obj/box_object1/shop_materialpath"), hou.nodeTypeFilter.Shop)
以下は、custom_node_filter_callbackを指定したコードの例です:
# ノードをフィルタリングするためのコールバックを定義します。 def hasNumberInName(node): # ノード名に数字が入ったノードのみを表示します。 for letter in node.name(): if letter in "1234567890": return True # ノード名に数字が入っていないノードを表示しません。 return False # ユーザーにノードデータを選択するように促します。 selected_data = hou.ui.selectNode(custom_node_filter_callback=hasNumberInName) # 選択したデータを出力します。 print selected_data
selectMultipleNodes(relative_to_node=None, initial_node=None, node_type_filter=None, title=None, width=0, height=0, custom_node_filter_callback=None)
→ tuple
of str
or None
このメソッドは廃止されました。代わりにhou.ui.selectNode()を使用してください。 selectNodeと同じ挙動ですが、ユーザーが⌃ Ctrlを押したまま複数のノードを選択することで、それらのパスのリストを返すことができます。
selectAttrib(initial_selection=(), multiple_select=False, expand_components=True, width=0, height=0)
→ tuple
of ([Hom:hou.Attrib], int)
ユーザーにシーン内のジオメトリアトリビュートを選択するように促す選択ダイアログをポップアップ表示します。 選択したアトリビュートをhou.Attribと整数値のペアで表現されたタプルで返します。 選択操作をキャンセルした場合は、空っぽのタプルが返されます。
initial_selection
オプションで、選択ダイアログが開いた時の事前に選択されるアトリビュートのタプルをこの引数に設定します。
このタプルには、hou.Attribと整数のペアを含める必要があります。
これは、この関数が返すタプルの構造に合わせます。
expand_components
をTrueに設定した場合、そのタプル内の整数値を必ず-1に設定してください。
multiple_select
Trueに設定すると、ユーザーは選択ダイアログから複数のアトリビュートを選択することができます。
expand_components
Trueに設定すると、選択ダイアログは、アトリビュートコンポーネント(例えば、P[0]
, P[1]
, P[2]
)を表示し、
アトリビュートコンポーネントを選択するようにユーザーに促します。
この場合、返されるタプルの整数値には、選択したコンポーネントインデックスが設定されます。
Falseに設定すると、アトリビュートを選択するようにユーザーに促され、返されるタプルの整数値が-1に設定されます。
width
選択ダイアログの幅。0の場合は、選択ダイアログはデフォルトの幅を使用します。
height
選択ダイアログの高さ。0の場合は、選択ダイアログはデフォルトの高さを使用します。
例:
# /obj/geo1/OUT SOPノード上の'myAttr' Pointアトリビュートの # 2番目のコンポーネントを事前選択します。 attrib = hou.node("/obj/geo1/OUT").geometry().findPointAttrib("myAttr") attrib_component_index = 1 preselected_attribs=((attrib, attrib_component_index), ) # アトリビュートを選択するようにユーザーに促します。 selected_attribs = hou.ui.selectAttrib( initial_selection=preselected_attribs) # 選択したアトリビュートを出力します。 print selected_attribs
expand_components
をFalseに設定した例:
# /obj/geo1/OUT SOPノード上の'myAttr' Pointアトリビュートを # 事前選択します。 attrib = hou.node("/obj/geo1/OUT").geometry().findPointAttrib("myAttr") attrib_component_index = -1 preselected_attribs=((attrib, attrib_component_index), ) # アトリビュートを選択するようにユーザーに促します。 selected_attribs = hou.ui.selectAttrib( initial_selection=preselected_attribs, expand_components=False) # 選択したアトリビュートを出力します。 print selected_attribs
selectNodeData(title=None, message=None, width=0, height=0, initial_selection=0, node_type_filter=None, multiple_select=False, include_data_type_headers=True, include_parms=True, include_object_transforms=True, include_geometry_bounding_boxes=True, include_geometry_attributes=True, expand_components=True, custom_data_callback=None, custom_node_filter_callback=None, help_url=None)
→ dict
ノードからデータを選択するようにユーザーに促す選択ダイアログをポップアップ表示します。
このデータには、パラメータ、オブジェクトノードのトランスフォームのコンポーネント、ジオメトリノードの境界ボックスプロパティ、ジオメトリアトリビュート、さらにはcustom_data_callback
引数で定義されたカスタムデータを選択することができます。
以下のキーによって整理された選択データの辞書を返します:
-
Parameters
選択したパラメータのタプルを含みます。そのタプル内の要素はhou.Parmオブジェクトです。
expand_components
がFalseの場合、それらの要素はhou.ParmTupleオブジェクトです。 -
Transforms
選択したオブジェクトノードのトランスフォームまたはトランスフォームコンポーネントのタプルを含みます。 そのタプル内の要素は、
(node, transform_type, transform_component)
形式の3タプルで、node
は選択したトランスフォームを引き出すhou.Nodeオブジェクト、transform_type
はトランスフォームのタイプ(LocalまたはWorld)、transform_component
はトランスフォームから選択された特定のコンポーネント(例えば、Rotate[X]
)。transform_component
がNone
の時は、コンポーネントの代わりにトランスフォーム全体が選択されます。 -
Bounding Boxes
選択したジオメトリノードの境界ボックスプロパティのタプルを含みます。 そのタプル内の要素は、
(node, bbox_property)
形式の2タプルです。node
は選択した境界ボックスプロパティを引き出すhou.Nodeオブジェクト、bbox_property
は特定の境界ボックスプロパティ(例えば、Size[X]
)。 -
Attributes
選択したジオメトリアトリビュートまたはアトリビュートコンポーネントのタプルを含みます。 そのタプル内の要素は、
(attrib, attrib_index)
形式の2タプルです。attrib
は選択されたhou.Attribオブジェクト、attrib_index
は選択されたアトリビュートコンポーネントのインデックスです。expand_components
がFalseなら、attrib_index
は常に-1です。 -
Custom
custom_data_callback
引数で指定された通りの選択されたカスタムデータのタプルを含みます。 そのタプル内の要素は、(node, custom_data)
形式の2タプルです。node
はカスタムデータの取り付け先の選択されたhou.Nodeオブジェクト、custom_data
は実際のデータです。
Note
特定のキーに対して何もデータが選択されていない場合は、そのキーは辞書内には存在しません。 例えば、パラメータが選択されていない場合、Parametersキーは存在しません。
title
選択ダイアログのウィンドウのタイトル。None
に設定すると、そのウィンドウのタイトルのデフォルトは"Choose Node Data"になります。
message
ノードデータツリー下の選択ダイアログに表示させるオプションのメッセージ。
width
選択ダイアログの幅。0の場合、選択ダイアログはデフォルトの幅を使用します。
height
選択ダイアログの高さ。0の場合、選択ダイアログはデフォルトの高さを使用します。
initial_selection
オプションで、この引数には、選択ダイアログが開いた時に事前選択するノードデータの辞書を設定します。
この辞書には、最低でもParameters、Transforms、Attributes、Customのキーのどれかが含まれていなければなりません。
それらのキーの値は、返される辞書の要素に一致した要素のタプルでなければなりません。
例えば、Parametersタプルにはhou.Parmオブジェクトまたはhou.ParmTupleオブジェクトが含まれていなければなりません。
Transformsタプルには(node, transform_type,transform_component)
タプルが含まれていなければなりません。
Attributesタプルには(attrib, attrib_index)
タプルが含まれていなければなりません。
Customタプルには(node, custom_data)
タプルが含まれていなければなりません。
node_type_filter
ツリービュー内に表示させるノードのタイプを決定するオプションのhou.nodeTypeFilter列挙値。
multiple_select
Trueに設定すると、ユーザーは選択ダイアログから複数のノードデータを選択することができます。
include_data_type_headers
Trueに設定すると、ヘッダーは、Customデータタイプ以外の各データタイプ(例えば、Parameters,Transforms,Attributes)に対してノードデータツリーを表示します。
include_parms
ノードデータツリーにParametersを含めます。
include_object_transforms
ノードデータツリーにObject Transformsを含めます。
include_geometry_bounding_boxes
ノードデータツリーにジオメトリ境界ボックスを含めます。
include_geometry_attributes
ノードデータツリーにジオメトリアトリビュートを含めます。
expand_components
Trueに設定すると、選択ダイアログがパラメータのサブコンポーネント(例えば、t
の代わりにtx
)、
トランスフォームのサブコンポーネント(例えば、Rotate
の代わりにRotate[X]
)、アトリビュートのサブコンポーネント(例えば、P
の代わりにP[0]
)を表示します。
ユーザーは、完全なデータの代わりにサブコンポーネントを選択するように促されます。
custom_data_callback
選択ダイアログ内の各ノードに対して呼び出されるPythonコールバック関数。 このコールバックは、1個のhou.Node引数を受け取り、そのノード内に表示させるカスタムデータの文字列タプルを返します。
ツリー階層にまとめたいカスタムデータのサブパスを指定することができます。
例えば、コールバックが("Fruits/Apples", "Fruits/Bananas", "Fruits/Oranges")
を返した場合、Fruitsの行には、Fruitsの内側にApples,Bananas,Orangesのノードを表示します。
カスタムデータパスの末端以外の部分が選択不可であることに注意してください。
それらの部分を選択可にしたいのであれば、それらの部分をそのタプルの別のエントリーとして返してください。
例えば、Fruitsも選択可にしたいのであれば、そのコールバックが("Fruits", "Fruits/Apples", "Fruits/Bananas", "Fruits/Oranges")
を返すようにします。
custom_node_filter_callback
選択ダイアログ内のノード毎に呼び出されるPythonコールバック関数。 このコールバック関数は、1個のhou.Node引数を受け取り、選択ダイアログ内でそのノードを表示させるべきかどうかのブール値を返します。
help_url
ノードデータ選択ダイアログとヘルプページを関連付けるためのオプションの引数。 この引数を指定すると、'?'ヘルプボタンが選択ダイアログに表示されます。
基本的な例:
# ノードデータの選択を促します。すべてのデータタイプを表示します。 selected_data = hou.ui.selectNodeData() # 選択されたパラメータ(存在すれば)をプリントアウトします。 if "Parameters" in selected_data: for parm in selected_data["Parameters"]: print "Selected Parm: ", parm # 選択されたオブジェクトトランスフォーム(存在すれば)をプリントアウトします。 if "Transforms" in selected_data: for xform_info in selected_data["Transforms"]: print "Selected Node: ", xform_info[0] print "Selected Transform Type: ", xform_info[1] print "Selected Transform Component: ", xform_info[2] # 選択されたジオメトリ境界ボックス(存在すれば)をプリントアウトします。 if "Bounding Boxes" in selected_data: for bbox_info in selected_data["Bounding Boxes"]: print "Selected Node: ", bbox_info[0] print "Selected Bounding Box Property: ", bbox_info[1] # 選択されたジオメトリアトリビュート(存在すれば)をプリントアウトします。 if "Attributes" in selected_data: for attr_info in selected_data["Attributes"]: print "Selected Attribute: ", attr_info[0] print "Selected Attribute Index: ", attr_info[1]
以下は、初期選択を設定する例です:
# /obj/geo1上の'tx', 'ty', 'tz'のパラメータを事前選択します。 preselected_parms = ( hou.parm("/obj/geo1/tx"), hou.parm("/obj/geo1/ty"), hou.parm("/obj/geo1/tz")) # /obj/geo1上のスケールZワールドトランスフォームコンポーネントを事前選択します。 preselected_xforms = ( (hou.node("/obj/geo1"), "World", "Scale[Z]"), ) # /obj/geo1/OUT上の重心Y境界ボックスプロパティを事前選択します。 preselected_bboxes = ( (hou.node("/obj/geo1/OUT"), "Centroid[Y]"), ) # /obj/geo1/OUT SOPノード上の'myAttr'Pointアトリビュートの # 2番目のコンポーネントを事前選択します。 attrib = hou.node("/obj/geo1/OUT").geometry().findPointAttrib("myAttr") attrib_component_index = 1 preselected_attribs=((attrib, attrib_component_index), ) # 初期選択辞書を構築します。 initial_selection = { "Parameters" : preselected_parms, "Transforms" : preselected_xforms, "Bounding Boxes" : preselected_bboxes, "Attributes" : preselected_attribs, } # ノードデータを選択するようにユーザーに促します。 selected_data = hou.ui.selectNodeData( initial_selection=initial_selection, multiple_select=True) # 選択されたデータを出力します。 print selected_data
以下は、カスタムデータを指定する例です:
# カスタムデータを返すコールバックを定義します。 def getCustomData(node): # Objectノード上にカスタムデータのみを追加します。 if node.type().category().name() == "Object": return ["Fruits/Apples", "Fruits/Bananas", "Fruits/Oranges"] # それ以外のすべてのノード上にカスタムデータを追加しません。 return [] # ノードデータを選択するようにユーザーに促します。 selected_data = hou.ui.selectNodeData(custom_data_callback=getCustomData) # 選択されたデータを出力します。 print selected_data
以下は、custom_node_filter_callbackを指定したコードの例です:
# ノードをフィルタリングするためのコールバックを定義します。 def hasNumberInName(node): # ノード名に数字が入ったノードのみを表示します。 for letter in node.name(): if letter in "1234567890": return True # ノード名に数字が入っていないノードを表示しません。 return False # ユーザーにノードデータを選択するように促します。 selected_data = hou.ui.selectNodeData(custom_node_filter_callback=hasNumberInName) # 選択したデータを出力します。 print selected_data
selectParmTag(width=0, height=0)
→ tuple
of str
認識されたパラメータタグのツリービューを持ったウィンドウをポップアップ表示し、ユーザーにタグを選択するように促します。 パラメータタグとは、hou.ParmTemplate.setTags()によってパラメータテンプレートに取り付けることができ、hou.ParmTemplate.tags()によって照会できるメタデータのことです。
このウィンドウに表示されたタグがHoudiniで認識されます。 例えば、GL Diffuseタグを選択して、それをパラメータテンプレートに割り当てると、ビューポートはそのパラメータをDiffuseカラーとして認識します。
このメソッドは、2タプルを返します。1番目の要素は、選択されたタグ名、2番目の要素は、選択されたタグ値です。 タグを選択しなかった場合や選択操作を中断した場合、空っぽの文字列の2タプルが返されます。
width
選択ダイアログの幅。0の場合、選択ダイアログはデフォルトの幅を使用します。
height
選択ダイアログの高さ。0の場合、選択ダイアログはデフォルトの高さを使用します。
selectParm(category=None, bound_parms_only=False, relative_to_node=None, message=None, title=None, initial_parms=(), multiple_select=True, width=0, height=0)
→ tuple
of str
パラメータツリービューを持ったウィンドウをポップアップ表示し、ユーザーにパラメータを選択するように促すことができます。
initial_parms
を使用すれば、最初の段階でパラメータを選択しておくことができます。
選択を受け入れると、選択したパラメータのパスのリストが返されます。 選択をキャンセルすると、初期選択(初期パラメータ)が返されます。
category
ノードタイプでフィルタリングする場合はhou.NodeTypeCategory、すべてのパラメータを表示させるならNone
。
bound_parms_only
デフォルトハンドルにバインドされたパラメータだけをダイアログに表示させるならTrue、すべてのパラメータを表示させるならFalse。
relative_to_node
選択したパラメータのパスの基準となるhou.Node。
message
ダイアログに表示させるメッセージ。
title
ダイアログのタイトル。
multiple_select
ユーザーが複数のパラメータを選択できるかどうか。
width
選択ダイアログの幅。0の場合、選択ダイアログはデフォルトの幅を使用します。
height
選択ダイアログの高さ。0の場合、選択ダイアログはデフォルトの高さを使用します。
selectParmTuple(category=None, bound_parms_only=False, relative_to_node=None, message=None, title=None, initial_parm_tuples=(), multiple_select=True, width=0, height=0)
→ tuple
of str
パラメータツリービューを持ったウィンドウをポップアップ表示し、ユーザーにパラメータタプルを選択するように促すことができます。
initial_parm_tuples
を使用すれば、最初の段階でパラメータタプルを選択しておくことができます。
これらの引数のドキュメントは、hou.ui.selectParm()を参照してください。
selectColor(initial_color=None)
→ hou.Color or None
カラー選択ウィンドウをポップアップ表示し、ユーザーがカラーを選択してOKボタンまたはCancelボタンを押すまで待ちます。
ユーザーがOKボタンを押すと、このメソッドは、そのダイアログで選択したカラーを返します。
ユーザーがCancelボタンを押すと、このメソッドはNone
を返します。
initial_color
パラメータには、ダイアログが初めて開かれた時に表示するhou.Colorを指定します。
これを設定しなかった場合、初期カラーがホワイトになります。
openColorEditor( color_change_callback, include_alpha=False, initial_color=None, initial_alpha=1.0)
Houdiniカラーエディタを開いて、即座にこの関数から戻ります。
Houdiniカラーエディタに変更を加えると、color_change_callback
関数が呼び出されて、そのカラーエディタの現行カラーとアルファ値がその関数に渡されます。
include_alpha
がTrueの場合、Houdiniカラーエディタにはカラーのアルファ値を編集するコントロールが表示されます。
initial_color
パラメータには、Houdiniカラーエディタを最初に開いた時に表示されるhou.Colorを指定します。
これを設定しなかった場合、初期カラーがホワイトになります。
initial_alpha
パラメータには、Houdiniカラーエディタを最初に開いた時に使用するアルファ値を指定します。
これを設定しなかった場合、初期アルファが1.0になります。
include_alpha
がTrueに設定されている場合にのみinitial_alpha
パラメータが適用されることに注意してください。
color_change_callback
引数は、2個のパラメータ(hou.Colorオブジェクトとアルファ値)を受け取る関数を指定してください。
以下がその例です:
def handleColorChange(color, alpha): print "Current color in editor:", color, ", alpha=", alpha hou.ui.openColorEditor(handleColorChange)
openValueLadder(initial_value, value_changed_callback, type=hou.valueLadderType.Generic, data_type=hou.valueLadderDataType.Float)
"バリューラダー"コントロールを表示します。これは、Houdiniのフィールド上でを押した時に通常表示されるUIです。 これによって、Qt Editフィールドなどの独自のカスタムUI上にバリューラダーコントロールを表示させることができます。
典型的なワークフロー:
-
フィールド上のによるプレスとリリースのイベントをリッスンします。
-
ユーザーがフィールド上でを押した時、この関数をコールしてバリューラダーを表示します。 この関数は即座に戻りますが、バリューラダーは可視のままになります。
-
ユーザーがを押したままマウスを動かした時に、そのマウスポインタの座標を使って hou.ui.updateValueLadder()をコールしなければなりません。
-
バリューラダーは、ユーザーが値を変更すると、指定された
value_changed_callback
関数をコールします。 -
ユーザーがを離したら、hou.ui.closeValueLadder()をコールします。
同時に1個のバリューラダーウィンドウしか開くことができません。他のバリューラダーウィンドウが既に開かれている場合、この関数はhou.OperationFailedを引き起こします。
initial_value
バリューラダーが開かれた時に設定する初期値。
value_changed_callback
単一引数を受け取る関数。 ユーザーがバリューラダーを使って数値を編集すると、そのバリューラダーはその新しい値でこの関数をコールします。
type
hou.valueLadderTypeの値のどれかを指定します。利用可能なタイプは"Generic"と"Angle"です。 これは、バリューラダーの増分に影響します。
data_type
hou.valueLadderDataTypeの値のどれかを指定します。IntegerとFloatのバリューラダーの増分は異なります。
このサンプルでは、バリューラダーウィンドウをQtのQLineEditクラスから派生した入力フィールドクラスに対応させる方法を説明しています:
from PySide2 import QtWidgets from PySide2.QtCore import Qt import hou class LineEditWithValueLadder(QtWidgets.QLineEdit): def __init__(self, parent=None): super(LineEditWithValueLadder, self).__init__(parent) self._pressed = False def mousePressEvent(self, event): # MMBが押された時にバリューラダーウィンドウを表示します。 if event.button() == Qt.MiddleButton: try: hou.ui.openValueLadder( float(self.text()), self._ladderchange, data_type=hou.valueLadderDataType.Float ) except hou.OperationFailed: # バリューラダーがどこかで既に開かれています。 return else: self._pressed = True def mouseMoveEvent(self, event): if self._pressed: hou.ui.updateValueLadder( event.globalX(), event.globalY(), bool(event.modifiers() & Qt.AltModifier), bool(event.modifiers() & Qt.ShiftModifier) ) def mouseReleaseEvent(self, event): if event.button() == Qt.MiddleButton and self._pressed: hou.ui.closeValueLadder() self._pressed = False def _ladderchange(self, new_value): self.setText(str(new_value))
updateValueLadder(cursor_x, cursor_y, alt_key, shift_key)
指定したカーソル位置とブール型引数に基づいて、現在開かれているバリューラダーウィンドウの値を更新します。
この関数は、既にhou.ui.openValueLadder()がコールされている場合にのみ動作します。 バリューラダーウィンドウが現在開かれていない場合は、hou.OperationFailedを引き起こします。
cursor_x
現行マウスカーソル位置の水平座標。
cursor_y
現行マウスカーソル位置の垂直座標。
alt_key
現在Alt修飾キーが押されているかどうか。 これは、バリューラダー値をスケールします。
shift_key
現在⇧ Shift修飾キーが押されているかどうか。 これはバリューラダーのアクティブレベルを変更します。
詳細は、hou.ui.openValueLadder()を参照してください。
closeValueLadder()
hou.ui.openValueLadder()コールによって既に開かれた現在のバリューラダーウィンドウを閉じます。
バリューラダーウィンドウが開かれていない場合は、hou.OperationFailedを引き起こします。
詳細は、hou.ui.openValueLadder()を参照してください。
ヘルプ
displayNodeHelp(node_type)
指定したノードタイプのヘルプを表示します。ヘルプブラウザが開かれていない場合は、この関数は新しくヘルプを作成します。
ノードインスタンスのヘルプを表示させたい場合は、このサンプルのように、ノードからhou.NodeTypeへアクセスする方が簡単です:
def displayHelpForNode(node): '''hou.Nodeを与えて、そのヘルプを表示します。''' hou.ui.displayNodeHelp(node.type())
ウィンドウ
openTypePropertiesDialog(node_or_node_type, promote_spare_parms=False, immediately_save=False)
hou.Nodeまたはhou.NodeTypeのインスタンスを与えると、Spareプロパティダイアログが開きます。
promote_spare_parms
このパラメータがTrueで、ノードインスタンスを渡すと、自動的にノード上のSpareパラメータがノードタイプ上のパラメータにプロモートします。
immediately_save
Trueの時、Type Propertiesダイアログの"Apply"をクリックしたかのように、ノードタイプの現行状態を即座に保存します。
openRenderDialog(rop_node)
hou.RopNodeインスタンスを指定すると、そのノードのレンダーコントロールダイアログが開きます。 このダイアログを使用すれば、特定のレンダーパラメータを上書きして、レンダーを起動させることができます。
openRenameSelectedDialog(node)
他のノードを含んだhou.Nodeを指定すると、そのノードの選択された子すべての名前を変更するためのダイアログが開きます。 このダイアログは、パターンマッチを使用して、選択されたノードすべてを一括で名前変更します。
displayFileDependencyDialog(rop_node=None, uploaded_files=(), forced_unselected_patterns=(), project_dir_variable='HIP', is_standalone=true)
→ (bool
, tuple of Parm and string tuples)
現在の.hipファイル内のファイル依存関係を表示するダイアログを開きます。
2-タプルを返します。 そのタプル内の1番目のエレメントは、そのダイアログがOKボタンで閉じられていたらTrue、そうでないならFalseになります。 2番目のエレメントは、選択されたファイルパターンのタプルです。 選択された各ファイルパターンは、ファイルパターンとファイルパターン自体を含んだソースパラメータを保存する<hou.Parm, string>ペアとして表現されます。
Note
ソースパラメータがNoneでないなら、hou.expandString()をコールするのではなく、パラメータの値を評価することでファイルパターン展開が実行されることを推奨します。 ソースパラメータの評価の方が、チャンネル参照と$OSのようなコンテキスト固有の変数を考慮するので、正確です。
showFloatingDetailsViewWindow(node)
showFloatingParmWindow(node)
makeSureChannelEditorIsOpen()
openCaptureWeightSpreadsheet(node, pattern=None)
'captureoverride'タイプのhou.SopNodeのインスタンスを指定すると、そのノードの編集Capture Weightのスプレッドシートが開きます。 patternに文字列を指定すれば、そのpatternで指定したポイントのみが表示されます。 指定しなかった場合、そのノードのすべてのポイントがスプレッドシートに表示されます。
openFileEditor(title, file_path, action_callback=None, params=None)
テキストファイルを編集/保存するモーダレスウィンドウを開きます。
エディタボタン:
-
Apply
: ソースが変更された場合にのみファイルを保存します。 -
Accept
: ソースが変更された場合にファイルを保存して、ウィンドウを閉じます。 -
Cancel
: ファイルの保存をユーザーに確認せずにウィンドウを閉じます。
Note
エディタを開いてから、新しいファイルを開いた場合、新しいファイルを読み込む前にその編集されたファイルを保存するのか破棄するのかユーザーにプロンプトが表示されます。
オプションで、ユーザー定義パラメータのコールバックと辞書を指定することで、Apply
とAccept
のオペレーションをカスタマイズすることができます。
title
ウィンドウタイトルの名前。
file_path
編集するファイルをフルパスで設定した文字列。文字列が空っぽの場合は例外が引き起こされます。
ファイル拡張子は、エディタで使用される言語設定を決定します。以下のファイルタイプに対応しています:
拡張子 |
言語 |
---|---|
.py |
Python |
.cmd |
HScript |
.txt/拡張子なし |
テキストドキュメント |
action_callback
Apply
またはAccept
のどちらかのボタンがクリックされた時にエディタがトリガーするオプションのコールバック。
このコールバックを使用することで、カスタムオペレーションを実行することができます。
エディタは、ファイルが編集されていればそれを保存してからコールバックをコールします。
コールバック名はユーザー側で定義し、入力として辞書引数を受け取ります:
def myApplyAction( **kwargs )
params
ユーザー定義エントリーをint
, double
, bool
, string
のタイプの値にマッピングした辞書。
この辞書は、action_callback
で指定されたコールバックの引数に渡します。
例:
def myAction(**kwargs): hou.ui.printViewerStateMessage(kwargs['msg'] + ' saved.', kwargs['msg_type']) file_path = '/var/tmp/main.py' hou.ui.openFileEditor( 'My Editor Title', file_path, action_callback=myAction, params={ 'msg' : file_path, 'msg_type' : hou.severityType.Message })
ステータスライン
setStatusMessage(message, severity=hou.severityType.Message)
Houdiniのステータスバーにメッセージを表示します。
severity
メッセージの背景カラーを決定するhou.severityType列挙値。
ステータスバーをクリアするには、hou.ui.setStatusMessage("")
をコールします。
コールバック
addEventLoopCallback(callback)
Houdiniのイベントループがアイドル状態の時にコールされるPythonコールバックを登録します。 このコールバックは、Houdiniがビジー処理イベントでない限り、約50ms毎にコールされます。
callback
パラメータを必要としないコール可能なPythonオブジェクト。それは、Python関数、バインドされたメソッドまたは__call__
を実装したオブジェクトです。
def checkForAndProcessEvents(): # ここには、何かのイベントをチェックして処理する内容を記述します。 pass hou.ui.addEventLoopCallback(checkForAndProcessEvents)
この関数を使用して、他のユーザーインターフェースツールキットをHoudiniのイベントループに統合させることができます。 サンプルの使い方は、PyQtとwxPythonのクックブックのサンプルを参照してください。
addSelectionCallback(callback)
Houdiniのグローバルネットワークアイテム選択が変更される度にコールされるPythonコールバックを登録します。
callback
1個のパラメータを必要とするコール可能なPythonオブジェクト。
このパラメータは、現在選択されているhou.NetworkMovableItemオブジェクトすべてのリストになります。
それは、Python関数、バインドされたメソッドまたは__call__
を実装したオブジェクトです。
def selectionCallback(selection): # ここには、選択の変更に対する反応を記述します。 pass hou.ui.addSelectionCallback(selectionCallback)
waitUntil(condition_callback)
Trueを返すまで、用意したコールバックをコールし続けます。その間は、Houdniは反応し続け、そのコールバックと相互に作用し続けることができます。
例えば、ブランクのHoudiniセッションを開始して、以下の内容をシェルフツールに配置したとします。 Houdiniは、そのツールの実行が終了する前に、あなたがオブジェクトノードを作成するまで待ちます。
print "waiting until you create an object..." hou.ui.waitUntil(lambda: len(hou.node("/obj").children()) > 0) print "you created", hou.node("/obj").children()
コールバック関数があまりにも遅くて頻繁に実行できないことが分かっていれば、場合によってのみ動作するように試みることができます:
import time def throttle(callback, delay=2.0): # `callback`のラッパー関数を返します。 # これは、このラッパー関数をコールする頻度に関係なく、`delay`秒おきに`callback`をコールするだけです(デフォルトは2.0)。 # これは、条件関数の実行が重くて、そのコールの頻度を制限したい時に役立ちます。 # Python 2.xは完全な非ローカルキーワードを持たないので、リストで保存します。 last_check = [0.0] def wrapper(): now = time.time() if now < _last_check[0] + delay: # delay内の時にFalseを返すので、Houdiniは、この条件関数のコールを続けます。 return False else: _last_check[0] = now return callback() # 以下のようにhou.waitUntilを使って、この関数を使用します: def my_callback(): return len(hou.node("/obj").children()) > 0 hou.waitUntil(throttle(my_callback, delay=0.5))
eventLoopCallbacks()
→ tuple
of callback
hou.ui.addEventLoopCallback()を使って登録されたすべてのPythonコールバックのタプルを返します。
processPendingEvents()
removeEventLoopCallback(callback)
以前にhou.ui.addEventLoopCallback()で登録したPythonコールバックを削除します。 詳細は、hou.ui.addEventLoopCallback()を参照してください。
コールバックが以前に登録されていなかった場合は、hou.OperationFailedを引き起こします。
removeAllSelectionCallbacks()
以前にhou.ui.addSelectionCallback()で登録したすべてのPythonコールバックを削除します。 詳細は、hou.ui.addSelectionCallback()を参照してください。
removeSelectionCallback(callback)
以前にhou.ui.addSelectionCallback()で登録したPythonコールバックを削除します。 詳細は、hou.ui.addSelectionCallback()を参照してください。
selectionCallbacks()
→ tuple
of callback
hou.ui.addSelectionCallback()で登録したすべてのPythonコールバックのタプルを返します。
ビューポートの更新
triggerUpdate()
強制的にビューポートを更新して、何か必要なクックを処理します。 HoudiniのAuto Updateモードがon Manualの時は、この関数をコールすると良いでしょう。
reloadViewportColorSchemes()
すべての($HFS/houdini/config
にある)3DSceneColors
構成ファイルを再読み込みします。
新しいカラーを反映させるには、ビューポートを再描画(例えば、タンブル)させなければなりません。
この関数は、新しいカラースキームを実装する時に役に立ちます: これをホットキーにマップしたり、Pythonコンソールでコールすることができるので、変更をチェックすることができます。
updateMode()
→ hou.updateMode列挙値
このメソッドは廃止され、代わりにhou.updateModeSetting()を使用してください。
setUpdateMode(mode)
このメソッドは廃止され、代わりにhou.setUpdateMode()を使用してください。
設定
resourceValueFromName(name)
→ str
シンボルのリソース名の文字列値を返します。
このリソース名は、現在選択されているカラースキームの$HH/config/*.hcs
ファイル内のエントリーのどれかに相当します。
指定したシンボル名が存在しなかった場合は、hou.ValueErrorを引き起こします。
colorFromName(name)
→ hou.Color
シンボルカラー名のカラー値を返します。
そのカラー名は、現在選択されているカラースキームの$HH/config/*.hcs
ファイル内のエントリーのどれかに相当します。
指定したシンボル名が存在しなかった場合は、hou.ValueErrorを引き起こします。
例:
>>> hou.ui.colorFromName("DisplayOnColor") <hou.Color r=0.3, g=0.5, b=1>
Tip
hou.qt.getColor()を使用すれば、HOMカラーオブジェクトの代わりにQtカラーオブジェクトを取得することができます。
orientationUpAxis()
→ hou.orientUpAxis列挙値
現在の向きのモードのUp軸を意味するhou.orientUpAxisを返します。
handleOrientToNormalAxis()
→ hou.handleOrientToNormalAxis enum value
ハンドルの向きを変える時のコンポーネント法線に整列させるハンドル軸を示したhou.handleOrientToNormalAxisを返します。
inchesToPixels(inches)
→ float
スクリーン上の距離を意味するinches
引数を指定すると、そのピクセル数が返されます。
これは、オペレーティングシステムが返すインチあたりのドット数と Edit ▸ Preferences ▸ General User Interface からアクセス可能なGlobal UI Size
設定、
もし設定されていればHOUDINI_UISCALE
環境変数から計算されます。
そのため、この値が正確でないことがありますが、Houdiniが距離をインチからピクセルに変換する方法と一貫性があります。
pixelsToInches(pixels)
→ float
スクリーン上のピクセル数を意味するpixels
引数を指定すると、その距離のインチが返されます。
これは、オペレーティングシステムが返すインチあたりのドット数と Edit ▸ Preferences ▸ General User Interface からアクセス可能なGlobal UI Size
設定、
もし設定されていればHOUDINI_UISCALE
環境変数から計算されます。
そのため、この値が正確でないことがありますが、Houdiniが距離をピクセルからインチに変換する方法と一貫性があります。
globalScaleFactor()
→ float
HoudiniのGlobal UI Sizeプリファレンスで設定されているスケール係数を返します。 例えば、HoudiniがNormal UIサイズに設定されていれば、この関数は1.0を返します。
hou.ui.scaledSize()をコールすることができないPySideまたはPyQtビルドのUIでは、このスケール係数を使ってそれらのコンポーネントをスケールすることができます。 例えば、このスケール係数を使用することで、ウェブコンテンツがGlobal UI Sizeと同じになるようにQWebEngineViewオブジェクトのズーム係数を設定することができます:
web_view = QWebEngineWidgets.QWebEngineView() web_view.setZoomFactor(hou.ui.globalScaleFactor())
scaledSize(size)
→ int
グローバルUIスケール係数で指定されたサイズをスケールさせて、そのスケールさせたサイズを返します。 このスケール係数は、HoudiniのGlobal UI Sizeプリファレンスで決まります。 例えば、HoudiniがNormal UIサイズに設定されていれば、このスケール係数は1.0です。
この関数は、PySideまたはPyQtのコード内でハードコーディングされたサイズをスケールさせるのに役立ちます。 以下は、Normal UIサイズのスケールサイズを使ってウィジェットを640×480の固定サイズに設定した例です:
widget = QtWidgets.QWidget() widget.resize(hou.ui.scaledSize(640), hou.ui.scaledSize(480))
以下は、hou.qt.createIcon関数を使って、スケールを変更したアイコンを作成した例です:
icon = hou.qt.createIcon(hou.ui.scaledSize(32), hou.ui.scaledSize(32))
loadPaletteFile(file)
→ tuple
of hou.Color
パレットファイルを読み込んで、そのパレットにリストされているカラーを返します。
file
パラメータにはフルパスまたはファイル名のみを指定することができます。
後者の場合、Houdiniパスはconfig
サブディレクトリ下の名前付きファイルの1番目のインスタンスに対して検索されます。
savePaletteFile(file, colors)
colors
パラメータ(hou.Colorオブジェクトのタプル)の内容を含んだパレットファイルを保存します。
file
パラメータは、そのパレットを保存するファイルのフルパスでなければなりません。
ファイルを書き込むことができなかった場合は、hou.OperationFailedを引き起こします。
クリップボード
copyTextToClipboard(text)
指定したテキストをシステムのクリップボードに設定します。
getTextFromClipboard()
→ str
システムのクリップボードに現在コピーされているテキストを返します。 クリップボードが空っぽ、または非テキストデータが含まれていれば、空っぽの文字列が返されます。
Pythonシェル
writePythonShellHistoryFile(filename=None)
現行のPythonシェルからコマンド履歴をディスクに保存します。
filename
がNoneなら、その履歴は$HOME/houdiniX.X/pyshell.historyに書き出されます。
この関数をPythonシェル外で呼び出すと、その履歴は最後のアクティブシェル(つまり、開いた、または入力を受け入れた最後のシェル)から取得されます。
Pythonシェルが開かれていなかった場合は、hou.OperationFailedを引き起こします。
filename
を作成できなかった場合は、hou.OperationFailedを引き起こします。
readPythonShellHistoryFile(filename=None)
指定したファイルの内容をPythonシェルのコマンド履歴に読み込みます。
filename
がNoneなら、その履歴は$HOME/houdiniX.X/pyshell.historyから読み込まれます。
この関数をPythonシェル外で呼び出すと、その履歴は最後のアクティブシェル(つまり、開いた、または入力を受け入れた最後のシェル)から取得されます。
Pythonシェルが開かれていなかった場合は、hou.OperationFailedを引き起こします。
filename
が存在しない、または読み込むことができなかった場合は、hou.OperationFailedを引き起こします。
shellIO()
→ hou.ShellIO
HoudiniのグラフィカルPythonシェルの実行に使用されているhou.ShellIOオブジェクトを返します。 この関数は内部的にHoudiniで使用され、直接ShellIOにアクセスする必要がありません。
ドラッグアンドドロップ
hasDragSourceData(label)
現在のドラッグソースを照会して、指定したデータタイプが利用可能かどうか決定します。
ドラッグ操作が現在アクティブでないなら、hou.NotAvailableを引き起こします。
getDragSourceData(label, index)
現在のドラッグソースを照会して、ドラッグしたデータを取得します。 指定したデータが利用不可(またはHOMでサポートされていない)の時はNoneを返します。
ドラッグ操作が現在アクティブでないなら、hou.NotAvailableを引き起こします。
Qtインテグレーション
mainQtWindow()
このメソッドは廃止されました。代わりにhou.qt.mainWindowをコールしてください。
createQtIcon(name, width=32, height=32)
このメソッドは廃止されました。代わりにhou.qt.Iconをコールしてください。
qtStyleSheet()
このメソッドは廃止されました。代わりにhou.qt.styleSheetをコールしてください。
ダイアログスクリプト
createDialog(ui_file_name)
→ hou.Dialog
指定した.uiファイルを解析して、そのファイルに定義されているダイアログを返します。
ダイアログは、HoudiniのUser Interface Script Languageで記述しなければなりません。 この言語の概要は、Houdini Development Kit(HDK)ドキュメントの中にあり、特に"Houdini User Interface → The .ui Script Language"セクションにあります。
ui_file_name
は.uiファイルのベース名です。
そのファイルは、HOUDINI_UI_APP_PATH検索パスに登録されているディレクトリに配置しなければなりません。
HOUDINI_UI_APP_PATH検索ディレクトリのリストに関しては、ターミナルからhconfig -ap
を実行してください。
.uiファイルにエラーが含まれていて、ダイアログが作成できなかった場合は、hou.OperationFailedを引き起こします。
ui_file_name
がNone
の場合は、hou.TypeErrorを引き起こします。
findDialog(ui_file_name)
→ hou.Dialog
指定した.uiファイル名で定義されて、hou.ui.createDialog()で作成されたダイアログを返します。
指定した.uiファイルに対してhou.ui.createDialog()でダイアログが作成されなかった場合はNone
を返します。
ui_file_name
がNone
の場合は、hou.TypeErrorを引き起こします。
dialogs()
→ tuple
of hou.Dialog
hou.ui.createDialog()で作成されたダイアログすべてを返します。
その他
beginUploadingAssetFromNode(node, session_key)
ビューアステート
registerViewerState(template)
独自のViewer Stateを表現したhou.ViewerStateTemplateオブジェクトを登録します。 この関数の使用方法に関しては、Viewer Stateのインストール方法を参照してください。
template
hou.ViewerStateTemplateオブジェクト。
同じ名前のステートが既に登録されていることが原因で登録に失敗した場合はhou.NameConflictを引き起こします。 登録に失敗した場合(例えば、登録するステートが用意されていない場合)はhou.OperationFailedを引き起こします。
registerViewerStates()
Viewer Stateフォルダ($HH/viewer_states
と$HOUDINI_USER_PREF_DIR/viewer_states
)を走査して、そこに含まれているすべてのViewer Stateを登録します。
既にHoudiniに登録されているViewer Stateは、単にそのディスク上のバージョンに更新されます。
unregisterViewerState(state_name)
既存のViewer Stateタイプの登録を解除します。
この関数の使用方法に関しては、Viewer Stateのインストール方法を参照してください。
state_name
登録を解除するステートの名前。
登録の解除に失敗した場合(例えば、指定した名前のステートが登録されていない場合)はhou.OperationFailedを引き起こします。
isRegisteredViewerState(state_name)
→ bool
以前にhou.ui.registerViewerState()でstate_name
が登録されている場合はTrue
を返します。そうでない場合はFalse
を返します。
state_name
検証するステートの名前。
reloadViewerState(state_name)
viewer_states
フォルダからPythonモジュールファイルをリロードすることで、登録されているViewer Stateを更新します。
このメソッドはself-installed
ステートでのみ動作します。
単にHDAのコードを編集して保存し直すことでEmbedded
ステートを更新することができます。
詳細は、Hodiniにステートをインストールする方法を参照してください。
Warning
以下のようにリロード時に登録問題に関するエラーメッセージを取得した場合、
Error registering 'my_state': factory not specified or invalid.
そのステートがHoudiniから削除されます。その問題を修復するにはHoudiniを終了させなければなりません。
state_name
リロードするステートの名前。
リロードに失敗した場合(例えば、指定した名前のステートが登録されていない場合)、hou.OperationFailedを引き起こします。
reloadViewerStates(state_names=None)
state_names
配列で指定したとおりに複数のViewer Stateをリロードします。
その配列が空っぽの場合、Houdini内のすべての登録されている手動インストール型のステートがリロードされます。
ステートをリロードする方法の詳細は、hou.ui.reloadViewerState()を参照してください。
state_names
リロードするステート名の配列。デフォルトは空っぽです。
リロードに失敗した場合(例えば、指定した名前のステートが登録されていない場合)、hou.OperationFailedを引き起こします。
viewerStateInfo()
→ string
ステートタイプがキーになっている登録済みのすべてのViewer Stateを表現したJSON辞書文字列を返します。
>>> print hou.ui.viewerStateInfo() { "sidefx_stroke":{ "Label":"Stroke", "Type":"sidefx_stroke", "Category":"Sop", "Source":"$HFS/viewer_states/sidefx_stroke.py", "Handles":{ }, "Selectors":{ }, "Menus":{ "Stroke":{ "Type":"Menu", "Handle":"stroke_menu", "Draw realtime":{ "Type":"Toggle", "Handle":"realtime_mode", "Hotkey":"h.pane.gview.state.sop.sidefx_stroke.realtime_mode", "Keys":[48 ] }, "Brush settings...":{ "Type":"Menu", "Handle":"brush_menu", "Cycle brushes":{ "Type":"Action", "Handle":"cycle_brushes", "Hotkey":"h.pane.gview.state.sop.sidefx_stroke.cycle_brushes", "Keys":[49 ] }, "Brush display mode":{ "Type":"Radio strip", "Handle":"brush_display_mode", "Wireframe":{ "Type":"Radio strip item", "Handle":"brush_wireframe_display", "Hotkey":"h.pane.gview.state.sop.sidefx_stroke.set_wireframe_brush", "Keys":[50 ] }, "Viewport":{ "Type":"Radio strip item", "Handle":"brush_viewport_display", "Hotkey":"h.pane.gview.state.sop.sidefx_stroke.set_viewport_brush", "Keys":[51 ] } } }, } } }, ... }
addViewerStateEventCallback(callback)
hou.viewerStateEventMessageイベンが発生する度にコールされるPythonコールバックを登録します。
'callback'
キーワード引数を必要とするコール可能なPythonオブジェクト。
キーワード引数には以下のタイプがあります:
-
event_type
: hou.viewerStateEventMessageイベント。 -
state_type
: イベントをトリガーしたViewer Stateタイプ。このViewer Stateタイプを使用することで、hou.ui.viewerStateInfo()から返された辞書をインデックス化することができます。
removeViewerStateEventCallback(self,callback)
既にhou.ui.addViewerStateEventCallback()で登録されている特定のPythonコールバックを削除します。
fireViewerStateCustomEvent(user_data, queue=True)
この関数は、特定のワークフローの実装に使用可能なカスタムViewer Stateイベントをトリガーします。
hou.ui.addViewerStateEventCallback()で登録されているクライアントコールバックは、入力のuser_data
引数を使って指定します。
このイベントは即座に処理することも、Houdiniがアイドル状態になった後で処理することもできます。詳細は、queue
引数を参照してください。
user_data
ユーザー定義エントリーをint
, double
, bool
, string
タイプの値にマッピングした辞書。
user_data
が空っぽ、または、未対応の値のタイプを含んでいた場合には例外が引き起こされます。
fireViewerStateCustomEvent
は、OnCustomEventイベントタイプを保存している辞書に新しいエントリー(event_type
)を追加します。
queue
True(デフォルト)の場合、このイベントがキューに登録され、Houdiniがアイドル状態になった時に処理されます。Falseの場合、このイベントが即座に処理されます。
以下は、カスタムイベントの使いかを載せています。
# Viewer Stateイベント用のコールバックを登録します。 hou.ui.addViewerStateEventCallback(myEventHandler) def myEventHandler(**kwargs): import json if kwargs['event_type'] == hou.viewerStateEventMessage.OnCustomEvent: if 'load_file' in kwargs: # JSONファイルを読み込んで、その結果を格納します。 with open(kwargs['load_file']) as file: json_values = json.load(file) elif 'save_file' in kwargs: # json_valuesをJSONファイルに保存します。 with open(kwargs['save_file'], 'w') as file: json.dump(json_values, file, indent=3) # 他の非カスタムViewer Stateイベントを処理します。 elif kwargs['event_type'] == hou.viewerStateEventMessage.OnEnter: pass ... # カスタムイベントを介してJSONファイルを読み込みます。 hou.ui.fireViewerStateCustomEvent( { 'load_file': '/var/tmp/somefile.json'} )
printViewerStateMessage(message, message_type=hou.severityType.Message)
Viewer State Browserのメッセージウィンドウ内にユーザーメッセージをプリントします。hou.viewerStateEventMessage.OnPrintMessageイベントは、この関数がコールされた時に送信されます。
ホットキー
hotkeys(hotkey_symbol)
→ tuple
of str
現在ホットキーシンボルに関連付けられているアクションに割り当てられているホットキーを意味した文字列のタプルを返します。
ホットキーシンボルは、$HH/config/Hotkeys
ディレクトリで見つけることができます。
指定したホットキーシンボルが存在しなかった場合は、hou.ValueErrorを引き起こします。
例:
>>> hou.ui.hotkeys("h.copy") ('Alt+C', 'Ctrl+C') >>> hou.ui.hotkeys("h.pane.copytab") ('Ctrl+T',)
hotkeyDescription(hotkey_symbol)
→ str
ホットキーシンボルに関連付けられているアクションの説明を含んだ文字列を返します。
ホットキーシンボルは、$HH/config/Hotkeys
ディレクトリで見つけることができます。
指定したホットキーシンボルが存在しなかった場合は、hou.ValueErrorを引き起こします。
例:
>>> hou.ui.hotkeyDescription("h.pane.copytab") 'Copy Tab'
isKeyMatch(key, hotkey_symbol)
→ bool
文字列key
で記述したキーが、指定したホットキーシンボルに割り当てられているホットキーのどれかに一致すれば、Trueを返します。
ホットキーシンボルは、$HH/config/Hotkeys
ディレクトリで見つけることができます。
指定したホットキーシンボルが存在しなかった場合やkey文字列が有効なホットキーを意味していなかった場合は、hou.ValueErrorを引き起こします。
例:
>>> hou.ui.isKeyMatch("Ctrl+C", "h.copy") True >>> hou.ui.isKeyMatch("Ctrl+C", "h.pane.copytab") False