| On this page |
APEX Scriptを使用して、グラフ入力(パラメータ)のインターフェースを作成/カスタマイズすることができます。 APEX Scriptの活用により、パラメータをマルチパラメータやフォルダに整理したり、非表示にしたり無効にするパラメータを指定したり、 タグ、アトリビュート、コントロールシェイプを含んだドロップダウンメニューを追加することができます。
グラフ入力用のインターフェースを作成する ¶
BindInput()関数を使用することで、グラフの入力を定義することができます。 これらの入力は、ユーザ側で値を調整できるようにパラメータエディタに表示させることができます:
-
APEX Script SOPの Snippet パラメータに、以下のコードを入力します:
# 異なる型の入力 a: Int = BindInput(2) b: Vector4 = BindInput((1, 2, 3, 4)) c: String = BindInput('hello') # カラーランプ Colorful: ColorRamp = BindInput( ColorRamp(basis=["Bezier", "Linear", "Bezier"], keys=[0.2, 0.5, 1.0], values=Vector3Array((1,0,0), (0,1,0), (0,0,1))))FloatRampとColorRampの値の設定方法は、ランプを参照してください。
-
入力をパラメータエディタに表示させるには、
Reload Setup Parmsボタンをクリックします:
パラメータを設定する ¶
BindInput()関数では、preset_kwargsキーワード引数を使用して、以下のようなパラメータのインターフェースプロパティを設定できます:
preset_kwargs |
型 |
説明 |
|---|---|---|
disable_when |
String |
他のパラメータの値に基づいて、パラメータを無効にします。 |
hide_when |
String |
他のパラメータの値に基づいて、パラメータを非表示にします。 |
joins_with_next |
Int |
|
label |
String |
パラメータのラベルを作成します。 |
prompt_text |
String |
文字列パラメータのフィールドに、入力内容のヒントとなるテキストを追加します。 |
この例では、preset_kwargs引数を使用して様々なパラメータを設定しています:
-
APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:
# 文字列パラメータのラベル名を変更し # 文字列フィールドにプロンプトテキストを追加します a: String = BindInput( '', preset_kwargs={'label':'Favorite sport', 'prompt_text':'on ice'}) # 同じ行に2つのパラメータを配置します x: Int = BindInput(1, preset_kwargs={'joins_with_next':1}) y: Float = BindInput(3.5) -
Reload Setup Parmsボタンをクリックします。パラメータエディタに入力が表示されます:
-
パラメータを非表示および無効にします:
g: Bool = BindInput(False) # 'g'がオフの時、このパラメータを非表示にします h: Int = BindInput(1, preset_kwargs={'hide_when':'{g == 0}'}) # 'h'が'1'に設定されている時、このパラメータを無効にします i: Int = BindInput(1, preset_kwargs={'disable_when':'{h == 1}'})
プリセット ¶
BindInput()関数では、presetキーワード引数を使用して、作成したいパラメータのタイプを指定できます。一部のプリセットには、preset_kwargsキーワードを使用して設定できる追加オプションが用意されています。利用可能なプリセットは以下の通りです:
カラー ¶
colorプリセットは、ベクトル(Vector3またはVector4)に対してカラーパラメータを作成します。Vector3の場合、カラーはRGBです。Vector4の場合、カラーはRGBAです。
このプリセットには、preset_kwargsはありません。
例 ¶
APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:
a: Vector3 = BindInput((0, 0.3, 1), preset='color')
Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します。
メニュー ¶
VEX ¶
vexプリセットは、複数行のVEX文字列を作成します。文字列パラメータで利用可能です。
このプリセットには、preset_kwargsはありません。
例 ¶
APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:
teststring: String = BindInput('@P = @N;', preset='vex') Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します:
Python ¶
pythonプリセットは、複数行のPython文字列を作成します。文字列パラメータで利用可能です。
このプリセットには、preset_kwargsはありません。
例 ¶
APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:
pythonstring: String = BindInput(
'n = hou.node("/obj/geo1/attribwrangle1")',
preset='python') Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します:
コントロールシェイプ ¶
controlshapesプリセットは、アンパックキャラクタで利用可能なコントロールシェイプのドロップダウンメニューを作成します。コントロールシェイププリセットは、文字列パラメータで使用できます。
このプリセットには、preset_kwargsはありません。
例 ¶
Electra Test Geometryにコントロールシェイプのドロップダウンメニューを追加するには:
-
Electra Test Geometry SOPで、 Output を APEX Character に設定します。
-
Electra SOPの1番目の出力をAPEX Script SOPに接続します。
-
APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:
a: String = BindInput('', preset='controlshapes') -
Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します。
タグ ¶
アトリビュート ¶
attribプリセットは、特定の型(文字列など)やクラス(プリミティブなど)のアトリビュートをリストしたドロップダウンメニューを作成します。このアトリビュートプリセットは、文字列パラメータで利用可能です。
attribプリセットには、以下のpreset_kwargsが用意されています:
preset_kwargs |
型 |
説明 |
|---|---|---|
path |
String |
ジオメトリのパス。 |
attrib_type |
String |
アトリビュートの型( |
attrib_class |
String |
アトリビュートのクラス。有効なオプションは |
例 ¶
この例では、Electra Test Geometryに文字列アトリビュート(タグ)と整数アトリビュートを追加します:
-
Attribute Adjust Array SOPを使用してタグを追加します。
-
Attribute Adjust Integer SOPを使用して整数Detailアトリビュートを追加します:
-
Attribute Name を
helloに設定します。 -
Attribute Class を Detail に設定します。
-
-
APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:
string_attrib: String = BindInput( '*', preset='attrib', preset_kwargs={'path': '', 'attrib_type': 'String'}) int_detail_attrib: String = BindInput( '*', preset='attrib', preset_kwargs={'path': '', 'attrib_type': 'Int', 'attrib_class': 'detail'}) -
Reload Setup Parmsボタンをクリックします。更新されたパラメータインターフェースには、以下のメニューアイテムが含まれます:
パラメータ
メニューアイテム
アトリビュート取得元
string_attrib
name, tags
nameアトリビュートはElectra SOPから取得され、tagsアトリビュートはAttribute Adjust Array SOPによって作成されます。int_detail_attrib
hello
helloアトリビュートはAttribute Adjust Integer SOPによって作成されます。
パラメータをフォルダに追加する ¶
addToFolder()関数を使用して、パラメータをフォルダに整理することができます。addToFolder()の構文は以下の通りです:
addToFolder(<folder_name>, <list_of_inputs>, [foldertype=<folder_type>, parent=<parent_folder>])
引数 |
型 |
説明 |
|---|---|---|
folder_name |
String |
フォルダの名前。 Note フォルダ名にスペースを使用することはできません。 |
list_of_inputs |
List of variables |
フォルダに追加したいバインド変数( |
folder_type |
String |
(オプション)作成するフォルダのタイプ。有効なオプションは |
parent_folder |
String |
(オプション) |
例 ¶
APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:
a: Int = BindInput(2)
b: String = BindInput('hello')
c: Float = BindInput(3.5)
d: Vector3 = BindInput((1,3,5))
e: Bool = BindInput(True)
addToFolder('Folder1', [a, b])
addToFolder('Folder2', [c])
addToFolder('Nested', [d], parent='Folder1')
addToFolder('Simple', [e], foldertype='folder_simple') Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します:
parent引数にフォルダが存在しない場合、フォルダが作成されます:
good: Bool = BindInput(True)
addToFolder('Bottom', [good], parent='Top/Mid')
マルチパラメータ ¶
パラメータインターフェースにマルチパラメータを追加するには:
-
bindMultiparm()関数を使用して、新しいマルチパラメータを作成します。bindMultiparm()に引数は必要ありません。 -
addToMultiparm()関数を使用して、マルチパラメータに要素を追加します。addToMultiparm()の構文は以下の通りです:addToMultiparm(<multiparm>, <variable_name>, <default_value>, [preset=<preset>, preset_kwargs=<preset_kwargs>])
引数 |
型 |
説明 |
|---|---|---|
multiparm |
Variable |
|
variable_name |
String |
マルチパラメータに追加する変数の名前。 |
default_value |
Any |
追加した要素に設定するデフォルト値。 |
preset |
String |
(オプション)変数のプリセット。 |
preset_kwargs |
Dictionary |
(オプション) |
例 ¶
APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:
a = bindMultiparm()
b = bindMultiparm()
addToMultiparm(a, 'hello', 'jello')
addToMultiparm(a, 'again', (2,4,6))
addToMultiparm(b, 'xyz', 1,
preset='menu',
preset_kwargs={'menu_items':['x','y','z']}) Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します:
Note
マルチパラメータは辞書配列です。前述のマルチパラメータからベクトルのagainを取得するには:
v: Vector3 = a[0]['again#']