関数 ¶
ペインのレイアウト ¶
desktop(name)
→ hou.Desktop
指定した名前のデスクトップを返します。 そのようなデスクトップがなければNoneを返します。
desktops()
→ tuple
of hou.Desktop
すべてのデスクトップを返します。
サンプルは、hou.Desktop.setAsCurrentを参照してください。
radialMenu(name)
→ hou.RadialMenu
名前付きメニューを表現したhou.RadialMenuオブジェクトを返します。
そのメニューが存在しなければNone
を返します。
radialMenus()
→ tuple
of hou.RadialMenu
既存メニューを表現したhou.RadialMenuオブジェクトのタプルを返します。
createRadialMenu(name, label)
→ hou.RadialMenu
指定した名前とラベルで新しいRadialメニューオブジェクトを作成します。
createRadialItem(submenu=False, callback=false)
→ hou.RadialScriptItem
一時的なRadialメニューアイテムを作成します。
callback
このアイテムがPythonコールバックまたはスクリプト(テキスト)のどちらを使用するのか。
injectRadialItem(location, item)
一時的なRadialメニューアイテムを現行メニューに挿入します。
location
Radialメニューの位置(上から反時計回りに0 - 7)。
item
createRadialItem
で作成されたRadialメニューアイテム。
injectRadialMenu(name)
登録済みのメニューを挿入して現行メニューを上書きします。
name
メニューの名前。
updateMainMenuBar()
メインのHoudiniメニューバーのラベルエクスプレッションを強制的に再評価します。 このようなトップレベルのメニューアイテムは決して自動的に更新されないので、これらのメニューの作成者はメニューが影響を受けるような状況の変化を検出するハンドラーもインストールして、このメソッドをコールして強制的に更新を行なう必要があります。
panes()
→ tuple
of hou.Pane
すべての可視ペインのタプルを返します。これにはすべてのフローティングウィンドウのペインも含みます。
hou.Desktop.panesも参照してください。
paneTabs()
→ tuple
of hou.PaneTab
すべての可視ペインタブのタプルを返します。これにはすべてのフローティングウィンドウのペインも含みます。
hou.Desktop.paneTabsも参照してください。
currentPaneTabs()
→ tuple
of hou.PaneTab
ペインタブが含まれたペイン(すべてのフローティングウィンドウ内のペインを含む)内で選択された可視ペインタブすべてのタプルを返します。
hou.Desktop.currentPaneTabsも参照してください。
floatingPaneTabs()
→ tuple
of hou.PaneTab
フローティングパネル内のすべてのペインタブを返します。
hou.Desktop.floatingPaneTabsも参照します。
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
を返します。
このメソッドは、現行デスクトップに取り付けられていないペインタブを含む可視ペインタブすべてを検索します。
hideAllMinimizedStowbars()
→ bool
最小化したStow(収納)バーと分割ペインをすべて非表示にするグローバルフラグの値を返します。
setHideAllMinimizedStowbars(self,on)
→ bool
最小化したStow(収納)バーと分割ペインをすべて非表示にするグローバルフラグの値を設定します。 このフラグをTrueに設定すると、ペインタブ、メニュー、シェルフドック、ツールバーのすべての最小化したStow(収納)バーが非表示になります。 さらに、分割ペインの分割バーにも影響を与えます。 その場合では、その分割バーは1ピクセル幅の線で描画されます。
スクリプトによるUI ¶
displayConfirmation(text, severity=hou.severityType.Message, help=None, title=None, details=None, details_label=None, suppress=hou.confirmType.OverwriteFile)
→ bool
メッセージとOK、Cancelのボタンが付いたウィンドウをポップアップ表示し、ユーザがボタンを押すまで待ちます。
ユーザがOKを押せばTrue
を返し、そうでないならFalse
を返します。
suppress
パラメータを使用すれば、ユーザが再度この確認ダイアログを表示しないように要求した時に、このダイアログの表示をスキップさせることができます。
このダイアログは、ユーザにチェックボックスを表示させ、今後このダイアログを表示させたくないかどうかを示させることもできます。
text
表示するメッセージ。
severity
ダイアログ上に表示させるアイコンを決定するhou.severityType値。
hou.severityType.Fatal
を使用すると、ユーザがダイアログを閉じた後にHoudiniを終了することに注意してください。
help
メインメッセージの下に表示させる追加のヘルプ情報。
title
ウィンドウのタイトル。None
の場合は、タイトルが“Houdini”になります。
details
ユーザが“Show Details”をクリックすると表示される追加メッセージを含んだ文字列。
details_label
詳細テキストを表示させるかどうかを制御する展開/折り畳みボタンのラベルを含んだ文字列。
'''ファイルを上書きしたいかどうかをユーザに促し、OKが選択されればファイルを保存します。''' if hou.ui.displayConfirmation("Overwrite the current hip file?", suppress=hou.confirmType.OverwriteFile): hou.hipFile.save()
displayCustomConfirmation(text, buttons=(), severity=hou.severityType.Message, default_choice=0, close_choice=-1, help=None, title=None, details=None, details_label=None, suppress=hou.confirmType.OverwriteFile)
→ int
このメソッドはdisplayConfirmation
と同じですが、さらにカスタムのボタンラベルのリストを受け取り、ブール値ではなくて選択されているボタンインデックスを返します。
このボタンインデックスは、ポップアップダイアログで選択されたラベル配列内のエントリーに呼応します。
指定されたボタンラベルの数が2つにも満たない場合は、最低でも2つのボタンラベルが必須である条件を満たせるように必要に応じてデフォルトラベルの“OK”と“Cancel”が追加されます。
text
表示するメッセージ。
severity
ダイアログ上に表示させるアイコンを決定するhou.severityType値。
hou.severityType.Fatal
を使用すると、ユーザがダイアログを閉じた後にHoudiniを終了することに注意してください。
default_choice
ユーザがEnterを押した時に選択されるボタンのインデックス。
close_choice
ユーザがEscapeを押したり、ダイアログを閉じた時に選択されるボタンのインデックス。
help
メインメッセージの下に表示させる追加のヘルプ情報。
title
ウィンドウのタイトル。None
の場合は、そのタイトルは“Houdini”になります。
details
ユーザが“Show Details”をクリックすると表示される追加メッセージを含んだ文字列。
details_label
詳細テキストを表示させるかどうかを制御する展開/折り畳みボタンのラベルを含んだ文字列。
'''TOPネットワークをクックする前に、.hipファイルを保存するのか、ファイルを保存せずにクックするのか、完全にクック操作をキャンセルするのかをユーザに促します。''' def save_and_cook(top_network): buttons = ("Save and Continue", "Continue Without Saving", "Cancel") selected_button = hou.ui.displayCustomConfirmation("Save before cooking?", suppress=hou.confirmType.TopCookSave, buttons=buttons) if selected_button == 0: hou.hipFile.save() if selected_button != 2: top_network.cookWorkItems(block=True)
displayMessage(text, buttons=('OK',), severity=hou.severityType.Message, default_choice=0, close_choice=-1, help=None, title=None, details=None, details_label=None, details_expanded=False)
→ int
メッセージと1つ以上のボタンが付いた小さなウィンドウをポップアップ表示し、ユーザがボタンを押すまで待ちます。 ユーザが押したボタンのインデックスを返します。
text
表示するメッセージ。
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=-1, help=None, title=None, initial_contents=None)
→ (int
, str
)
テキストボックス付きの小さなウィンドウがポップアップ表示され、ユーザがテキストの行を入力するまで待ちます。
整数を含んだタプルとユーザが入力したテキストを返します。
整数は押したボタンのインデックスです。
close_choice
がNoneでなく、ユーザが閉じるボタンをクリックまたはEscapeを押してダイアログを閉じた場合、
返される整数はclose_choice
に設定されます。
message
テキストフィールドの上に表示させるメッセージ。
severity
ダイアログ上に表示させるアイコンを決定するhou.severityType値。
hou.severityType.Fatal
を使用すると、ユーザがダイアログを閉じた後にHoudiniを終了することに注意してください。
default_choice
ユーザがEnterを押した時に選択されるボタンのインデックス。
close_choice
ユーザがEscapeを押したり、ダイアログの閉じるボタンをクリックした時に選択されるボタンのインデックス。
2個以上のボタンがあり、close_choice
が-1の場合、ユーザはEscapeやダイアログの閉じるボタンを使ってダイアログを閉じることができません。
1個のボタンのみがあり、close_choice
が-1の場合、ユーザは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=-1, help=None, title=None, initial_contents=("",))
→ (int
, tuple
of str
)
テキストボックスが付いた小さなウィンドウをポップアップ表示し、ユーザがテキストを複数の入力フィールドに入力するまで待ちます。
整数を含んだタプルとユーザが入力した文字列のタプルと入力フィールド毎のテキストを返します。
その整数は、押したボタンのインデックスです。
close_choice
が-1でなく、ユーザが閉じるボタンをクリックしたりEscapeを押してダイアログを閉じると、返される整数はclose_choice
に設定されます。
message
テキストの上に表示させるメッセージ。
input_labels
各入力フィールドの前に表示されるラベルのシーケンス。 シーケンス長は、ウィンドウ内に表示される入力フィールドの数を決定します。
password_input_indices
入力フィールドがパスワードフィールドのインデックスのシーケンス。 このシーケンス内にないインデックスのフィールドは、パスワードフィールドになりません。
severity
ダイアログ上に表示させるアイコンを決定するhou.severityType値。
hou.severityType.Fatal
を使用すると、ユーザがダイアログを閉じた後にHoudiniを終了することに注意してください。
default_choice
ユーザがEnterを押した時に選択されるボタンのインデックス。
close_choice
ユーザがEscapeを押したり、ダイアログの閉じるボタンをクリックした時に選択されるボタンのインデックス。
2個以上のボタンがあり、close_choice
が-1の場合、ユーザはEscapeやダイアログの閉じるボタンを使ってダイアログを閉じることができません。
1個のボタンのみがあり、close_choice
が-1の場合、ユーザはEscapeやダイアログの閉じるボタンを使ってダイアログを閉じることができ、ボタンのインデックスが返されます。
help
メインメッセージの下に表示させる追加のヘルプ情報。
title
ウィンドウのタイトル。None
の場合は、タイトルが“Houdini”になります。
initial_contents
input_labels
引数で指定された各テキストボックスの初期値を指定した文字列シーケンス。
このシーケンスがinput_labels
よりも短い場合、残りのフィールドは空っぽのままになります。
デフォルトは、すべてのフィールドを空っぽにします。
initial_contents
値は文字列でなければなりません。
他のタイプ(例えば、整数)を使用すると、この関数はTypeError
を引き起こします。
ユーザに整数を促したいのであれば、その初期値を文字列に変換して、その結果を整数に戻してください。
例:
start_int, end_int = hou.playbar.frameRange() button_idx, values = hou.ui.readMultiInput( "Set the new frame range", ("Start Frame", "End Frame"), initial_contents=(str(start_int), str(end_int)), title="Frame Range", buttons=("OK", "Cancel"), default_choice=0, close_choice=1, ) new_start_int = int(values[0]) new_end_int = int(values[1])
hou.ui.readInputも参照してください。
selectFile(start_directory=None, title=None, collapse_sequences=False, file_type=hou.fileType.Any, pattern=None, default_value=None, multiple_select=False, image_chooser=None, chooser_mode=hou.fileChooserMode.ReadAndWrite, width=0, height=0)
→ str
ファイル選択ダイアログ付きのウィンドウをポップアップ表示し、ユーザがファイル名を選択するまで待ちます。 選択したファイルまでのパスを返します。
start_directory
初期のダイアログで表示するディレクトリ。
Windowsでは、このパスにはバックスラッシュ(\
)の代わりに必ず フォワードスラッシュ (/
)を使用してください。
例えば、start_directory="D:/temp"
です。
title
ダイアログのウィンドウタイトル。
collapse_sequences
一般的な数値パターンが使われたファイルシーケンスを$Fを含んだパターンに折り畳むかどうか。
file_type
選択するファイルタイプを意味したhou.fileType列挙値。 可視ファイルのセットは、このファイルタイプとパターンで決まります。
pattern
このパターンに一致したファイル(とファイルタイプで制限されたもの)のみがリストされます。デフォルトでは、すべてがパターンに一致します。
Warning
When a default value of None
is used, the pattern will be the
same as what the file dialog of the given file_type last
used. Always use an explicit value for pattern if you want
it to be predictable.
default_value
ダイアログ内のファイル名フィールドのデフォルトの内容。
multiple_select
ユーザが複数ファイルを選択できるかどうか。
image_chooser
ダイアログで画像のサムネイルを表示するかどうか(True/False)。
None
の場合、Show Images for Image Files in File Browsers
設定( Edit ▸ Preferences ▸ General User Interface )が使用されます。
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, sort=False, condense_paths=False)
→ 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の場合は、選択ダイアログはデフォルトの高さを使用します。
sort
Whether or not the chooser should sort the list immediately. If this
flag is set to True the contents of the chooser will be sorted
in ascending order, otherwise the order of the strings in choices
will be used as-is.
condense_paths
Whether or not the chooser should convert absolute paths into paths containing variables like $HIP. when this flag is enabled, the chooser will also show a toggle to enable/disable it.
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を参照してください。
openParameterExpressionEditor(parm)
指定したパラメータのエクスプレッションを編集するエクスプレッションエディタを開きます。
parm
編集したいエクスプレッションのhou.Parmパラメータ。
openPreferences(page)
Open the preferences dialog and show the given page.
page
A string that specifies the preference page to open. When
there are tabs under the page, page:tab
notation is used.
The following values are supported:
|
Page/Tab |
---|---|
|
General User Interface |
|
Network Editor |
|
3D Viewports |
|
Shelf Tools and Tab Menu |
|
Takes |
|
Animation |
|
Lighting |
|
Rendering |
|
Handles |
|
Interactive Tools |
|
Objects and Geometry |
|
Objects and Geometry > Preferences |
|
Objects and Geometry > SOP Cache |
|
Objects and Geometry > OBJ Cache |
|
Motion and Audio |
|
Compositing |
|
Compositing > Cache |
|
Compositing > Cooking |
|
Compositing > Interactive |
|
Compositing > Selectors |
|
Compositing > Names |
|
Compositing > Colors |
|
Compositing > Cineon |
|
Scripting |
|
Desktops and Toolbars |
|
Save and Load Options |
|
Hip File Options |
|
Warning Dialogs |
|
Notifications |
|
Performance Options |
|
External Tools |
|
Miscellaneous |
ヘルプ ¶
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のインスタンスを与えると、Type Propertiesダイアログが開きます。
promote_spare_parms
このパラメータがTrueで、ノードインスタンスを渡すと、自動的にノード上のSpareパラメータがノードタイプ上のパラメータにプロモートします。
immediately_save
Trueの時、Type Propertiesダイアログの“Apply”をクリックしたかのように、ノードタイプの現行状態を即座に保存します。
openParameterInterfaceDialog(node, open_tab = None, open_tab_tree_path = '')
hou.Nodeを指定すると、そのParameter Interface Editorダイアログが開きます。 このダイアログを使用することで、Spareパラメータを追加/削除したり、ノード上のパラメータのレイアウトを変更することができます。
open_tab
ダイアログを特定のパラメータソースタブで表示するhou.parameterInterfaceTabType列挙値。
open_tab_tree_path
open_tab
を指定した場合、このパラメータによって、ダイアログが開かれた時のそのダイアログの状態をさらに制御することができます。
この文字列には、開かれたタブのツリー内のブランチのフルパスを指定することができ、そのツリーが展開されて現行として設定されます。
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のようなコンテキスト固有の変数を考慮するので、正確です。
parameterPaneTabs(node,include_node_editors=True)
→ tuple
of hou.ParameterEditor or hou.NetworkEditor
指定したノードを表示するパラメータエディタを返します。 他にも、パラメータエディタを埋め込んで表示するノードエディタを含めるかどうか選択することができます。
scrollToParmsInEditors(parms,pos=hou.scrollPosition.Center)
→ bool
hou.Parmやhou.ParmTupleのリストまたは単一インスタンスを指定すると、 パラメータエディタスクロール領域内でパラメータが表示されるように、合致したパラメータエディタスクロールバーを調整します。 有効なパラメータエディタが見つかればTrueを返します。
setMultiParmTabInEditors(parm,tab_index)
→ bool
マルチパラメータの親を表現したhou.Parmを指定し、パラメータエディタダイアログ内のマルチパラメータタブインデックスを設定します。 このタブインデックスは、ノードパラメータにマップしません。 開かれているパラメータエディタ内でそのパラメータが見つかればTrueを返します。
switchTabsToParmInEditors(parm)
→ bool
hou.Parmを指定すると、すべての親タブフォルダは、開かれているパラメータエディタでそのパラメータを表示するように切り替えます。 開かれているパラメータエディタ内でそのパラメータが見つかればTrueを返します。
setParmFilterInEditors(node, parm_names)
→ bool
ノードとカンマ区切りのパラメータ名のリストを指定すると、それに該当するパラメータエディタに対して検索フィルタが適用されます。 文字列にはワイルドカードを含めることもできます。 有効なパラメータエディタが見つかればTrueを返します。
showFloatingParameterEditor(node,reuse)
→ hou.ParameterEditor
指定したhou.Nodeのフローティングhou.ParameterEditorを表示します。
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.printResourceMessage(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 })
showInFileBrowser(file_path)
システムのファイルブラウザを起動し、指定したファイルの親ディレクトリに進んで、そのファイルを選択します。
file_path
選択するファイル(またはディレクトリ)のフルパスを記述した文字列。
Tip
何もファイルを選択したくないのであれば、単にファイルパスを/
で終わらせてください。
例:
# ブラウザで/home/me/myDocsを開き、doc1.txtを選択します。 hou.ui.showInFileBrowser('/home/me/myDocs/doc1.txt') # ブラウザで/home/me/myDocsを開き、何も選択しません。 hou.ui.showInFileBrowser('/home/me/myDocs/') # ブラウザで/home/meを開き、myDocsを選択します。 hou.ui.showInFileBrowser('/home/me/myDocs')
openViewerStateCodeGenDialog(category, action_callback, operator_name=None)
Python Viewerステート用のテンプレート実装と登録コードを生成するためのモーダルダイアログウィンドウを開きます。 Viewerステートの入力名は、コードを生成するのに必須です。 ステートラベルとアイコン名などの他のフィールドは任意です。
Sample
ダイアログオプションを選択することで、事前に定義されたハンドラーとバインドを使ったViewerステートコードを生成することができます。
Handler
オプションを選択することで、空っぽのハンドラーを使ったViewerステートコードを生成することもできます。
ダイアログボタン:
-
Accept
: 入力フィールドと選択したオプションを使って、コードテンプレートを生成します。 -
Cancel
: ダイアログを閉じて、コードテンプレートの生成を中断します。
このダイアログは、Viewer State Browser
パネルとDigital Asset Viewer State Editor
で使用されます。
category
登録するViewerステートのタイプを指定したhou.NodeTypeCategoryオブジェクト。
action_callback
Accept
ボタンをクリックした時に結果を制御するのに必要となる必須のコールバック。
コールバック名は、ユーザ定義で、辞書引数を入力として受け取ります:
def myAcceptAction( **kwargs )
kwargs
辞書には、コード生成の結果が含まれています:
-
valid
: オペレーションが成功すればTrue
、失敗すればFalse
を返します。 -
state_type
: 新しいステートの名前。 -
state_type_expr
: 新しいステートの名前を表現したエクスプレッション: HDAノードのデフォルトステートを取得するPython関数コールまたは文字列リテラル。 -
state_label
: ステートラベル。 -
state_description
: コードヘッダーにのみ表示されるステート記述。 -
state_category
: ステートカテゴリータイプの名前。 -
state_code
: 生成されたPythonコード。 -
state_icon_name
: 選択されたアイコンの名前。この名前は、単一アイコン名、ファイルパス、Digital Asset
に埋め込まれたアイコンを参照したopdef
パスのどれかです。 -
state_icon_filename
: アイコンのファイルパス(存在すれば)。 -
state_icon_section_name
:Digital Asset Viewer State Editor
で使用されるアイコンのセクション名。
operator_name
生成するViewerステートがDigital Asset
に埋め込まれている場合は、そのオペレータの名前。
この引数は任意で、Digital Asset
Viewer State Editorではよく使用します。
ステータスライン ¶
setStatusMessage(message, severity=hou.severityType.Message)
Houdiniのステータスバーにメッセージを表示します。
severity
メッセージの背景カラーを決定するhou.severityType列挙値。
ステータスバーをクリアするには、hou.ui.setStatusMessage("")
をコールします。
statusMessage()
→ (string
, hou.severityType)
ステータスバーの現在のメッセージと重要度を返します。
Houdini自体がステータスバーのメッセージを変更することが多いので、これはsetStatusMessage
に直近で渡された値と一致しない場合があります。
コールバック ¶
addEventLoopCallback(callback)
Houdiniのイベントループがアイドル状態の時にコールされるPythonコールバックを登録します。 このコールバックは、Houdiniがビジー処理イベントでない限り、約50ms毎にコールされます。
callback
パラメータを必要としないコール可能なPythonオブジェクト。
それは、Python関数、バインドされたメソッドまたは__call__
を実装したオブジェクトです。
def checkForAndProcessEvents(): # ここには、何かのイベントをチェックして処理する内容を記述します。 pass hou.ui.addEventLoopCallback(checkForAndProcessEvents)
この関数を使用して、他のユーザインターフェースツールキットをHoudiniのイベントループに統合させることができます。 サンプルの使い方は、PyQtとwxPythonのクックブックのサンプルを参照してください。
postEventCallback(callback)
Houdiniのイベントループの後でコールしたいPythonコールバックを登録します。 これは一度だけコールされます。
callback
パラメータを必要としないコール可能なPythonオブジェクト。
それは、Python関数、バインドされたメソッドまたは__call__
を実装したオブジェクトです。
removePostedEventCallback(callback)
ポストされたイベントコールバックがまだ存在する場合、キューからそのイベントコールバックを削除します。
コールバックが存在しなかった場合は何も処理されません。
addTriggerUpdateCallback(callback)
HoudiniのUpdate Once
ボタンをクリックした時、または、hou.ui.triggerUpdateメソッドがコールされた時に実行されるコールバックを追加します。
このコールバックは、Manual
更新モードの時にのみコールされます。
removeTriggerUpdateCallback(callback)
hou.ui.addTriggerUpdateCallbackメソッドを使って既に追加されているコールバックを削除します。
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コールバックのタプルを返します。
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()を使用してください。
isAutoKey() ->
bool`
現在Auto-key(アニメーションパラメータを変更した時に現行フレームにキーが存在しなければキーを生成する機能)が有効になっているかどうかを返します。
設定 ¶
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.Y/pyshell.history
に書き出されます。
この関数をPythonシェル外で呼び出すと、その履歴は最後のアクティブシェル(つまり、開いた、または入力を受け入れた最後のシェル)から取得されます。
Pythonシェルが開かれていなかった場合は、hou.OperationFailedを引き起こします。
filename
を作成できなかった場合は、hou.OperationFailedを引き起こします。
readPythonShellHistoryFile(filename=None)
指定したファイルの内容をPythonシェルのコマンド履歴に読み込みます。
filename
がNoneなら、その履歴は$HOME/houdiniX.Y/pyshell.history
から読み込まれます。
この関数をPythonシェル外で呼び出すと、その履歴は最後のアクティブシェル(つまり、開いた、または入力を受け入れた最後のシェル)から取得されます。
Pythonシェルが開かれていなかった場合は、hou.OperationFailedを引き起こします。
filename
が存在しない、または読み込むことができなかった場合は、hou.OperationFailedを引き起こします。
shellIO()
→ hou.ShellIO
HoudiniのグラフィカルPythonシェルの実行に使用されているhou.ShellIOオブジェクトを返します。 この関数は内部的にHoudiniで使用され、直接ShellIOにアクセスする必要がありません。
ドラッグアンドドロップ ¶
hasDragSourceData(label)
→ bool
現在のドラッグソースを照会して、指定したデータタイプが利用可能かどうか決定します。
ドラッグ操作が現在アクティブでないなら、hou.NotAvailableを引き起こします。
label
ソースイベントのコンテンツタイプ(MIMEタイプ)を指定します。
Note
ファイルドロップイベントにはtext/plain
を、Houdiniが対応しているタイプにはhou.qt.mimeTypeを使用します。
getDragSourceData(label, index)
→ data
現在のドラッグソースを照会して、ドラッグしたデータを取得します。 指定したデータが利用不可(またはHOMでサポートされていない)の時はNoneを返します。
ドラッグ操作が現在アクティブでないなら、hou.NotAvailableを引き起こします。
label
照会するソースイベントのタイプを指定します。使用するラベルタイプはhou.ui.hasDragSourceDataを参照してください。
index
ソース内のデータのインデックス。デフォルトは0です。
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
の場合は、TypeError
を引き起こします。
findDialog(ui_file_name)
→ hou.Dialog
指定した.uiファイル名で定義されて、hou.ui.createDialogで作成されたダイアログを返します。
指定した.uiファイルに対してhou.ui.createDialogでダイアログが作成されなかった場合はNone
を返します。
ui_file_name
がNone
の場合は、TypeError
を引き起こします。
dialogs()
→ tuple
of hou.Dialog
hou.ui.createDialogで作成されたダイアログすべてを返します。
その他 ¶
isUserInteracting()
ユーザがノードまたはパラメータのストリームを変えるような方法でUIを現在操作している場合はTrue
を返します。
これには、プレイバーのスクラブやビューポート内でのハンドルのドラッグといった操作も含まれます。
この値をテストすることで、ユーザが操作を完了するまではUIコンポーネントの負荷の高い更新をしないように待機してから、更新を実行するといったことができます。
setUserInteracting()
isUserInteracting()
でチェックされたフラグを設定します。
setUserInteracting(False)
をコールしてフラグをリセットしない限りは、その関数はsetUserInteracting(True)
がコールされた後にTrueを返します。
これをPython ViewerステートまたはPythonパネルで使用することで、ビューポート操作中またはUIウィジェット使用時の特定のUI更新を停止することができます。
これは、操作を開始した時にTrue、終了した時にFalseに設定してください。
Viewerステート ¶
registerViewerState(template)
独自のViewer Stateを表現したhou.ViewerStateTemplateオブジェクトを登録します。 この関数の使用方法に関しては、Viewer Stateのインストール方法を参照してください。
template
hou.ViewerStateTemplateオブジェクト。
同じ名前のステートが既に登録されていることが原因で登録に失敗した場合はhou.NameConflictを引き起こします。 登録に失敗した場合(例えば、登録するステートが用意されていない場合)はhou.OperationFailedを引き起こします。
registerViewerStateFile(file_path)
指定したPythonファイルで実装されたViewerステートタイプを登録します。 このファイルで以前に登録されたViewerステートが先に登録解除されます。
Pythonステートファイルに関する詳細は、Viewerステートのインストール方法を参照してください。
file_path
Viewerステートを含んだPythonファイルのフルパス。
登録に失敗した場合(例えば、登録するステートがFactoryを持っていない)は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を引き起こします。
unregisterViewerStateFile(file_path)
指定したPythonファイルで以前に登録されたViewerステートの登録を解除します。 Pythonステートファイルに関する詳細は、Viewerステートのインストール方法を参照してください。
file_path
Viewerステートを参照したPythonファイルのフルパス。
登録の解除に失敗した場合(例えば、ステートがこのファイルで登録されていなかった)は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(state_names)
→ str
ステートタイプがキーになっている登録済みのすべてのViewerステートが記述されたJSON辞書文字列を返します。
state_names
処理するステート名の配列。 この配列が空っぽ(デフォルト)の場合、現在登録されているすべてのViewerステートが処理されます。
import json info_str = hou.ui.viewerStateInfo(["sidefx_stroke"]) info_dict = json.loads(info_str) info = json.dumps(info_dict["sidefx_stroke"], indent=3) print(info) { "Type": "sidefx_stroke", "Label": "Stroke", "Icon": "$HFS/houdini/pic/minimizedicon.pic", "Category": "Sop", "Source": "$HFS/houdini/viewer_states/sidefx_stroke.py", "Contexts": [ "SOP" ], "Handles": {}, "Gadgets": {}, "Selectors": { "sidefx_default_selector": { "Name": "sidefx_default_selector", "Auto start": false, "Hotkey": { "Path": "", "Label": "", "Description": "", "Keys": [] }, "Secure selection": "obey", "Prompt": "default geometry selector", "Allow drag": false, "Quick select": true, "Use existing selection": true, "Initial selection": "", "Initial selection type": "", "Ordered": false, "Geometry types": [], "Allow other sops": true } }, "Menus": { "Stroke": { "Type": "Menu", "Handle": "stroke_menu", "Draw realtime": { "Type": "Toggle", "Handle": "realtime_mode", "Hotkey": { "Path": "h.pane.gview.state.sop.sidefx_stroke.realtime_mode", "Label": "realtime", "Description": "Enable realtime mode", "Keys": [ 48 ] } }, "Brush settings...": { "Type": "Menu", "Handle": "brush_menu", "Cycle brushes": { "Type": "Action", "Handle": "cycle_brushes", "Hotkey": { "Path": "h.pane.gview.state.sop.sidefx_stroke.cycle_brushes", "Label": "Cycle brushes", "Description": "Cycle stroke tools", "Keys": [ 49 ] } }, "Brush display mode": { "Type": "Radio strip", "Handle": "brush_display_mode", "Default": "brush_viewport_display", "Wireframe": { "Type": "Radio strip item", "Handle": "brush_wireframe_display", "Hotkey": { "Path": "h.pane.gview.state.sop.sidefx_stroke.set_wireframe_brush", "Label": "Set wireframe brush", "Description": "Set wireframe brush", "Keys": [ 50 ] } }, "Viewport": { "Type": "Radio strip item", "Handle": "brush_viewport_display", "Hotkey": { "Path": "h.pane.gview.state.sop.sidefx_stroke.set_viewport_brush", "Label": "Set viewport brush", "Description": "Set viewport brush", "Keys": [ 51 ] } } } } } } }
viewerStateInfoFromFile(state_filepath)
→ (str
, str
)
指定したPythonステートファイルのViewerステート情報を返します。 この情報は、そのPythonステートのタイプ名、登録済みのViewerステート情報が記述されたJSON辞書を含んだタプルとして返されます。
state_filepath
Pythonステートファイルのパス。 そのファイルパスがPythonステートファイルでない場合、または、そのファイルに含まれているPythonステートが登録されていない場合、このメソッドは空っぽのタプルを返します。
Note
このメソッドは、HDA Pythonステートファイルでは動作しません。
import json (state_type, info_str) = hou.ui.viewerStateInfoFromFile( "$HFS/packages/viewer_state_demo/viewer_states/drawable_selector_sop.py" ) info_dict = json.loads(info_str) info = json.dumps(info_dict[state_type], indent=3) print(info) { "Type": "drawable_selector_sop", "Label": "State Drawable Selector Demo", "Icon": "DESKTOP_application_mac", "Category": "Sop", "Source": "$HFS/packages/viewer_state_demo/viewer_states/drawable_selector_sop.py", "Contexts": [ "SOP" ], "Handles": {}, "Gadgets": {}, "Selectors": { "drawable_selector": { "Name": "drawable_selector", "Auto start": true, "Hotkey": { "Path": "h.pane.gview.state.sop.drawable_selector_sop.drawable selector", "Label": "drawable selector", "Description": "drawable selector", "Keys": [ 49 ] }, "Secure selection": "ignore", "Prompt": "Select a drawable component", "Allow drag": false, "Quick select": true, "Use existing selection": true, "Initial selection": "", "Initial selection type": "", "Ordered": false, "Geometry types": [ "point", "edge", "prim" ], "Allow other sops": false }, "primitive_selector": { "Name": "primitive_selector", "Auto start": false, "Hotkey": { "Path": "h.pane.gview.state.sop.drawable_selector_sop.primitive selector", "Label": "primitive selector", "Description": "primitive selector", "Keys": [ 50 ] }, "Secure selection": "ignore", "Prompt": "Select a primitive component", "Allow drag": true, "Quick select": true, "Use existing selection": true, "Initial selection": "", "Initial selection type": "", "Ordered": false, "Geometry types": [ "prim" ], "Allow other sops": false }, "sidefx_default_selector": { "Name": "sidefx_default_selector", "Auto start": false, "Hotkey": { "Path": "", "Label": "", "Description": "", "Keys": [] }, "Secure selection": "obey", "Prompt": "default geometry selector", "Allow drag": false, "Quick select": true, "Use existing selection": true, "Initial selection": "", "Initial selection type": "", "Ordered": false, "Geometry types": [], "Allow other sops": true } }, "Menus": { "Drawable Selector Demo": { "Type": "Menu", "Handle": "drawable_selector_menu", "Log Info": { "Type": "Toggle", "Handle": "log_info", "Hotkey": { "Path": "", "Label": "", "Description": "", "Keys": [] } }, "Clear Console": { "Type": "Action", "Handle": "clear_console", "Hotkey": { "Path": "", "Label": "", "Description": "", "Keys": [] } } } } }
ビューアハンドル ¶
registerViewerHandle(template)
カスタムビューアハンドルを表現したhou.ViewerHandleTemplateオブジェクトを登録します。 この関数の使用法は、ビューアハンドルのインストールを参照してください。
template
hou.ViewerHandleTemplateオブジェクト。
登録に失敗すると以下の例外が引き起こされます:
-
同じ名前のハンドルが既に登録されていればhou.NameConflictを引き起こします。
-
登録に失敗(例えば、登録するハンドルにファクトリーが用意されていない)すればhou.OperationFailedを引き起こします。
registerViewerHandles()
ビューアハンドルのフォルダ(例えば、$HH/viewer_handles
と$HOUDINI_USER_PREF_DIR/viewer_handles
)を走査して、それらのフォルダに含まれているすべてのビューアハンドルを登録します。
既にHoudiniに登録されているビューアハンドルは、単にそのディスクのバージョンに更新されます。
registerViewerHandleFile(handle_file)
指定したPythonファイルで実装されたビューアハンドルタイプを登録します。 このファイルで以前に登録されたビューアハンドルはまず最初に登録解除されます。
Pythonハンドルファイルに関する詳細は、ビューアハンドルのインストールを参照してください。
file_path
ビューアハンドルの実装を含んだPythonファイルのフルパス。
登録に失敗(例えば、登録するハンドルにファクトリーが用意されていない)すればhou.OperationFailedを引き起こします。
unregisterViewerHandleFile(handle_file)
指定したPythonファイルで以前に登録されたビューアハンドルを登録解除します。 Pythonハンドルファイルに関する詳細は、ビューアハンドルのインストールを参照してください。
file_path
ビューアハンドルを参照するPythonファイルのフルパス。
登録解除に失敗(例えば、このファイルで何もハンドルが登録されていない)すればhou.OperationFailedを引き起こします。
unregisterViewerHandle(handle_name)
既存のビューアハンドルタイプを登録解除します。
この関数の使用方法は、ビューアハンドルのインストールを参照してください。
handle_name
登録解除するハンドルの名前。
登録解除に失敗(例えば、指定した名前のハンドルが登録されていない)すればhou.OperationFailedを引き起こします。
reloadViewerHandle(handle_name)
viewer_handle
フォルダからPythonモジュールファイルをリロードして登録済みのビューアハンドルを更新します。
詳細は、ビューアハンドルのインストールを参照してください。
Warning
以下のようなリロード時の登録に関する問題のエラーメッセージが出たら、
Error registering 'my_handle': factory not specified or invalid.
Houdiniは、そのファイルを編集できるようにViewer Handle Browser内でその壊れたビューアハンドルが保持されるようにベストを尽くします。 もし駄目であれば、そのハンドルはHoudiniから削除され、その問題を修復するためにHoudiniを強制的に終了します。
handle_name
リロードするハンドルのタイプ名。
リロードに失敗(例えば、指定した名前のステートが登録されていない)すればhou.OperationFailedを引き起こします。
isRegisteredViewerHandle(handle_name)
→ bool
handle_name
が既にhou.ui.registerViewerHandleで登録されていればTrue
を返します。
登録されていなければFalse
を返します。
handle_name
確認したいビューアハンドルのタイプ名。
viewerHandleInfo(handle_names)
→ string
Houdiniに登録済みのすべてのビューアハンドルを記述したJSON辞書文字列を返します。 これらのビューアハンドルはタイプ名で照会することができます。
handle_names
ハンドルタイプ名の配列。 この関数は、この配列で指定された登録済みのすべてのビューアハンドルを含んだ辞書を返します。 この配列が空っぽ(デフォルト)の場合、登録済みのすべてのビューアハンドルが返されます。
>>> import ast >>> viewer_handles = ast.literal_eval(hou.ui.viewerHandleInfo()) >>> viewer_handles["move_tool_handle"] { "Gadgets":{ "zdisc":{ "Drawable":"Line", "Name":"zdisc", "Label":"Z" }, "yscale":{ "Drawable":"Face", "Name":"yscale", "Label":"Y" }, "yaxis":{ "Drawable":"Line", "Name":"yaxis", "Label":"Y" }, "zscale":{ "Drawable":"Face", "Name":"zscale", "Label":"Z" }, "zaxis":{ "Drawable":"Line", "Name":"zaxis", "Label":"Z" }, "xaxis":{ "Drawable":"Line", "Name":"xaxis", "Label":"X" }, "xscale":{ "Drawable":"Face", "Name":"xscale", "Label":"X" }, "pivot":{ "Drawable":"Face", "Name":"pivot", "Label":"XYZ" }, "xdisc":{ "Drawable":"Line", "Name":"xdisc", "Label":"X" }, "ydisc":{ "Drawable":"Line", "Name":"ydisc", "Label":"Y" } }, "Parameters":{ "Sz":{ "Default":1, "Range":"(0.1, 10)", "Type":"Float", "Name":"sz", "Label":"Sz" }, "Sy":{ "Default":1, "Range":"(0.1, 10)", "Type":"Float", "Name":"sy", "Label":"Sy" }, "Sx":{ "Default":1, "Range":"(0.1, 10)", "Type":"Float", "Name":"sx", "Label":"Sx" }, "Tz":{ "Default":0, "Range":"(-10, 10)", "Type":"Float", "Name":"tz", "Label":"Tz" }, "Tx":{ "Default":0, "Range":"(-10, 10)", "Type":"Float", "Name":"tx", "Label":"Tx" }, "Ty":{ "Default":0, "Range":"(-10, 10)", "Type":"Float", "Name":"ty", "Label":"Ty" }, "Rx":{ "Default":0, "Range":"(0, 360)", "Type":"Float", "Name":"rx", "Label":"Rx" }, "Ry":{ "Default":0, "Range":"(0, 360)", "Type":"Float", "Name":"ry", "Label":"Ry" }, "Rz":{ "Default":0, "Range":"(0, 360)", "Type":"Float", "Name":"rz", "Label":"Rz" } }, "Settings":{ "":{ "Type":"Separator", "Name":"separator0", "Label":"" }, "Drag Along Plane":{ "Default":"XZ", "Menu Items":[ "(XZ, XZ)", "(XY, XY)", "(ZY, ZY)", "(XYZ, XYZ)" ], "Type":"Menu", "Name":"planes", "Label":"Drag Along Plane" }, "Draw dimension lines":{ "Default":1, "Type":"Toggle", "Name":"dimensions", "Label":"Draw dimension lines" } }, "Menus":{ "Move Tool Handle":{ "Cycle Gadgets":{ "Hotkey":{ "Keys":[ 89 ], "Path":"h.pane.gview.handle.move_tool_handle.cycle", "Description":"cycle", "Label":"cycle" }, "Handle":"cycle", "Type":"Action" }, "Handle":"move_tool_handle_menu", "Trace":{ "Hotkey":{ "Keys":[ 51 ], "Path":"h.pane.gview.handle.move_tool_handle.trace_handle", "Description":"Enable handle trace", "Label":"Trace" }, "Handle":"trace_handle", "Type":"Toggle" }, "Edit":{ "Hotkey":{ "Keys":[ 53 ], "Path":"h.pane.gview.handle.move_tool_handle.edit_handle", "Description":"Edit Handle", "Label":"Edit" }, "Handle":"edit_handle", "Type":"Action" }, "XYZ":{ "Hotkey":{ "Keys":[ 65 ], "Path":"h.pane.gview.handle.move_tool_handle.XYZ", "Description":"XYZ", "Label":"XYZ" }, "Handle":"XYZ", "Type":"Action" }, "Inspect":{ "Hotkey":{ "Keys":[ 50 ], "Path":"h.pane.gview.handle.move_tool_handle.inspect_handle", "Description":"Inspect Handle", "Label":"Inspect" }, "Handle":"inspect_handle", "Type":"Action" }, "XZ":{ "Hotkey":{ "Keys":[ 70 ], "Path":"h.pane.gview.handle.move_tool_handle.XZ", "Description":"XZ", "Label":"XZ" }, "Handle":"XZ", "Type":"Action" }, "Reload":{ "Hotkey":{ "Keys":[ 54 ], "Path":"h.pane.gview.handle.move_tool_handle.reload_handle", "Description":"Reload Handle", "Label":"Reload" }, "Handle":"reload_handle", "Type":"Action" }, "XY":{ "Hotkey":{ "Keys":[ 71 ], "Path":"h.pane.gview.handle.move_tool_handle.XY", "Description":"XY", "Label":"XY" }, "Handle":"XY", "Type":"Action" }, "ZY":{ "Hotkey":{ "Keys":[ 66 ], "Path":"h.pane.gview.handle.move_tool_handle.ZY", "Description":"ZY", "Label":"ZY" }, "Handle":"ZY", "Type":"Action" }, "Clear console":{ "Hotkey":{ "Keys":[ 49 ], "Path":"h.pane.gview.handle.move_tool_handle.clear_console", "Description":"Clear console", "Label":"Clear" }, "Handle":"clear_console", "Type":"Action" }, "Marker":{ "Hotkey":{ "Keys":[ 52 ], "Path":"h.pane.gview.handle.move_tool_handle.add_marker", "Description":"Add Marker", "Label":"Marker" }, "Handle":"add_marker", "Type":"Action" }, "Logging":{ "Hotkey":{ "Keys":[ 48 ], "Path":"h.pane.gview.handle.move_tool_handle.console_logging", "Description":"Enable or disable console logging", "Label":"Logging" }, "Handle":"console_logging", "Type":"Toggle" }, "Type":"Menu" } }, "Label":"Move Tool Handle", "Exported Parameters":[ "tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz" ], "Source":"C:/Users/marcb/DEV/HOUDINI/dev/hfs/packages/viewer_handle_demo/viewer_handles/move_tool_handle.py", "Type":"move_tool_handle", "Categories":[ "Sop" ], "Icon":"$HFS/houdini/pic/Mandril.pic" }
openViewerHandleCodeGenDialog(categories, action_callback)
Pythonビューアハンドルのテンプレート実装と登録コードを生成するためのモーダルダイアログウィンドウを開きます。 ビューアハンドルの入力名は、そのコードを生成するのに必須です。 ハンドルラベルやアイコン名などの他のフィールドは任意です。
このダイアログのSample
オプションを選択することで、事前に定義済みのハンドラーとバインドを含んだビューアハンドルコードを生成することができます。
さらにHandler
オプションを選択することで、空っぽのハンドラーを含んだビューアハンドルコードを生成することもできます。
ダイアログボタン:
-
Accept
: 入力フィールドと選択したオプションに基づいてコードテンプレートを生成します。 -
Cancel
: ダイアログを閉じて、コードテンプレートの生成を中止します。
このダイアログは、Viewer Handle Browser
パネルのFile|New Handle...
メニューで利用可能です。
category
登録するビューアハンドルのタイプを指定したhou.NodeTypeCategoryオブジェクト。
action_callback
Accept
ボタンがクリックされた時にその結果を処理するのに必須となるコールバック。
このコールバック名はユーザが定義し、辞書引数を入力として受け取ります:
def myAcceptAction( **kwargs )
kwargs
辞書には、コード生成の結果が格納されます:
-
handle_valid
: 処理に成功すればTrue
、失敗すればFalse
を返します。 -
handle_type
: 新しいハンドルのタイプ名。 -
handle_type_expr
: 新しいハンドルの名前を表現したエクスプレッション。 -
handle_label
: ハンドルラベル。 -
handle_description
: コードのヘッダにのみ表示されるハンドルの説明。 -
handle_category
: ハンドルカテゴリタイプの名前。 -
handle_code
: 生成されたPythonコード。 -
handle_icon_name
: 選択されたアイコンの名前。この名前は単一アイコン名またはファイルパスのどれかです。 -
handle_icon_filename
: あればアイコンのファイルパス。
リソース ¶
addResourceEventCallback(callback)
hou.resourceEventMessageイベントが発生する度にコールされるPythonコールバックを登録します。
'callback'
キーワード引数を必要とするコール可能なPythonオブジェクト。
キーワード引数は以下の内容を含みます:
-
event_type
: hou.resourceEventMessageイベント。 -
resource_type
:ViewerState
やViewerHandle
といったリソースタイプ -
type_name
: イベントをトリガーしたリソースのタイプ名。resource_type
がViewerState
の場合、このタイプ名を使用することで、hou.ui.viewerStateInfoから返された辞書をインデックス化することができます。
removeResourceEventCallback(self,callback)
既にhou.ui.addResourceEventCallbackで登録されている特定のPythonコールバックを削除します。
fireResourceCustomEvent(resource_type, user_data, queue=True)
この関数は、特定のワークフローの実装に使用可能なカスタムリソースイベントをトリガーします。
hou.ui.addResourceEventCallbackで登録されているクライアントコールバックは、入力のuser_data
引数を使って指定します。
このイベントは即座に処理することも、Houdiniがアイドル状態になった後で処理することもできます。詳細は、queue
引数を参照してください。
resource_type
user_data
ユーザ定義エントリーをint
, double
, bool
, string
タイプの値にマッピングした辞書。
user_data
が空っぽ、または、未対応の値のタイプを含んでいた場合には例外が引き起こされます。
fireResourceCustomEvent
は以下のエントリーを辞書に追加します
resource_type
: resource_type
引数値。
event_type
: OnCustomEventイベントタイプ。
queue
True(デフォルト)の場合、このイベントがキューに登録され、Houdiniがアイドル状態になった時に処理されます。Falseの場合、このイベントが即座に処理されます。
以下は、カスタムイベントの使い方を載せています。
# Viewer Stateイベント用のコールバックを登録します。 hou.ui.addResourceEventCallback(myEventHandler) def myEventHandler(**kwargs): import json if kwargs['event_type'] == hou.resourceEventMessage.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.resourceEventMessage.OnEnter: pass ... # カスタムイベントを介してJSONファイルを読み込みます。 hou.ui.fireResourceCustomEvent( hou.resourceType.ViewerState, { 'load_file': '/var/tmp/somefile.json'} )
printResourceMessage(resource_type, message, message_type=hou.severityType.Message)
Viewer State BrowserまたはHandle Browserのメッセージウィンドウ内にユーザメッセージをプリントします。 hou.resourceEventMessage.OnPrintMessageイベントは、この関数がコールされた時に送信されます。
resource_type
ブラウザコンソールを選択するリソースタイプ。
Viewer State Browser
でメッセージをプリントするにはhou.resourceType.ViewerStateを使用し、
Viewer Handle Browser
でメッセージをプリントするにはhou.resourceType.ViewerHandleを使用します。
message
プリントする文字列メッセージ。
パッケージ ¶
ランタイム時にパッケージファイルを管理するための一連の関数。
loadPackage(file_path)
普段では、パッケージはHoudini起動時に読み込まれますが、このAPIはランタイム時にパッケージを読み込みます。
一般的には、loadPackage
はプラグインフォルダにインストールされているリソースファイルの読み込みに使用します。
“プラグイン”パッケージファイルは、通常では、それらのリソースファイルを含んだフォルダパスでHOUDINI_PATH
を設定します。
loadPackage
は、HOUDINI_PATH
内で見つかったリソースを読み込んでインストールします。
file_path
読み込むパッケージファイルを指したフルファイルパス。
以下のリソースタイプに対応しています。これらのリソースファイルは、このテーブルで指定されたサブフォルダ内に必ずインストールしてください:
リソースタイプ |
フォルダ |
|
---|---|---|
|
|
.deskファイル(s)を格納します。 |
|
|
OPlibrariesファイルと一緒にHDAファイルを格納します。 |
|
|
.pyファイルを格納します。 あなたには正しいプラットフォームフォルダ内にPythonモジュールを用意する責任があります。 システムPythonパスは、そのフォルダパスが通るように更新されます。 |
|
|
.pypanelファイル(s)を格納します。 |
|
|
.shelfファイル(s)を格納します。これらのシェルフツールは読み込まれますが、シェルフセット内でアクティブになりません。 |
|
|
Pythonステート実装ファイルを格納します。 |
|
|
Pythonハンドル実装ファイルを格納します。 |
以下の例では、viewer handle demo
パッケージを使用してプラグインパッケージフォルダをセットアップする方法を説明しています。
このパッケージファイルはHOUDINI_PATH
にフォルダパスを追加します:
> cat $HFS/houdini/viewer_handles/viewer_handle_demo.json { "path" : "$HFS/packages/viewer_handle_demo" }
viewer handle demo
フォルダの構成:
$HFS/packages/viewer_handle_demo/ python2.7libs/ move_tool_demo/ utils.py scenes/ move_tool_demo.hip viewer_handle_demo.hip toolbar/ viewer_handle_demo.shelf viewer_handles/ move_tool_handle.py viewer_handle_intro1.py viewer_handle_intro2.py viewer_handle_intro3.py
loadPackageArchive(file_path, extract_path=None)
→ list
of string
ディスク上のパッケージアーカイブファイルの内容を抽出し、そこに圧縮されていたパッケージを読み込みます。 パッケージアーカイブを使用することで、ユーザフォルダ内(デフォルト)またはオプションであなたが選択したフォルダ内に複数のプラグインをインストールすることができます。 アーカイブインストールディレクトリが読み取り専用だった場合、例外が発生します。 読み込まれたパッケージパスがリストで返されます。
Note
-
パッケージファイルは必ずアーカイブのルートレベルに追加し、
packages
フォルダ内にパッケージファイルを配置 しないでください 。 -
リソースファイルは必ずhou.ui.loadPackageで説明されているアーカイブサブフォルダ内に追加してください。
-
ファイルリンクまたはフォルダリンクは許可されていません。
-
デフォルトでは、Houdiniは
$HOUDINI_USER_PREF_DIR
内のアーカイブファイルの名前のサブフォルダ下にアーカイブをインストールします。 例えば、myarchive.zip
は$HOUDINI_USER_PREF_DIR/myarchive
下にインストールされます。 -
対応しているアーカイブ形式は
ZIP
で、他の形式は今後追加される予定です。
file_path
パッケージアーカイブファイルを指したファイルパス。
extract_path
オプションで、ファイルを抽出するフォルダパス。
unloadPackage(file_path)
既にロードされているリソースをアンロード(または除外)します。
file_path
アンロードするパッケージファイルを指したフルファイルパス。
reloadPackage(file_path)
既にロードされているパッケージを更新します。 まず最初にそのパッケージをアンロードして現在のリソースをアンインストールしてから、 再度ロードします。
file_path
リロードするパッケージファイルを指したフルファイルパス。
packageInfo(file_paths)
→ string
Houdiniに既にロードされている1個以上のパッケージプラグインを記述したJSON辞書文字列を返します。
file_paths
パッケージファイルパスの配列。この配列が空っぽ(デフォルト)の場合、現在読み込まれているすべてのパッケージが辞書に追加されます。
以下にviewer handle demo
パッケージの内容を載せます。
>>> import json >>> print( json.loads(hou.ui.packageInfo()) ) { 'viewer_handle_demo': { 'File path': '$HFS/houdini/viewer_handles/viewer_handle_demo.json', 'Load only once': False, 'Name': 'viewer_handle_demo', 'Resources': { 'Shelf': [ '$HFS/packages/viewer_handle_demo/toolbar/viewer_handle_demo.shelf'], 'Viewer Handle': [ '$HFS/packages/viewer_handle_demo/viewer_handles/move_tool_handle.py', '$HFS/packages/viewer_handle_demo/viewer_handles/viewer_handle_intro1.py', '$HFS/packages/viewer_handle_demo/viewer_handles/viewer_handle_intro2.py', '$HFS/packages/viewer_handle_demo/viewer_handles/viewer_handle_intro3.py'] }, 'Variables': { 'HOUDINI_PATH': [ '$HFS/packages/viewer_handle_demo'] } } }
ホットキー ¶
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