| On this page |
概要 ¶
コンテキストオプションはシーン固有の変数で役に立ちます。
例えば、render_quality変数を作成すれば、その変数をすべてのレンダーノードで参照することができ、shot_name変数を作成すれば、すべての非最終レンダリング画像の上にその文字列を重ねるといったことができます。
コンテキストオプションは、Context Options EditorまたはPythonスクリプトを使って作成し、エクスプレッションまたはPythonでそれらを使用することができます。
これは、特に同じHIPファイルを使って複数の ショット をレンダリングする時に役に立ちます。 ショット固有の値を含んだ変数をセットアップし、作業を別のショットに切り替える時にそれらの変数を変更することができます。
内部的には、コンテキストオプションは、 内部名 文字列をキーとした 浮動小数点 または 文字列 の値を保存することができます。 さらに、これらのキーは、“構成文字列”を各オプションに関連付けることができます。 Context Options Editorは、この文字列を使って、人が解読できるラベル、順序、ユーザインターフェースなどの追加情報を保存します。
エクスプレッション内に@name使用することで、コンテキストオプションの値を参照することができます。
例えば、内部名がrender_qualityのコンテキストオプションを作成すれば、メインのレンダーノードの Quality パラメータには@render_qualityを設定し、プレビュー用のレンダーノードの Quality パラメータには@render_quality / 2を設定することができます。
Pythonスクリプトでhou.setContextOption()とhou.contextOption()を使えば、コンテキストオプションを作成したり、その値を読み込むこともできます。
一部のグローバルコンテキストオプションは、Houdiniによって生成/管理されます。 これらの“自動”コンテキストオプションは、他のコンテキストオプションと同様に照会/変更することができ、 個々のノードによって上書きして、その入力のクックコンテキストを変更することができます。 しかし、そのようなコンテキストオプションを削除しても、上書きされた値がクリアされるだけです。 そのコンテキストオプションは依然存在し、再びHoudiniによって制御されます。 これらの自動コンテキストオプションのリストに関しては、hou.isAutoContextOption()を参照してください。
追加のコンテキストオプションは、HIPファイルと一緒に保存されます。
新規に作成したHIPファイルには、自動コンテキストオプション以外のコンテキストオプションがありません。
新規ファイルが常にデフォルトのコンテキストオプション設定で開始できるようにしたいのであれば、コンテキストオプションをJSONファイルとしてエクスポートし、スタートアップスクリプトである456.pyで、それらのJSONファイルをインポートすることができます。
Context Options Editor ¶
| To... | Do this |
|---|---|
|
Context Options Editorウィンドウを開く |
Edit ▸ Context Options を選択します。 |
|
Context Options Editorをペインタブとして開く |
Context Options Editorを開きたいペインにある |
|
新しいコンテキストオプションを追加する |
左上コーナーにある |
|
オプションを削除する |
オプションを選択して、左上コーナーにある |
|
オプションの構成を編集する |
|
|
オプションのラベルを編集する |
オプションを選択して、ラベルをクリックするか、または、そのままタイピングを開始します。 Note ラベルを編集する際に オプションがまだ汎用的な内部名になっている場合 、このエディタは自動的にそのオプションの内部名をそのラベル名に合わせます(そのラベル名を小文字にしてスペースをアンダースコアに置換します)。 これは一度だけ行なわれます。 それ以降にオプションの内部名を変更する場合は、編集パネルを使用します。 |
|
オプションの内部名を編集する |
オプションを選択して、右上コーナーにある |
|
オプションの値を編集する |
オプションの行の右側にあるエディタを使用します。 |
|
Context Options Editor内のオプションの順序を変更する |
オプションの行をテーブル内で上下にドラッグします。 |
|
Context Options Editor以外で加えた変更をContext Options Editorに反映させる |
左上コーナーにある 例えば、hou.setContextOption()を使って新しいコンテキストオプションを作成した場合は、その新しいオプションを表示するにはContext Options Editorをリロードする必要があります。 |
|
現在のコンテキストオプション(構成を含む)をJSONファイルにエクスポートする |
右下コーナーにある Export ボタンをクリックして、エクスポート先のファイルを選択します。 |
|
JSONファイルからコンテキストオプションをインポートする |
右下コーナーにある Import ボタンをクリックして、インポートしたいファイルを選択します。 既にシーンファイルにコンテキストオプションが存在している場合、Houdiniは、そのファイルをインポートする前にそれらのコンテキストオプションをクリアするか、または、既存のコンテキストオプションにマージするかどうかを尋ねます。 |
コンテキストオプションの使い方 ¶
-
パラメータエクスプレッションに
@nameを使用することで、そのコンテキストオプションの値を使用することができます。 -
Pythonスクリプトでhou.contextOption()を使用することで、コンテキストオプションの値を取得することができます。
オプションの構成 ¶
パラメータなどの他のHoudiniエレメントと同様に、コンテキストオプションは 内部名 (@nameエクスプレッションやスクリプトで使用する名前)と ラベル (Context Options Editorに表示される人が解読できる名前)を持ちます。
Internal Name
このオプションを@nameエクスプレッションやスクリプトで使用する名前。
Label
このオプションをContext Options Editorで表示した時の人が解読できるラベル。
Tooltip
ユーザーがContext Options Editorのテーブル内でこのオプションにマウスカーソルを載せると表示されるツールチップ。 これを使用することで、ユーザーに各オプションの補足ヘルプを表示させることができます。
Type
Text
自由形式な文字列。このインターフェースはプレーンテキストボックスです。
Number
自由形式な数値。このインターフェースはプレーンテキストボックスです。
File Path
(プラットフォーム固有の)ファイルパス文字列。このインターフェースはインライン自動補完が付いたテキストボックスとファイル選択ボタンです。
Node Path
Houdiniノードパス文字列。このインターフェースはインライン自動補完が付いたテキストボックスとノード選択ボタンです。
Float Slider
範囲内の浮動小数点。このインターフェースはテキストボックスとスライダです。ユーザーがこの範囲の最小/最大外の値を入力できるかどうかを指定することができます。
Int Slider
範囲内の整数。このインターフェースはテキストボックスとスライダです。ユーザーがこの範囲の最小/最大外の値を入力できるかどうかを指定することができます。
(実際は、この値は整数ではないことに注意してください。コンテキストオプションの数値は常に 浮動小数点 として保存されます。このタイプのユーザーインターフェースは、その数値を整数に制限しますが、その数値は内部的には浮動小数点で保存されています。)
Checkbox
1.0(オン)または0.0(オフ)のどれか。このインターフェースはチェックボックスです。
Heading
行間に大きな文字のラベルを表示します。 これは、コンテキストオプションをセクションで分けるのに役立ちます。
通常では Minimum と Maximum はスライダ範囲を設定しますが、この最小値未満の値やこの最大値より大きい値をユーザーが手動で入力することができます。 Min Locked や Max Locked を有効にすれば、ユーザーが手動で入力した値を強制的に最小値/最大値の範囲に収めることができます。
Min Locked
ユーザーが Minimum 未満の値を入力しないようにします。
Minimum
スライダ範囲の最小値。
Maximum
スライダ範囲の最大値。
Max Locked
ユーザーが Maximum より大きい値を入力しないようにします。
Automatically generate values
これを有効にすると、各メニューアイテムに関連付けられた“値”が自動的に生成されます。 String Menuに関しては、その値はラベルと同じです。 Integer Menuに関しては、その値は0から始まる選択アイテムのインデックスです。
例えば、 Automatically generate values を有効にして、Apple、Bear、Cactusの3つのアイテムを含んだメニューをセットアップしたとします。
そのオプションがString Menuで、ユーザーが Bear を選択すると、その変数にはBearが設定されます。
そのオプションがInt Menuで、ユーザーが Cactus を選択すると、その変数には2が設定されます。
コンテキストオプションのスクリプト制御 ¶
以下のHOM関数は、コンテキストオプションの値をスクリプト制御することができます:
Context Options EditorのExportとImportをスクリプト制御することもできます:
import contextoptions
# このシーン内のすべてのコンテキストオプションをJSONファイルにエクスポートします。
contextoptions.exportJson("options.json")
# JSONファイルからコンテキストオプションをインポートして、それらをこのシーン内の既存のコンテキストオプションにマージします。
contextoptions.importJson("options.json")コンテキストオプションをインポートする前に既存のコンテキストオプションをすべてクリアするには、既存のコンテキストオプションすべてに対してループさせることで、それらのコンテキストオプションを削除することができます:
for name in hou.contextOptionNames(): hou.removeContextOption(name)