On this page |
|
概要 ¶
以下のようにいくつかの色々な情報の集合体によって、デジタルアセット全体の定義が構成されています:
-
アセットのサブネットワーク内のノード。
-
アセットのパラメータインターフェース。
-
アセットのわかりやすいラベルとアイコンなどのメタデータ。
-
テクスチャなどのアセットに埋め込まれた追加ファイル。
-
アセットのカスタムViewerステートのPython実装。
このウィンドウを使って、サブネットワークの内容以外のすべてのことを編集します。 アセットを開発する時は、このウィンドウを開いて使用することが多く、特に、アセットのパラメータインターフェースの構築や細かな設定をする時がそうです。
Note
アセットを作成した時にセットアップしたいくつかの情報(例えば、人が解読可能なラベルや入力の数)は、このウィンドウで変更することができます。 しかし、アセットを作成した時に設定した内部名(ネームスペースとバージョンを含む)は、そのアセット固有の情報になっているので変更することができません。 もし間違えていたり変更したいのであれば、新しくアセットを作成するしかないです。
Type Properties vs. Spareパラメータ ¶
同じようなインターフェースから単一ノードにSpareパラメータやレンダープロパティを追加することができます。 アセットの ノードタイプ の編集とこのウィンドウで 単一ノード にSpareパラメータを追加するその違いを理解するのは重要な事です。
Spareパラメータ とは、単一ノードインタンスに追加される“余分な”パラメータのことです。 このパラメータは、ノードに本来備わっているパラメータインターフェースの一部ではありません。 アセットと“ファクトリー(出荷時に同梱されている)”ノードのどちらにもSpareパラメータを追加することができます。 Spareパラメータは、一回限りのカスタマイズで役立ちます。
レンダープロパティ は、ノード(オブジェクト、カメラ、マテリアル)に関する情報をレンダラーに伝達させる特別なタイプのSpareパラメータです。 ほとんどのレンダリング関係のノードは、追加可能なレンダープロパティのセットと一緒に作成されています。
単一ノードにパラメータを追加したい場合は、Spareパラメータを使用します。 レンダリングをカスタマイズしたい場合は、レンダープロパティを使用します。 特定のアセットタイプのすべてのノードで共有されているベースのパラメータインターフェースを変更したいのであれば、このウィンドウを使用します。
How to ¶
To... | Do this |
---|---|
アセットのType Propertiesを編集する |
アセットのインスタンスを右クリックして Type Properties を選択します。 または
Asset Managerウィンドウ(Assets ▸ Asset Manager)で、アセット定義を右クリックして Type Properties を選択します。 Type Propertiesウィンドウで変更が終わったら、その変更をアセットに適用しつつType Propertiesウィンドウを開いたままにしたいのであれば Apply をクリックし、 適用した後にウィンドウを閉じたいのであれば Accept をクリックします。 |
Basicタブ ¶
Label
人が解読できるノードタイプのラベル。 これは、⇥ Tabメニューなどのユーザインターフェースでノードを表示させた時にHoudiniが表示する名前です。
Icon
アイコンファイル(SVGまたは画像)を以下の形式のどれかで参照します:
-
アセットのExtra Filesに埋め込まれたファイルを参照する
opdef:
パス。 -
アイコンのファイルを指したファイルパスまたはURL。
-
ビルトインのHoudiniアイコンの名前。例えば、
OBJ_geo
またはSHELF_candle
。
このフィールドの隣りにある選択ボタンをクリックして、アイコンを選択します。
ディスク上のファイルを選択したり、選択ダイアログのopdef:/
をクリックして埋め込みファイルを選択したり、hicon:/
をクリックしてビルトインのアイコンを選択することができます。
ディスク上のファイルを選択して Embed Icon in Operator を有効にして、 Accept をクリックすると、Houdiniは、自動的にそのファイルをアセットのExtra Files内にコピーして、 Icon フィールドをその埋め込みファイルのopdef:
参照に置換します。
Version
このフィールドを“アップグレードハンドラー”で使用することで、新しいバージョンが利用可能な時に古い(けれども上位互換がある)バージョンのノードをアップグレードするスクリプトを用意することができます。 このフィールドとアセットの内部名の一部であるアセットバージョンを混同しないでください。 詳細は、2つのタイプのアセットバージョン管理を参照してください。
Minimum Inputs
このノードを動作させるのに接続する必要がある入力の数。 このノードには、以下の Maximum Inputs で設定した数までの入力を持たせることができますが、最低でもN個の入力が接続されていないとノードがエラーになります。
Maximum Inputs
このノードが持てる入力の最大数。Houdiniは、この数が Minimum Inputs 以上かどうかをチェックしません。 例えば、 Minimum Inputs を1、 Maximum Outputs を0に設定することができますが、 必ず エラーになります。
Input/Output タブのコントロールを使用することで、その入力に人が解読可能なラベルを設定することができます。
Maximum Outputs
(例えば、VOPのように)ノードカテゴリが複数の出力を許可している場合、ここには、そのノードの出力の数を指定します。
Input/Output タブのコントロールを使用することで、その出力に人が解読可能なラベルを設定することができます。
Parametersタブ ¶
アセットでの作業の大半は、そのアセットのパラメータインターフェースの編集です。 パラメータインターフェースには、ユーザによるアセットのオプションの制御方法を定義します。
パラメータインターフェースを構築する方法がいくつかあります。
-
ほとんどのパラメータは、アセット内部のノードから プロモート(昇格) させます。
パラメータを“プロモート”すると、Houdiniは、アセット上にそのパラメータのコピーを作成し、オリジナルのパラメータの値は、そのアセット上のパラメータの値を参照するエクスプレッションに置換されます。 つまり、アセット上のパラメータが、アセット内部のオリジナルのパラメータの値を駆動させます。
例えば、サーフェス上にポイントを散乱させて、それらのポイントにボックスをコピーするアセットを作成したいとします。 アセット作成者は、アセットの中に入ってScatterノードとBoxノードを使ってネットワークを構築するのに対して、 ユーザはこのアセットを単一ノードとして見るので、その中身を見たり編集することはありません。 ユーザには、アセットのインターフェースからポイントの数やボックスのサイズを制御できるようにさせたいので、それらのノードの特定のパラメータをアセット上に プロモート します。
-
アセット上に新しくパラメータを作成することができます。それらのパラメータが内部のノードのパラメータを参照するように手動でセットアップしたり、コールバック/スクリプトを使ってパラメータを機能的にすることができます。
例えば、アセット内のノードのScale X、Scale Y、Scale Zの値をアセット上の“Size” floatパラメータから駆動させることができます。 アセット上にfloatパラメータを作成し、アセット内のノードからそのパラメータを参照するように手動でセットアップすることができます。
-
マテリアルを構築する場合、Materialアセットは、そのアセット内のParameter VOPsに相当するパラメータを自動的に作成します。マテリアルセットに関する詳細は、マテリアルの構築を参照してください。
Parameters タブは3つのペインに分かれています:
Create Parameters
このペインは、アセットに追加可能な色々なパラメータ群をタブでまとめています。 By Type タブでは、ゼロから新しいパラメータを作成することができます。
Existing Parameters
このペインは、ノードの現在のパラメータインターフェースを表わしています。 左側のペインまたはパラメータエディタのパラメータをここにドラッグすることで追加することができ、ツリー内の項目をドラッグすると位置を並べ替えることができます。
Parameter Description
中央のペインでパラメータを選択すると、このペインでその設定を編集することができます。
To... | Do this |
---|---|
単一パラメータをプロモートさせる |
|
プロモートさせるパラメータを探す |
パラメータのドラッグアンドドロップの方法以外にも、Type Propertiesウィンドウからパラメータを探すことができます。
|
ゼロからパラメータを作成する |
|
ボタンパラメータを作成する |
ボタンパラメータは、ノードのパラメータインターフェースにボタンを追加することができます。ユーザがこのボタンをクリックするとPythonスクリプトが実行されます。
|
ポップアップメニューパラメータを作成する |
スクリプトまたはチャンネル参照でパラメータの値を読み込むと、現在選択されているメニュー項目の“トークン”が得られます。 さらに、パラメータコールバックスクリプトをセットアップすることで、ユーザがメニュー項目を選択する度に何かしらの処理をさせることができます。 Tip ユーザがタイプ入力するフィールドで且つ候補値を選択可能なメニューボタンも持つパラメータをセットアップすることもできます。 詳細は、Menuサブタブのヘルプを参照してください。 |
ボタンストリップ(一帯のボタン)またはアイコンストリップ(一帯のアイコン)のパラメータを作成する |
スクリプトまたはチャンネル参照でパラメータの値を読み込む時:
パラメータコールバックスクリプトをセットアップすることで、ユーザがストリップ内のボタンをクリックする度に何かしらの処理をさせることもできます。 Tip “Toggle”スクリプトを作成し、そのコールバックスクリプトによって、ボタンがクリックされる度に選択した項目を無効にさせれば、そのボタンストリップはオプション設定というよりもアクションボタンのツールバーのような挙動になります。 |
Importブロック ¶
Importブロック は、内容を“インライン(埋め込み)”で表示するタイプのフォルダです(つまり、このブロックで囲まれた“フォルダ”は不可視になります)。
ローレベルアセットから構築されたハイレベルアセットを使った複雑なアセットを開発している時、そのローレベルアセットからパラメータのブロックまるごとあなたが作成しているハイレベルアセット上にプロモートさせたいことがあります。 しかし、ローレベルのパラメータの編集を継続できるようにしつつ、毎回それらのパラメータを再度プロモートさせたくありません。
Importブロックは、パラメータのブロックをプロモートさせて、そのプロモート先の場所を覚えさせることができるので、オリジナルのパラメータを変更するとプロモートしたパラメータを自動的に更新させることができます。
Note
これらのパラメータを実際にインポートまたは再インポートするには、Operator Type Propertiesウィンドウの ギアメニューを開いて Refresh Imports を選択する必要があります。
To... | Do this |
---|---|
パラメータのブロックを単一ユニットとしてプロモートさせる |
|
Importターゲットを手動で指定する |
“Importブロック”フォルダのSource、Token、Maskは、パラメータのドラッグで自動的に指定する方法以外にも手動で指定することができます。 これは、非常に複雑なノードを開発する時に、現在のパラメータと 後で追加する可能性があるパラメータ にマッチするImportブロックを手動で作りたい場合に役立ちます。 |
Importを更新する |
Importブロックはターゲットコンテンツの変更内容を自動的に 反映しません 。 必ず手動でImportブロックの内容を更新してください。
|
パラメータタイプ ¶
Tip
“メニュー”というパラメータタイプはありません。 ユーザにポップアップメニューから値を選択させたいのであれば、IntegerまたはStringのパラメータを作成してから、 Parameter Description の Menu サブタブのコントロールを使って、メニューの候補値をセットアップします。
Angle
角度を度で表現した単一float。古いバージョンのHoudiniでは今とは異なるUIでしたが、その過去のバージョンのパラメータは使用されなくなりました。
Color
値をカラーとして編集するUIを持った3成分のfloatベクトルパラメータ。チャンネルは、123
の代わりにrgb
の接尾辞を使用します。
Color and Alpha
値をアルファチャンネル付きのカラーとして編集するUIを持った4成分のfloatベクトルパラメータ。チャンネルは、1234
の代わりにrgba
の接尾辞を使用します。
Data
カスタムデータタイプを格納します。 このパラメータはUIを持っていないので、スクリプトを使って値を読み書きする必要があります。 このパラメータタイプは、ノードインスタンス上にカスタムデータをスタッシュ(貯蔵)したいHDK開発者向けに用意されています。
Direction Vector
方向を表現した3成分のfloatベクトル。古いバージョンのHoudiniでは今とは異なるUIでしたが、その過去のバージョンのパラメータは使用されなくなりました。
File
ファイルパスを表現した文字列で、ディスクからファイルを選択するUIを持っています。
File - Directory
ディレクトリパスを表現した文字列で、ディスクからディレクトリを選択するUIを持っています。
File - Geometry
ジオメトリファイルのパスを表現した文字列で、デフォルトでジオメトリのみを表示するように設定されたファイル選択のUIを持っています。
File - Image
画像ファイルのパスを表現した文字列で、デフォルトで画像ファイルのみを表示するように設定されたファイル選択のUIを持っています。
Float
単一の浮動小数点値。
Float Vector 2
2成分の浮動小数点値。
Float Vector 3
3成分の浮動小数点値。例えば、3Dポジション。
Float Vector 4
4成分の浮動小数点値。例えば、クォータニオン。
Folder
他のパラメータを収納するコンテナ。フォルダによって、ノードのパラメータを整理することができます。 このフォルダでは、タブ、グループボックス、折り畳み可能なセクションなどの色々な表現方法を選択することができます。 隣接するタブは自動的に一緒にまとめられます。
Geometry Data
任意のジオメトリデータを格納します。 このパラメータはUIを持っていないので、スクリプトを使って値を読み書きする必要があります。 これは、ノードインスタンス上にデータをスタッシュ(貯蔵)させるのに役立ちます。 例えば、これを使用することでStash SOPを作成することができます。
Icon Strip
Button Stripと同様ですが、テキストラベルではなくアイコンをボタン上に表示します。 これらのボタンを相互に排他的、または、個々の設定にすることができます。 上記のIcon Stripパラメータの作成方法とIcon Stripコールバックの記述の方法を参照してください。
Integer
単一の整数値。
Integer Vector 2
2成分の整数値。
Integer Vector 3
3成分の整数値。
Integer Vector 4
4成分の整数値。
Key-Value Dictionary
文字列と値を関連付けたテーブルを格納します。
Label
読み込みだけのテキストの行。
Logarithmic Float
単一floatですが、このスライダUIは、指数スケールで値に影響を与えます。
Logarithmic Integer
単一integerですが、このスライダUIは、指数スケールで値に影響を与えます。
Min/Max Float
最小値と最大値を表現した2個のfloat。チャンネルは、1
と2
の代わりにmin
とmax
の接尾辞を使用します。
このタイプのパラメータを持つノードは、16.0より前のバージョンのHoudiniでは読み込まれません 。
Min/Max Integer
最小値と最大値を表現した2個のinteger。チャンネルは、1
と2
の代わりにmin
とmax
の接尾辞を使用します。
このタイプのパラメータを持つノードは、16.0より前のバージョンのHoudiniでは読み込まれません 。
Operator List
ノードパスをスペース区切りのリストで表現した文字列で、複数のノードを選択できるUIを持っています。
Operator Path
ノードパスを表現した文字列で、ノードを選択するUIを持っています。
RGBA Mask
ユーザが赤、緑、青、アルファのボタンを個々に有効/無効にできるUIを使って生成される整数ビットマスク。
Ramp (Color)
カラーランプUIを持った3成分のfloatベクトル。chrampエクスプレッションによって、そのランプをサンプリングすることができます。
Ramp (Float)
カーブランプUIを持った単一float。chrampエクスプレッションによって、そのランプをサンプリングすることができます。
Separator
UIに分割線を挿入することで、パラメータを整理することができます。
String
文字列値を編集するテキストボックス。
ビルトインのタグを参照してください。
Toggle
ブール値を編集するチェックボックス。
UV
サーフェス座標を表現した2個のfloat。チャンネルは、12
の代わりにuv
の接尾辞を使用します。
UVW
サーフェス座標を表現した3個のfloat。チャンネルは、123
の代わりにuvw
の接尾辞を使用します。
パラメータタグ ¶
共通設定 ¶
Name
パラメータの 内部名 。これは、チャンネル参照やスクリプトがパラメータを参照する時の名前です。
Label
人が解読可能なパラメータのラベル。これは、パラメータエディタのパラメータのUIの隣に表示される文字列です。 チェックボックスを無効にすることで、コントロールの隣にラベルを表示しないようにすることができます。
Type
パラメータタイプ。これは、値のタイプとパラメータエディタインターフェースでユーザに表示されるパラメータの挙動を決定します。
Invisible
これを有効にすると、パラメータがパラメータエディタに表示されなくなりますが、エクスプレッションやスクリプトを使ってその値を読み書きすることができます。
デフォルトでは、Invisibleが有効なパラメータは Existing Parameters には表示されません。 それらのパラメータが選択、再配置、削除できるように表示させたいのであれば、上部にある Show Invisible Parameters を有効にします。
Horizontally Join to Next Parameter
このパラメータと次のパラメータをパラメータエディタインターフェース内で同じ行に配置します。 3個以上のパラメータを水平に配置するには、2個以上のパラメータに対して連続でこれを有効にしてください。 “隣り合わせた”すべてのパラメータが一行で収まらない場合は、次の行に繰り越されます。
-
2個以上の関連のあるコンパクトなコントロールを一行に収めることでスペースを節約することができます。
-
チェックボックスを作成して、そのラベルを無効にし、そのチェックボックスの隣に次のパラメータを“隣り合わせる”ことで、このペインの Label コントロールと同様にチェックボックスでパラメータを適用するかどうかを制御するUIを作ることができます(実際には、さらにエクスプレッションを使って、そのようなUIを実装する必要があります)。
Show Parm In
Houdiniには、違ったタイプのパラメータインターフェースがいくつかあります。ここでは、このパラメータを表示させるインターフェースを制御します。
Main Dialog Only
パラメータエディタにのみパラメータを表示します。
Main & Tool Dialogs
パラメータエディタとビューア内のフローティングパラメータエディタにパラメータを表示します。
Main & Tool Dialogs + Toolbox
パラメータエディタとノードがアクティブになった時のビューアの上部のオペレータツールバーとビューア内のフローティングパラメータエディタにパラメータを表示します。
Disable When
このパラメータを無効/編集不可にするタイミングのルール。これは、他のパラメータの値に基づいて動的に無効になるようにパラメータをセットアップすることができます。 Disable/Hide Whenの構文を参照してください。
Hide When
このパラメータを非表示にするタイミングのルール。これは、他のパラメータの値に基づいて動的に非表示になるようにパラメータをセットアップすることができます。 Disable/Hide Whenの構文を参照してください。
Callback Script
Houdiniは、このパラメータの値が変更された時に、このスクリプトを実行します。
このフィールドの右側にあるポップアップアイコンメニューでは、コールバックスクリプトをHScriptコマンド言語またはPythonのどちらで使用するかを設定することができます。
フィールドの値が1行であれば、それはPythonエクスプレッションと見なされて評価されます。
2行以上に渡っているなら、それは関数のボディと見なされるので、最後にreturn
ステートメントを使って値を返さなければなりません。
このスクリプトは、変更されたパラメータに関する情報が入ったkwargs
グローバル辞書変数を含んだ環境で実行されます。
詳細は、パラメータコールバックスクリプトを参照してください。
Available For Import
これを無効にすると、親フォルダがブロックとしてインポートされた時に、このパラメータは含まれません。
Help
これは、マウスカーソルをパラメータ上に置いた時に表示されるツールチップです。
文字列設定 ¶
Multi-line String
このフィールドは、単一行のテキストフィールドの代わりに複数行エディタを表示します。
どの 文字列パラメータも複数行のテキストを保持することができます。 単一行のテキストフィールド上でAlt + Eを押すことで、拡張された複数行エディタが開きます。 このチェックボックスは、単に文字列編集用のユーザインターフェースの見た目/機能性を変更するだけです。
Lines to Show
Multi-line String が有効な時、これは、エディタに表示される最小/最大の行数です。 このフィールドの高さは最低でもこの最小行数の高さになります。ユーザが入力する行数が最大行数を超えない限りは自動的にサイズが拡張され、最大行数を超えた時点で、その内容はスクロールします。
Language
このフィールドにソースコードを格納する場合、プログラミング言語を指定することで、そのフィールド内での自動補完や構文ハイライトを有効にすることができます。
Suppress Quotes in VOP Code Blocks
VOPコードブロック内で、このパラメータを引用符なしで展開すべきかどうか設定します。通常では、メニューの文字列はコードブロック内で文字通りのままに置き換えます。VOP定義の文字列パラメータにのみ利用可能です。
数値設定 ¶
Units
“距離”や“質量”などのパラメータ値の 単位タイプ を指定します。このフィールドの右側のポップアップメニューから単位タイプを選択します。 このパラメータのデフォルト値をHIPファイルの単位に従ってスケールさせたくないなら、このフィールドを空っぽのままにします。
これは、ユーザがHIPファイルの単位を変更した時のこのパラメータのデフォルト値のスケールの挙動を決めます。
例えば、ユーザがHIPファイルの単位をcm
に変更すると、このパラメータは、この設定を使って長さ/距離関係のデフォルト値をスケールします。
コードには、m/kg/sexponent[m/kg/sexponent ...]
の形式を使用します。
例えば、長さはm1
で、加速度はm1s-2
(つまり、メートル/秒2。分数の代わりにマイナスの累乗を使います)です。
以下に役に立つ単位タイプをいくつか載せます:
Mass(質量) |
|
Time(時間) |
|
Velocity(速度) |
|
Angular Velocity(角速度) |
|
Acceleration(加速度) |
|
Angular Acceleration(角加速度) |
|
Force(力) |
|
Force Density(流体の単位体積あたりの力) |
|
Impulse(力積) |
|
Torque(回転モーメント) |
|
Drag(抗力) |
|
Angular Drag(角抗力) |
|
Pressure(圧力) |
|
Spring Constant(スプリング定数) |
|
Linear Density(線密度) |
|
Area Density(面密度) |
|
Volume Density(体積密度) |
|
Size
Type が Integer , Float, Angle の時は、このパラメータのコンポーネントの数(1から4)を設定します。
Defaults
このパラメータのデフォルト値。 Size が2以上の場合は、各コンポーネントにデフォルト値を指定することができます。
Range
このインターフェースのスライダの範囲。
最小/最大値の隣にある錠アイコンをクリックすることで、ユーザがこの範囲外の値を手動で入力できないようにすることができます。
ノードのパス/リストの設定 ¶
Op Filter
このパラメータのノード選択インターフェースでユーザに表示または選択できるノードのタイプをフィルタリングします。
例えば、パラメータにボーンのパスを指定する必要がある場合には、これを“Object: Bone Only”に設定することで、ユーザはシーン内のボーンのみを選択しやすくなります。
ファイル設定 ¶
Browse Mode
ファイルの読み込み/保存に応じて異なるファイル選択UIを表示するオペレーティングシステム(例えばMac OS)では、このパラメータに関連付ける操作タイプをここで指定することができます。
例えば、読み込むジオメトリファイルを指定するパラメータに関しては、ここに“Read Only”を指定します。 書き込み先の出力ファイルを指定するパラメータに関しては、ここに“Write Only”を指定します。
現在のところ、Houdiniのファイル選択ダイアログは、この情報を使用しません。
これは、ネイティブのファイルダイアログ(HOUDINI_USE_NATIVE_FILE_CHOOSER
環境変数で設定)を使用した場合にのみ違いがあり、(例えばMac OS)では、この違いがはっきりとわかります。
フォルダ設定 ¶
Folder Type
パラメータエディタインターフェースのフォルダの内容の表示方法を制御します。
Collapsible
パラメータを含んだ折り畳み可能なヘッダとして表示します。 詳細は、以下のヘディングインターフェースを参照してください。
Simple
ラベルの付いたボックスの中にパラメータを表示します。 詳細は、以下のヘディングインターフェースを参照してください。
Tabs
タブとして表示します。パラメータツリー内の複数の隣接“タブ”フォルダがパラメータエディタ内でタブセットとして表示されます。
Import Block
通常通りのパラメータとしてその内容を表示します。 これは、フォルダをブロックとしてインポートする時に、インポートするタブや他のフォルダタイプの中にそれらのパラメータを表示させたくない場合に役立ちます。
Multiparm Block
Multiparm では、ユーザが複数のパラメータインスタンスを作成することができます。 このフォルダタイプは、ユーザ側でパラメータを追加することができるインターフェースをセットアップします。 このフォルダ内のパラメータは、ユーザ側で追加/削除して生成させることができるパラメータブロックのテンプレートとして動作します。
“List”形式では、ユーザが生成するブロックをパラメータエディタ内の通常のパラメータレイアウトとして追加します。 “Scrolling”形式では、ユーザが生成するブロックをスクロール領域内に配置します。 “Tabs”形式では、ユーザが生成する各ブロックをタブ別にタブセット内に配置します。
End Tab Group
隣接する“タブ”フォルダをタブセットに結合します。 連続するタブを別のタブセットにしたい場合は、各タブセットの最後のタブに対してこれを有効にしてください。 そうすることで、これがタブセットの最後のタブと認識されるので、次のタブからは新しいタブセットでタブが作成されます。
Tab Disable When
このタブ内の すべてのパラメータ を無効/編集不可にするタイミングのルール。Disable/Hide Whenの構文を参照してください。
Tab Hide When
このタブを非表示にするタイミングのルール。Disable/Hide Whenの構文を参照してください。
Import Settings
これを有効にすれば、このフォルダがこのアセット内のノードの内容をインポートすることができます。importブロックを参照してください。
Note
これらのパラメータを実際にインポートまたは再インポートするには、Operator Type Propertiesウィンドウの ギアメニューを開いて Refresh Imports を選択する必要があります。
Source
Import Settings が有効な時に、このフォルダが内容をインポートするファイルまたはノードの参照。
Sourceには、op:node_path
を使ってサブノードを指定するか、file:file_path
を使って外部ダイアログスクリプトを指定することができます。
例えば、アセット内部のtorus1
という名前のノードからパラメータをインポートするにはop:torus1
を使用します。
アセット内部のgeo1
という名前のオブジェクト内のsphere1
という名前のノードからパラメータをインポートするにはop:geo1/sphere1
を使用します。
Token
Import Settings が有効な時にノード/ファイルからインポートするアイテムの名前。 ソースからフォルダ、Importブロック、すべてのパラメータをインポートすることができます。
-
フォルダをインポートするには、そのフォルダの Name を使用します。
-
Tabsタイプのフォルダは、同じ Name を共有する兄弟フォルダです。タブセット内にすべてのタブをインポートするには、その共有する Name をトークンとして使用します。 グループから単一タブをインポートするには、そのタブセットの Name の後にコロン(:)とインポートしたいフォルダの Label を使用します。
例えば、ラベルが“Shading”の
folder1
という名前のタブをインポートする場合、そのトークンはfolder1:Shading
となります。 -
Importブロックをインポートするには、特別なトークンの
importblock
の後にコロン(:)とインポートしたいImportブロックの Label を使用します。 -
ソースからすべてのパラメータをインポートするには、トークンを空っぽのままにします。
フォルダの名前を取得するには、ソースノードを選択して、パラメータエディタで ギアメニューを開いて Edit Parameter Interface を選択します。次に Existing parameters 内のフォルダを選択して Parameter Description の Name フィールドの内容をチェックします。
Mask
Import Settings が有効な時に、このパターンに合致したパラメータのみをインポートします。
-
マルチパラメータを除外しても既存のインスタンスは自動的に除外されません(“親”マルチパラメータ名とインスタンス名の両方を除外できるようにパターンを手動で入力してください)。
-
マルチパラメータを 包含 すると、個々のインスタンスが自動的に 除外 されます。
ヘディングインターフェース ¶
“折り畳み式”フォルダタイプ(パラメータエディタでは折り畳み式ヘッダで表示されます)には、もっとコンパクトに収めてパラメータインターフェースをすっきりさせることができるオプションがいくつか用意されています。
インヘッダ式チェックボックス ¶
(これは、フォルダタイプがSimpleとCollapsibleで動作します。)
たいていの場合、折り畳み式パラメータセクションには、オン/オフを切り替える単一機能向けのオプションが含まれています。 例えば、“Simplify Geometry”をオン/オフするチェックボックスを付けてから、ジオメトリの単純化に関連した一連のオプションを入れることができます。
タグを追加することで、このチェックボックスが折り畳み式ヘッダの一部として表示されるようにすることができます。 こうした方がよりコンパクトになって、そのチェックボックスとそのセクションの関連性が視覚的にわかりやすくなります。
チェックボックスを折り畳み式ヘッダ内に入れ込むには、以下の操作をします:
-
チェックボックス(“Toggle”タイプのパラメータ)をパラメータツリーに追加します。
-
そのチェックボックスの下にフォルダを追加します。そのフォルダの Folder Type を Collapsible に設定します。
Note
この“Toggle”パラメータは、パラメータ階層内のその折り畳み式フォルダの 外側 になければなりません。
-
追加したフォルダの Parameter Description 内の(Tagsテーブルの下にある) Built-in Tags をクリックします。表示されたダイアログから Standard Tags ▸ Parameter Folders ▸ Header Toggle Reference を選択して、 Accept をクリックします。
-
その Tags テーブル内の
sidefx::header_toggle
の隣の空っぽのセルをクリックします。追加したToggleパラメータの内部名を入力して、Enterを押します。 -
そのメイントグルがオフの時はその折り畳み式セクション内のすべてのパラメータを無効にするには、その折り畳み式フォルダの Disable When オプションに以下を設定します:
{ toggle_internal_name == 0 }
(これが、Toggleパラメータが折り畳み式フォルダの 外側 になければならない理由です。そうすることで、フォルダ内のすべてのオプションの状態を制御することができます。)
-
Type Propertiesウィンドウの Apply をクリックして、そのパラメータの効果を確認します。
Tip
ヘッダには、 チェックボックス ではなく フォルダ のラベルが表示されます。
インヘッダ式パラメータ ¶
(これは、フォルダタイプがCollapsibleでのみ動作します。)
折り畳み式セクション内には、そのセクション内の他のすべてのパラメータよりも頻繁にアクセスするパラメータを1つ含めることができます。
タグを追加することで、セクションが折り畳まれた時にヘッダ内にそのパラメータが表示されるようにすることができるので、 セクション内の他のパラメータが非表示になっている時であってもユーザは常にそのパラメータを編集することができます。
Note
折り畳まれたヘッダは、 そのパラメータではなく 、 そのフォルダ のラベルを表示します。 つまり、使い勝手を考慮すると、そのパラメータが何を意味しているのかをユーザに 非常にわかりやすくする 必要があります。 ヘッダパラメータを使用する前に、そのパラメータが親フォルダと同じラベルで良いのか考えてください。
例えば、Scatter系ノードで Density というラベルの折り畳み式セクションを追加する場合、全体のポイント密度をスケールさせるスライダをヘッダパラメータにするのが合理的です(セクション内の他のパラメータは、その密度の計算方法、分布、単位などを制御すると良いでしょう)。 同様に、セクションの名前が Texture ならば、テクスチャファイルのファイルパスをヘッダパラメータにするのが合理的です。
セクションが折り畳まれた時にヘッダに表示されるパラメータを指定するには、以下の操作をします:
-
パラメータツリー内でフォルダタイプが“Collapsible”のフォルダを選択します。
-
そのフォルダの Parameter Description 内の(Tagsテーブルの下にある) Built-in Tags をクリックします。表示されたダイアログから Standard Tags ▸ Parameter Folders ▸ Header Parameter Reference を選択して、 Accept をクリックします。
-
その Tags テーブル内の
sidefx::header_parm
の隣の空っぽのセルをクリックします。そのフォルダ内の表示したいパラメータの内部名を入力して、Enterを押します。 -
Type Propertiesウィンドウの Apply をクリックして、そのパラメータの効果を確認します(セクションが折り畳まれている時でないと、そのパラメータはヘッダ内に表示されません)。
ランプの設定 ¶
Ramp Type
ここには、カラーランプに対して“Color”を、スカラーカーブランプに対して“Float”を指定することができます。
Color Type
Ramp Type が“Color”の時、ここには、データ内の3つのチャンネルからカラーを生成する際に使用するモデルを指定します: “RGB”, “HSV”, “LAB”, “HSL”, “XYZ”, “TMI”。
Default Points
このパラメータが作成された時の初期のランプポイントの数。
Def Interpolation
このパラメータのランプポイント間のデフォルトの補間方法。
First Instance
最初のランプポイントとなる開始番号を指定します。これはランプポイントパラメータの内部名を参照するスクリプトにのみ影響があります。
VEX Ramp Variables
このパラメータがシェーダ上にある時、ここには、Basis、Keys、Valuesのパラメータ用のVEX変数名を指定することができます。
Show Controls By Default
ランプパラメータは、その下側にスペースを節約するためにユーザ側で折り畳むことができるコントロールパネルを持っています。 これが有効になっていると、ノードが作成された時に最初からこのランプのコントロールを可視にします。 これが無効になっていると、そのコントロールが最初から折り畳まれます。
Key-Valueの設定 ¶
Key Label
パラメータUIの左側(キー)コラムの上部に表示するテキスト。これを空っぽのままにすると、“Key”が使われます。
Value Label
パラメータUIの右側(値)コラムの上部に表示するテキスト。これを空っぽのままにすると、“Value”が使われます。
Add Chooser
これを有効にすると、事前定義リストからKey-Valueペアを選択するボタンをパラメータUIに追加することができます。
Chooser Label
選択ボタン上に表示するテキスト( Add Chooser が有効な時)。
Chooser Callback
ユーザが選択ボタンをクリックした時にHoudiniが実行するPythonスクリプト( Add Chooser が有効な時)。
このスクリプトによって、(例えば、hou.ui.selectFromListまたはhou.ui.selectFromTreeを使って)ユーザにプリセットを選択させるインターフェースを用意することができます。
これは、(key, value)
タプルを返さなければなりません。
詳細は、Key-Valueパラメータボタンスクリプトを記述する方法を参照してください。
Channelsサブタブ ¶
このサブタブは、このパラメータに関連したアニメーション可能な チャンネル を表示します。
デフォルトでは、Houdiniは、パラメータ値の各コンポーネントに対してアニメーションチャンネルを作成します(例えば、 Translate ベクトルパラメータは、ベクトルのコンポーネントに1チャンネルなので3つのチャンネルが用意されます)。 しかし、パラメータに対してそれよりも多く計算または少なくチャンネルを生成することができます。
-
チャンネルの Auto-addアイコンを有効にすることで、そのチャンネルをキー可能、且つ、このパラメータを含んだノードが選択された時にチャンネルリストに自動的に追加させることができます。
よく使用するアニメーション値すべてに対してこれを有効にすると良いでしょう。
-
このパラメータをプロモートすると、“Linked Channels”コラムには、アセットの中のノードからプロモートされたこのパラメータのチャンネルが表示されます。真ん中にある Linkボタンをオンにすると、そのチャンネルは、リンクされたチャンネルから値を取得するようになります。
Menuサブタブ ¶
Importサブタブ ¶
Houdiniは、Importブロックを更新する時に使用するパラメータのプロモート元に関する情報をここに記録しています。 意図的に処理したい場合を除いて、この情報を編集しないでください。
Action Buttonサブタブ ¶
Disable When/Hide Whenの構文 ¶
他のパラメータの値に基づいてパラメータを動的に表示または有効にしたいことが多々あります。 例えば、いくつかの機能を有効にするチェックボックスを持たせた場合、そのチェックボックスが有効な時にその機能に関係するパラメータだけを編集できるようにしたいです。
パラメータの Disable When と Hide When の設定では、パラメータの無効または非表示のタイミングをセットアップすることができます。 この値は、以下に示す構文を使ったコードであり、他のパラメータ値に基づいて無効/非表示を制御することができます。
一般的な構文:
{ parm_name [operator] value ...} ...
-
波括弧内に1つ以上の比較。
-
波括弧内には、パラメータ名、比較演算子、値を使った1つ以上の比較を入れます。
-
次の比較演算子が利用可能です:
==
,!=
,<
,>
,>=
,<=
,=~
(パターンに合致),!~
(パターンに合致しない)。{ type == 1 count > 10 } { tolerance < 0.1 }
Note
比較演算子の前後には必ずスペースが 必要 です。そうしないと、Houdiniはそのルールを受け入れません。
-
比較演算子を省略することができます。その場合には、省略した比較演算子は
==
と見なされます。しかし可読性を考慮すれば、常に演算子を明示的に指定することを推奨します。{ geotype 1 } { geotype 2 }
-
波括弧内に複数の比較があった場合、 すべての 比較がTrueでないと、その条件がTrueになりません。
例えば、以下の条件では、
enablefeature
チェックボックスパラメータが有効 且つcount
パラメータが10
より大きい時に、このパラメータが無効/非表示になります:{ enablefeature == 1 count > 10 }
-
(波括弧のセットで)複数の条件を指定した場合、それらの条件の どれか がTrueになると、このパラメータが無効/非表示になります。
例えば、以下の条件では、
enablefeature
チェックボックスパラメータが有効 またはcount
パラメータが10
より大きい時に、このパラメータが無効/非表示になります:{ type == 1 } { count > 10 }
-
ルールの文字列にエクスプレッション関数を使用することはできません。しかし、回避策は、必要な処理を計算するエクスプレッションを含んだ不可視パラメータを作成して、それを比較で参照することです。
-
比較の左側のパラメータ名の箇所で使用可能な特別な関数がいくつかあります(これらの関数は、比較の右側の 値 に使用することは できません )。
ninputs()
接続されている一番大きい入力番号。これは、中央の入力が接続されていない場合には、接続数より大きくなることがあります。また、親ノードに接続してくてもよいサブネット入力を数えます。
hasinput(n)
指定した入力番号が接続されていれば
1
、接続されていなければ0
を返します。これは、サブネット入力に親ノードが接続されていない場合でも、そのサブネット入力に接続された入力を数えません。isparm(parmname)
このパラメータの名前がparmnameなら
1
を返します。これは、Multiparmを使用するためにあります。例えば、このルールを
blend
という名前のMultiparm内の1番目の項目に適用し、2番目(blend1
)、3番目(blend2
)などに適用したくない場合です:{ isparm(blend0) == 1 }
Nodeタブ ¶
Representative Node
オブジェクトアセット用。ここには、そのオブジェクトアセット内のノードを選択することで、そのアセットが一般のオブジェクトタイプ(ライトまたはカメラ)であることを示すことができます。 Houdiniは、この情報を使って、Link EditorなどのUIで、このアセットをフィルタリングしたりカテゴリ分けすることができます。
Guide Geometry
SOPアセット用。Houdiniは、ここで指定したノードをクックして、実際の出力と一緒に表示させる ガイド を作成します。 ガイドジオメトリには、ノードの出力とは関係のない“余分な”ジオメトリを含めることができるので、インジケータや可視化にも使えます。 例えば、Volume SOPsには境界ボックスを示すガイドジオメトリを持っていることが多いので、これを利用してボクセルサイズを示すことができます。
Editable Nodes
スペース区切りのノードパスのリスト。これらのノードは、このアセットがロックされていれも編集することができます。
通常では、ユーザ側にはアセットを自己完結したブラックボックスのように表示させたいですが、複雑な処理になると、ユーザの方でアセットの挙動に影響を与えるペイントノードやカーブなどのノードの中に入ってもらって編集してもらった方が都合が良いことがあります。
この編集可の情報は、他のアセットを含んだアセットに“伝搬”するわけではありません。 ノードAがアセットB内で編集可能だとしても、Bのインスタンスを含んだアセットCでは、そのノードは自動的に編集可能になりません。アセットCのEditable NodesでAを登録する必要があります。
Message Nodes
スペース区切りのノードパスのリスト。これらのノードに対する警告とエラーは、アセットノードにも伝搬します。 問題を起こす可能性のあるノードをここにリストしておくことで、ユーザ側にその警告/エラーを表示することができます。
例えば、アセット内部のFileノードがアセット上に定義されたパスを読み込むように設定した場合、このリストにそのFileノードを含めることで、そのファイルが見つからなかったら、そのエラーをアセット上に表示させることができます。
Dive Target
ここにサブネットワークパスを含めると、ユーザがアセットをダブルクリック(または“Dive into Network”コマンドを使用)した時に、アセット自体の中ではなく、このサブネットワークの中にジャンプします。 Dive Targetを設定した場合、上記の Editable Nodes のリストにもそのターゲットを追加してください。
アセットの内容は常にアセット定義ネットワークになっているので、そうすることで、アセットが直接Dive Targetで指定したノードを持っているかのように見せることができます。
ユーザはツリービューなどを使えば、まだ兄弟ノードに行くことができます。この設定は、“Dive in”/“Up to Parent Network”のアクションにのみ影響します。
Note
最終ロケーションはDive Target内を見ているので、このターゲットにはネットワークを指定してください。 ターゲットに通常のノードを指定すると、このDive Targetは無視されます。
Descriptive Parm
このアセット上のパラメータの内部名をここに含めると、Houdiniは、ネットワークエディタ内で、そのパラメータの値をDescriptive Textバッジとして表示します。
ここには、ノードの現在の設定に関して最も重要なことがユーザが一見してわかるような値のパラメータを指定してください。 例えば、Fileノードならば、そのファイルパスがそれです。
Default State
これが空っぽでない場合、ユーザがこのノードに対してHandlesツールに使った時に、通常のノード状態ではなく、この“状態”が使用されます。
現在のところ、ここにはstroke
を最もよく使います。この状態を設定すると、このタイプのノードがアクティブになった時にHandlesツールはStroke状態を使用します。
他のビルトインの状態は、特定のノードと密接に繋がっているので、ここでは動作しません。
HDKまたは独自のカスタムPythonステートを使って独自のインタラクティブ状態を記述すれば、この設定を使って、独自の状態をアセットと関連付けることができます。
Shader Name
マテリアルノード用。これは、シェーダの内部名として使用されます(Mantraシェーダに関しては、これは、VEXシェーダ関数の名前です)。 通常では、これはアセットの内部名と同じにします。
Houdiniは、この文字列内の不正な文字を自動的に変換します(例えば、principledshader::2.0
は内部的にprincipledshader__2_0
になります)。
Shader Type
マテリアルが行なう計算タイプを絞り込み、そのマテリアルの呼び出し方法とマテリアルに計算させたいことを指定します。
このフィールドの右側のポップアップメニューからタイプを選択します。
最もよく使用するのは、“vopmaterial”(これは、サーフェスシェーダとディスプレイスメントシェーダの両方を備えることができます)です。
しかし、1タイプのシェーダだけを生成したいのであれば、このフィールドにsurface
またはdisplace
のどちらかを指定することもできます。
RenderManに関しては、bsdfshader
またはgeneric
を指定することが多いです。
Render Mask
マテリアルアセット用。ここには、このマテリアルを動作させるレンダラーをリストします。
例えば、Principled Shaderは、MantraとビューポートOpenGLレンダラーで動作するので、このマスクにVMantra OGL
を指定します。
Pxr DisneyシェーダはRenderManでのみ動作するので、このマスクにRIB
を指定します。
VopNet Mask
ユーザがこのノードを作成できるVEXコンテキストのスペース区切りのリスト。これを空っぽのままにすると、このノードはどのコンテキストにも表示させることができます。
利用可能なコンテキストキーワードは、surface
(サーフェスシェーディング), displace
(ディスプレイスメントシェーディング), chop
(モーションデータ: VOP CHOP), cop2
(コンポジット: VOP COP2 GeneratorとVOP COP2 Filter), cvex
(コンテキストに依存しない: 例えば、Attribute VOP, Point VOP)。
Force Code Generation
VOPネットワークにVOPオペレータがある時、VEX Builderはオペレータで生成されたコードが必要だと判断すれば、そのコードのみを含みます。 通常は、サブネットタイプVOP、Output VOP、コードを必要とするVOPの入力に直接または間接的に接続された任意のVOPでは正しいです。 しかし、 Force Code Generation トグルを有効にすることで、VEX BuilderがVOPのコードを強制的に生成することができます。
External or Procedural Shader
このVOPが、生成されたVEXコードではなくDSOまたはDLLのファイルによって実装されている場合には、これを有効にします。
Unit Length
アセット内の値とデフォルトに使用されている単位に応じた1距離単位の長さ(メートル)。
例えば、1単位 = 1フィートを前提にアセットを開発した場合は、ここに0.3048
を設定してください。
Houdiniは、この値を使ってHIPファイルの単位( Edit ▸ Preferences ▸ HIP File Options )に応じて“距離”パラメータをスケールします。 Parameters タブ上のパラメータに対して Units 設定を使用することで、そのパラメータを距離として指定することができます。
Unit Mass
アセット内の値とデフォルトに使用されている単位に応じた1質量単位の重さ(キログラム)。
例えば、1単位 = 1ポンドを前提にアセットを開発した場合は、ここに0.45
を設定してください。
Houdiniは、この値を使ってHIPファイルの単位( Edit ▸ Preferences ▸ HIP File Options )に応じて“重さ”パラメータをスケールします。 Parameters タブ上のパラメータに対して Units 設定を使用することで、そのパラメータを重さとして指定することができます。
Get Properties from Vex Code
VEXソースコード内のpragmaステートメントがこのウィンドウ内の設定を制御できるようにします。
Input/Outputタブ ¶
VOPsに関しては、このタブは、ノード上に表示させる入力と出力とそれらのタイプをセットアップすることができます。
他のノードタイプカテゴリに関しては、このタブ上のコントロールによって、アセットの入力と出力に人が解読できるラベルを付けることができます。 これらのラベルは、ネットワークエディタでユーザがコネクタ上にマウスカーソルを置いた時にツールチップとして表示されます。
VOPアセット ¶
-
このタブには2つのテーブルエディタがあり、1つが入力用、もう1つが出力用です。
-
Create/Update Inputs From Parameters をクリックすると、ノードのパラメータに基づいて入力が自動的に作成されます。これは、ユーザが入力を接続することでパラメータ値を上書きすることができます。
このボタンは、同じ名前とラベルで入力を作成し、入力タイプはパラメータタイプから推測されます。 もし入力がパラメータと同じ名前で既に存在していれば、このボタンはラベルのみを更新するので、入力タイプへの変更は上書きされません。
パラメータに基づいた入力は、テーブル内で編集することはできません。 これらの入力は、 Infoアイコンでマークされます。
パラメータと同じ名前の入力を手動で作成すると、それらの入力が自動的にパラメータとリンクされます。
-
入力または出力を追加するには、テーブルの上部にある New Input または New Output メニューからタイプを選択します。
-
テーブル内の既存の入力/出力の名前またはラベルをクリックすると、それを編集することができます。
-
行内の1番目のセルを選択してから、それを上下にドラッグすると、テーブル内での行の位置を変えることができます。
各行の1番目のセルをShiftクリックまたはCtrlクリックで行を複数選択してから、ドラッグすることで一度に複数の行を動かすことができます。
コラムのヘッダをドラッグすることで、シグネチャの順番を変更することができます。
-
入力/出力を削除するには、行内の Deleteアイコンをクリックします。
-
いくつかのセルは、編集または削除することができません。例えば、パラメータに相当する入力、エクスポートパラメータに相当する出力、VOPネットワークの出力がそれです。
VOPシグネチャ ¶
-
VOPには複数の シグネチャ (つまり、入力タイプと出力タイプのセット)を持たせることができます。例えば、Sine VOPには、VEX sin関数の異なる使用方法に該当する異なるシグネチャ(float->float、vector->vector)を持っています。
-
各シグネチャは、入力テーブルでは1個のコラムで表現され、出力テーブルでは 3個 のコラムで表現されています。 Signature Name (シグネチャコラムの1番目のセル)によってそれらのシグネチャを一致させることができます。初期段階では、VOPノードは
default
という名前の1個のシグネチャを持っています。 -
New Signature ボタンを使用することで、新しいシグネチャ(つまり、異なるタイプの引数と異なる出力のセットで大元のVEXコードをコールする新しい方法)を追加することができます。これは、上部の入力テーブルに新しい1個のコラムを、下部の出力テーブルに新しい 3個 のコラムを追加します。
-
シグネチャコラム内の1番目のセルはシグネチャ名です。2番目のセルはそのシグネチャに対する人が解読可能なラベルです。3番目のセルはそのシグネチャのシェーダ関数名ですが、そのシグネチャ用の特別な関数がない場合には空っぽのままにすることができます。これらのセルは、入力テーブル内のシグネチャコラムと出力テーブル内のそれに該当する1番目のシグネチャのコラムの両方で表示されます。テーブル内の名前またはラベルを編集すると、自動的にもう片方のテーブルが更新されます。
-
シグネチャシェーダ行には、VOPがそのシグネチャを持っている時に使用する特別なシェーダ関数名をオプションで指定することができます。一部のシェーダ言語はシェーダ関数名のオーバーロードが可能で(つまり、同じ名前の関数が異なるパラメータタイプを持つことができる)、その場合には、通常では、この行は空っぽのままにします。しかし、同じ名前の関数を許可しないシェーダ言語の場合、この行には、VOPのシグネチャ毎に別々のシェーダ関数名を指定することができます。
-
入力テーブルでは、シグネチャコラムの(NameとLabelとShaderの行の後の)行には、 そのシグネチャがアクティブになった時の 各入力のタイプが含まれています(ユーザは、ノードのパラメータインターフェースの上部にあるポップアップメニューからアクティブなシグネチャを選択します)。セルをクリックすれば、ポップアップメニューからタイプを選択することができます。
出力テーブルでは、1番目のシグネチャコラムの(NameとLabelの行の後の)行には、出力のタイプが含まれています。
-
特定のシグネチャに使用するデフォルトのパラメータを用意するには、入力と同じ名前の後にアンダースコアー(
_
)とシグネチャの名前を付けてパラメータを作成します。例えば、2つの入力としてcolorとmultiplierがあり、データタイプがvector4とfloatを持っていると仮定します。 2つのパラメータを作成して、名前をcolorとmultiplierにします。最初のパラメータがColorパラメータで、次が単一のFloatパラメータです。 multiplierをvector4に設定します。新しくシグネチャを作成して、名前をv4にします。 そのシグネチャーのmultiplierのデータタイプをvector4に変更します。新しいパラメータの名前は、multiplier_v4で、これは4つのfloatです。 これらのオペレータのどれかを作成する時、シグネチャをv4に設定すれば、VEX Builderはcolorとmultiplier_v4パラメータを使ってデフォルト値を用意します。
Helpタブ ¶
ユーザがパラメータエディタ内のオペレータタイプのノードのヘルプボタンをクリックすると、テキストフィールドの内容がヘルプブラウザに表示されます。
このヘルプをHTMLまたは単純だけど強力なwiki形式で記述することで、ネイティブのHoudiniヘルプと同様の見た目のドキュメントを作成することができます。 wiki形式のヘルプの記述の方法を参照してください。
Codeタブ ¶
このタブでは、Python SOP、VEXシェーダ、VOPオペレータ、他のコードベースのオペレータの実装に使用するコードを作成/編集することができます。
Scriptsタブ ¶
このタブには、アセットで必要となる任意のスクリプトとPythonモジュールだけでなく、アセットイベント(例えば、アセットのインスタンスを作成または削除した時)によって発動されるスクリプトを格納することができます。 このインターフェースはExtra Filesタブと非常に似ていますが、イベントスクリプトを指定するためのポップアップメニューが含まれています。
-
( Scripts タブの)スクリプト( Extra Files タブの)追加ファイルを同じ名前で作成 しないでください 。これら2つのタブは、一つのネームスペースを共有しているので、予期しない挙動になってしまう可能性があります。
-
Pythonイベントスクリプトの記述の方法に関する情報は、Scriptingの章のアセットイベントスクリプトの記述の方法を参照してください。
-
Houdiniがファイル名を必要とする箇所に埋め込みスクリプトを参照する方法は、埋め込みファイルの参照の方法を参照してください。
Note
リスト内の既存セクションをクリックすると、パネルの右下の領域に Section Source が表示されます。 これは、 Reload All Files ボタンを押した時にそのセクションからリロードされるディスク上のファイルです。 HDAにはファイルの内容だけでなく、そのディスク上のソースファイルのパスも保存されるので、1つ以上のディスク上のソースファイルを編集した後にHDA内ですべてのセクションを簡単に更新することができます。
スクリプトの追加と読み込み ¶
To... | Do this |
---|---|
新しいイベントスクリプトを起動する |
|
既存ファイルをイベントスクリプトとして読み込む |
ファイルのコピーがデジタルアセットに保存されます。 そのため、ディスクのファイルを変更しても、アセットのバージョンには何も影響を受けません。ファイルの変更を反映させるなら、ファイルを Scripts タブに再読み込みする必要があります。 |
イベントに反応してディスク上のモジュールから関数を実行する |
|
Pythonモジュールを追加する |
|
カスタムスクリプトを追加する |
|
Interactiveタブ ¶
このセクションには、アセットのインタラクティブコンテンツの定義と編集をするためのタブがいくつか含まれています。
State Script ¶
このタブを使用することで、このアセットに関連付けれているPython Viewerステートスクリプトを作成、編集、保存することができます。 アセットがロードされると、Houdiniは、Viewerステートを利用できるようにそのステートを登録します。 同様に、アセットがアンロードされると、そのViewerステートがHoudiniから登録解除されて、利用できなくなります。
To... | Do this |
---|---|
新しいViewerステートを作成する |
New… ボタンをクリックして、 Viewer State Code Generator ダイアログを開きます。 |
既存のViewerステートをクリアする |
Clear ボタンをクリックして、Pythonエディタをリセットします。 Clearボタンは、Python Viewerステートの登録と登録解除をするために使用される元々のコールバックもリセットします。 |
Viewer State Code Generator ¶
Viewer State Code Generator ダイアログでは、新しいViewerステートスクリプトを作成することができます。
Viewer State Code Generatorには、基本からもっと高度なViewerステート実装までを網羅した事前に定義されたサンプルが用意されています。
各サンプルには、クラス実装と必須のcreateViewerStateTemplate
コールバックが用意されています。
この結果のコードは、すぐにあなたのViewerステートを実装するのに役立ち、Python Viewerステートに関係する色々なAPI、バインド、イベントハンドラーの使い方を理解するのに助かります。 サンプルだけでなく、Viewer State Code Generatorは、いくつかのオプションを選択して、特定のイベントハンドラーのスケルトンコードを生成することができます。
Note
Viewer State Code Generatorダイアログは、コードを生成するためのツールであって、Pythonステートコードの編集を補助するツールではありません。 そのダイアログのオプションを入力して決定すると、コードが生成され、Pythonエディタにコピーされます。 Viewer State Code Generatorに戻ることはできないので、オプションを変更したら、必要に応じてコードを更新する必要があります。
To... | Do this |
---|---|
基本情報を入力する |
|
Samples の選択 |
Note いくつかのサンプルは、特定のノードコンテキストでのみ利用可能です。
例えば、 Stroke サンプルは、 |
Event Handlers の選択 |
|
Debug Context Menu の選択 |
|
新しいPython Viewerステートコードを生成する |
|
現在のコード生成をキャンセルする |
|
入力をリセットする |
|
Tip
HDAステートに関しては、デフォルトでは アセットノードタイプ の名前が ステート の名前として使用されます。 この方がわかりやすく、ステートとアセットを関連付けやすいです。 この ステート の名前は、 Node タブの Default State フィールドを入力するのに使用されます。 つまり、 Default State フィールドの内容が埋め込みステート名と同期しなくなることはありません。
生成されたコードは、以下のように Default State フィールドを使用します:
def createViewerStateTemplate(): state_typename = kwargs["type"].definition().sections()['DefaultState'].contents()
アセットノードタイプ の名前と異なるステート名を設定した場合、すべてのステート名とインストール済みのアセット名においてそのステート名は固有でなければならないことを忘れないでください。
( Default State フィールドの内容は、内部的に“Extra Files”セクション内でDefaultState
という名前で保存されるので、このメソッドをスクリプトで使用することで、それを読み込んだり、変更することができます。)
Shelf Tools ¶
このタブでは、このアセットに関係するシェルフツールを作成することができます。アセットが読み込まれると、このタブで定義したツールをユーザがシェルフに追加でき、ビューアタブに表示されます。
Note
このタブに定義した任意のツールは、アセットが利用できる時であっても自動的にシェルフに表示されるわけではありません。ユーザがシェルフ上でクリックして Edit Shelf Tab を選択して、利用可能ツールのリストからツールを選択することで、シェルフにツールを追加することができます。
アセットを作成する時、Houdiniは自動的にツールをこのタブに追加します。つまり、アセットのインスタンスを作成する汎用スクリプトを呼び出します。このツールのスクリプトを編集したり、またはシェルフツールを追加してアセットをインスタンス化する別の方法を設定することができます。 Create New をクリックして Tool を選択すれば、新しいツールが設定されます。
シェルフツールの作り方を参照してください。
Handle Bindingsタブ ¶
このタブ上のコントロールは、 ハンドル (3Dビューア内に表示される3Dユーザインターフェース)を作成し、そのハンドルの編集可能な部分をアセットのパラメータに紐付けることができます。 これによって、ユーザがアセットをビューア内でインタラクティブに制御することができます。 このアセットのインスタンスがアクティブになると、Handlesツールでこのハンドルが表示されます。
このペイン内のコントロールは、Persistent Handle Editor(持続ハンドルエディタ)と同じです。
Selector Bindingsタブ ¶
Note
このインターフェースは古いバージョンのHoudiniからの名残です。 これは、オブジェクトレベルのアセットでのみ動作し、HScriptコマンドにのみ対応しています。 選択を促す現代の方法は、シェルフツールのPythonツールスクリプト内に選択を埋め込むことです。
このタブは、おそらく将来のバージョンのHoudiniで消えます。
このタブでは、ノードを作成した時に、そのノードの適用先(オブジェクト/ジオメトリ)をユーザが選択できるように、(複数手順を含む)選択の工程をセットアップすることができます。 例えば、オブジェクトレベルのアセットの取り付け先にオブジェクトを選択するようにユーザに促すことができます。
Type フィールドは編集不可で、セレクターの基本タイプを反映します。 Name フィールドは英語名で、このセレクターをオペレータタイプに関して固有に定義するべきです。 Prompt フィールドは選択中に表示される文字列です。 Multiple Selection チェックボックスは、現在のセレクターで複数オブジェクト選択を許可するかどうか設定します。編集可能なテキストフィールドでは、オブジェクト選択がバインドされた時にユーザ定義スクリプトを実行することができます。入力オブジェクトは変数$argc
と$arg0, $arg1,..., $arg($argc-1)
によってアクセスします。$argc
は入力の数で、残りの変数は個々の入力オブジェクトを意味します。
現行ノードのパスを保持する変数はありません。しかし、pwd
HScriptコマンドを使えば現行ノードを取得することができます。
例えば、次のコードを実行することで、最初に選択した入力を現在のノードに接続することができます:
set curNode = `run("pwd")` opwire -n $arg0 -1 $curNode
Handle Script ¶
このタブを使用して、アセットと関連付けられたPythonビューアハンドルスクリプトを作成、編集、保存することができます。 そのアセットがロードされると、Houdiniは、そのビューアハンドルを登録して、Pythonビューアステートでそのハンドルを利用できるようにします。 同様に、そのアセットがアンロードされると、そのビューアハンドルはHoudiniから登録解除され、利用できなくなります。
To... | Do this |
---|---|
新しいビューアハンドルを作成する |
New… ボタンをクリックして、Viewer Handle Code Generatorダイアログを開きます。 |
既存のビューアハンドルをクリアする |
Clear ボタンをクリックして、Pythonエディタをリセットします。そのClearボタンは、Pythonビューアハンドルの登録と登録解除に使用されている大元のコールバックもリセットします。 |
ビューアハンドルのタイプ名を変更する |
Handle Name フィールドを編集します。 Apply または Accept のボタンをクリックして、そのビューアハンドルを新しいタイプ名で登録します。 |
Note
Viewer Handle Code Generator の Name フィールドは、デフォルトではその HDAノードタイプ の名前が設定されています。 スクリプトを生成した後にその Handle Name フィールドがその Viewer Handle Code Generator の Name 値で設定されます。 その Handle Name フィールド値は、HDA ViewerHandleName セクション内に保存されます。
Warning
以下は、Viewer Handle Code Generatorから生成された ビューアハンドル テンプレートのサンプルです:
def createViewerHandleTemplate(): handle_type = kwargs["type"].definition().sections()["ViewerHandleName"].contents() handle_label = "My Handle Label" handle_cat = [hou.sopNodeTypeCategory()] template = hou.ViewerHandleTemplate(handle_type, handle_label, handle_cat)
handle_type
には、HDAの ViewerHandleName セクションの内容が設定され、 ビューアハンドル のタイプ名は常に Handle Name フィールドと同期します。
このコード内で直接handle_type
の値を 変更しないでください 。 ビューアハンドル のタイプ名を変更する正しい方法は、 Handle Name フィールドを編集することです。
Extra Filesタブ ¶
-
“保存されていない”ファイル(エディタでファイルを変更、または、ファイルを新しく追加)は、セクションリスト内でアスタリスクが付きます。
To... | Do this |
---|---|
新しいファイルをアセット定義に追加する |
|
テキストファイルの内容を編集する |
|
バイナリファイルの内容を編集する |
|
ファイルを削除する |
|
埋め込みファイルを使用する |
Houdiniがファイル名を受け取る場所ならどこでも、代わりにアセット内の埋め込みファイルの参照を入力することができます。 例えば、アセットがテクスチャファイルのパスを受け取る時に、そのパラメータが空っぽの場合に代わりに埋め込みのデフォルトのテクスチャを使用させたいとします。 そのアセット内のノードが埋め込みのデフォルトのテクスチャファイルを参照するようにさせるには、以下のように参照を使用します: …ファイルパスの代わりに
|
Saveタブ ¶
Save Information From Node
これは、このウィンドウで Apply または Accept をクリックした時にアセットの内容を更新するためにHoudiniが使用する特定のノードインスタンスのパスを表示します(これは、右クリックして Type Properties を選択してこのウィンドウを開いた時のノードです)。
Save Contents and Parameters
これを無効にすると、このウィンドウで Apply または Accept をクリックした時に、このウィンドウに加えた変更がアセット定義に保存されますが、現行ノード(パラメータ値/デフォルトと内容)への変更はアセット定義の一部として保存 されません 。
正当な理由がない限りは、これを無効にしないでください。
Save Defaults as Initial Parameters
これを有効にしてノードタイプ定義を保存すると、現行ノードの デフォルト が新しいインスタンスの初期値として保存されます。 これを無効にしてノードタイプ定義を保存すると、現行ノードの 現行パラメータ値 が新しいインスタンスの初期値として保存されます。
Save Spare Parameters
これを有効にしてノードタイプ定義を保存すると、現行ノード上のSpareパラメータがノードタイプの一部として保存されるので、新しいインスタンスに同じSpareパラメータが追加されます。
Save Contents as Locked
決してこれを無効にしないでください。代わりに Unlock New Nodes on Creation を参照してください。
Unlock New Nodes on Creation
Houdiniがこのノードタイプの新しいインスタンスを作成した時、それらのインスタンスが自動的にロック解除(つまり、編集可)されます。 この機能は、サンプルファイルのために追加されました。サンプルアセットを配置した時に、そのノードの中に入ってノードをいじるためにロック解除する必要がありません。
ユーザがプロダクションで使用するアセットに対しては、これを常に無効にしてください。
Compress Contents
Gzipの方が速いのに対し、Bloscの方は圧縮率が良いですが若干遅いです。Gzipの解凍速度は今時のハードウェアでは実用的に気にならないので、通常ではNo Compressionを使う意味がありません。
Check for External Node References
アセットを保存した時に、そのアセット内の参照がアセット外のノードを参照していると警告を表示します。
Save Cached Code
このチェックボックスを有効にすると、Houdiniは、HDA内部にコンパイルしたVEXコードを保存し、ノードネットワークからそのコードを生成せずに、そのコンパイルされたVEXコードを使用します。
現在では、これは主にVOPノードを含むShader Builder SHOPに適用します。 従来では、Houdiniはノードを使って.vflソースコードを生成し、それをVEXにコンパイルしていました。 キャッシュ化したVEXコードを使うことで、Houdiniは複雑なシェーダで問題になる計算時間の短縮が可能になります。 また、同期させるHDAノードは、子ノードを作成してその中にVOPネットワークを構築する必要はありません(コードを生成する必要がないので)。 そのため、hipファイルを読み込む時にノードネットワークをスキップできるので時間が節約されます。
Always Synchronize/Load Contents
HDAの遅延同期が有効になっている場合、ノードは即座にそのHDAの内容と同期されません。 一部のタイプのノード(特に、エクスポートする組み込みCHOPネットワークを含んだノード)は、即座に同期させないと適切に動作させることができません。 これを有効にすると、このノードは遅延同期設定を無視し、代わりに常にHDAの内容を同期します。