Houdini 18.0 リファレンス ウィンドウ

Operator Type Propertiesウィンドウ

Type Propertiesウィンドウは、デジタルアセットノードタイプのメタデータとパラメータインターフェースを編集することができます。

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

単一パラメータをプロモートさせる

  1. Type Propertiesウィンドウを開いて、 Parameters タブをクリックします。

  2. パラメータエディタでプロモートさせたいパラメータを持つノードを選択します。

  3. パラメータエディタからパラメータをType Propertiesウィンドウの Existing Parameters ツリー上にドラッグします。

プロモートさせるパラメータを探す

パラメータのドラッグアンドドロップの方法以外にも、Type Propertiesウィンドウからパラメータを探すことができます。

  1. Parameters タブの Create ParametersFrom Nodes サブタブをクリックします。

  2. このツリーコントロールは、現行シーン内のすべてのノードを表示し、各ノードの中では、そのノードのパラメータすべてが表示されます。プロモートさせたいパラメータを探します。

  3. 左側のツリーからパラメータを中央の Existing Parameters ツリー上にドラッグします。

    または

    From Nodes からパラメータを選択して、 移動ボタンをクリックして右側にそれを移動させます。

    または

    From Nodes 内のパラメータを右クリックして Install Parameters をクリックします。

ゼロからパラメータを作成する

  1. Create ParametersBy Type タブをクリックします。

  2. 追加したいパラメータのタイプを探して、そのパラメータを Existing Parameters にドラッグして、それをパラメータインターフェースに追加します。

    または

    By Type からパラメータを選択して、 移動ボタンをクリックして右側にそれを移動させます。

ボタンパラメータを作成する

ボタンパラメータは、ノードのパラメータインターフェースにボタンを追加することができます。ユーザがこのボタンをクリックするとPythonスクリプトが実行されます。

  1. Create ParametersBy Type タブをクリックします。

  2. By Type タブからButtonを Existing Parameters ツリーにドラッグします。

  3. Parameter DescriptionParameter サブタブで、名前やラベルといったそのパラメータのコントロールをセットアップします。

    • Button Icon を指定することで、テキストボタンの代わりにアイコンボタンを作成することができます。

  4. Callback Script フィールドの右側にあるアイコンメニューをクリックして、それをPythonに設定します。

  • Python Callbackコードを1行で書くことができるのであれば、そのコードを直接 Callback Script フィールドにタイプすることができます。例えば、以下のコールバックは、ユーザがボタンをクリックした時に単にメッセージを表示します:

    hou.ui.displayMessage("Hello!")
    
  • 複数行のコードの場合、ディスク上ノードのPythonモジュール内シーンファイルのセッションモジュール内などの他のどこかにコールバック関数を記述します。

    次に、 Callback Script フィールドには、その関数をコールするためのコードを記述します。例えば、以下のコードは現行アセットのPythonモジュール内の関数をコールします:

    kwargs["node"].hdaModule().my_function()
    

    (色々な場所からPythonコードをコールする方法を参照してください。)

    作成した関数が現行ノードやパラメータオブジェクトなどの情報を必要とする場合、その情報をまるごとkwargs辞書に渡すことで、その関数はその辞書から情報を取得することができます。例:

    kwargs["node"].hdaModule().my_function(kwargs["node"], kwargs["parm"])
    

kwargsに関する情報は、Parameter Callback Scriptを参照してください。

ポップアップメニューパラメータを作成する

  1. Create ParametersBy Type タブをクリックします。

  2. String またはIntegerのどちらかのパラメータを追加します(上記のゼロからパラメータを作成する方法を参照してください)。パラメータタイプは、ポップアップメニューから取得する値のタイプを制御します。

  3. Parameter DescriptionParameter サブタブで、名前やラベルなどのパラメータのコントロールをセットアップします。

  4. Menu サブタブで、 Use Menu を有効にします。これがIntegerパラメータの場合には、 Use Menu Item Token as Value を有効にします。

  5. メニュー項目をセットアップします(Menuサブタブのヘルプを参照してください)。メニュー項目のリストを手動でセットアップするか、または、ユーザがメニューをクリックする度に動的にメニュー項目を生成したいのであれば、スクリプトを記述することもできます。

スクリプトまたはチャンネル参照でパラメータの値を読み込むと、現在選択されているメニュー項目の"トークン"が得られます。 さらに、パラメータコールバックスクリプトをセットアップすることで、ユーザがメニュー項目を選択する度に何かしらの処理をさせることができます。

Tip

ユーザがタイプ入力するフィールドで且つ候補値を選択可能なメニューボタンも持つパラメータをセットアップすることもできます。 詳細は、Menuサブタブのヘルプを参照してください。

ボタンストリップ(一帯のボタン)またはアイコンストリップ(一帯のアイコン)のパラメータを作成する

  1. Create ParametersBy Type タブをクリックします。

  2. Button StripまたはIcon Stripのどちらかのパラメータを追加します(上記のゼロからパラメータを作成する方法を参照してください)。ボタンストリップはテキストラベルを持っているのに対し、アイコンストリップはテキストの代わりにアイコンを表示します。

  3. Parameter DescriptionParameter サブタブをクリックし、名前やラベルなどのパラメータのコントロールをセットアップします。

  4. Menu サブタブをクリックします。

  5. メニュー項目をセットアップします(Menuサブタブのヘルプを参照してください)。

    • ボタンストリップに関しては、(スクリプトでParmTemplate.menuItemsを使ってトークンのリストにアクセスすることができますが)Tokenは使用されません。Labelは、このストリップ内のボタン上のラベルです。

    • アイコンストリップに関しては、Tokenにアイコンファイルの参照を入れます。Labelは、ユーザがマウスカーソルをアイコン上に置いた時に表示されるツールチップとして使用されます。

  6. ボタンを相互に排他させるには、上部にあるポップアップメニューを"Normal"に設定します。ユーザが複数のボタンを有効にできるようにするには、そのポップアップメニューを"Toggle"に設定します。

    例えば、"Low", "Medium", "High"のオプションを持つ"Quality"ボタンストリップを作成したいとします。これらのボタンは相互に排他的なので、ポップアップメニューを"Normal"に設定します。

    その一方で、"Bold", "Italics", "Underline"のオプションを持つ"Style"ボタンストリップを作成したいとします。この場合、ユーザに各オプションを個々に有効/無効にさせたいので、ポップアップメニューを"Toggle"に設定します。

スクリプトまたはチャンネル参照でパラメータの値を読み込む時:

パラメータコールバックスクリプトをセットアップすることで、ユーザがストリップ内のボタンをクリックする度に何かしらの処理をさせることもできます。

Tip

"Toggle"スクリプトを作成し、そのコールバックスクリプトによって、ボタンがクリックされる度に選択した項目を無効にさせれば、そのボタンストリップはオプション設定というよりもアクションボタンのツールバーのような挙動になります。

Importブロック

ローレベルアセットから構築されたハイレベルアセットを使った複雑なアセットを開発している時、そのローレベルアセットからパラメータのブロックまるごとあなたが作成しているハイレベルアセット上にプロモートさせたいことがあります。 しかし、ローレベルのパラメータの編集を継続できるようにしつつ、毎回それらのパラメータを再度プロモートさせたくありません。

Importブロック は、パラメータのブロックをプロモートさせて、そのプロモート先の場所を覚えさせることができるので、オリジナルのパラメータを変更するとプロモートしたパラメータを自動的に更新させることができます。

To...Do this

パラメータのブロックを単一ユニットとしてプロモートさせる

  1. アセット内のノードからパラメータのフォルダをプロモートします。

    (UI内のタブ、グループボックス、折り畳み可能なセクションすべてが、パラメータツリーではフォルダとして表現されています。)

  2. Parameter Description で、 Import Settings を有効にします。

これによって、オリジナルフォルダの内容の変更を反映したい時は、そのプロモートしたフォルダを右クリックして、 Refresh Imports を選択することができるようになります。

パラメータタイプ

Tip

"メニュー"というパラメータタイプはありません。 ユーザにポップアップメニューから値を選択させたいのであれば、IntegerまたはStringのパラメータを作成してから、 Parameter DescriptionMenu サブタブのコントロールを使って、メニューの候補値をセットアップします。

Angle

角度を度で表現した単一float。古いバージョンのHoudiniでは今とは異なるUIでしたが、その過去のバージョンのパラメータは使用されなくなりました。

Button

クリック可能なボタン。ユーザがこのボタンをクリックした時に実行するスクリプトを入力することができます。

Button Strip

水平に並んだラベル付きのボタン群。これらのボタンを相互に排他的、または、個々の設定にすることができます。 上記のButton Stripパラメータの作成方法Button Stripコールバックの記述の方法を参照してください。

Color

値をカラーとして編集するUIを持った3成分のfloatベクトルパラメータ。チャンネルは、123の代わりにrgbの接尾辞を使用します。

Color and Alpha

値をアルファチャンネル付きのカラーとして編集するUIを持った4成分のfloatベクトルパラメータ。チャンネルは、1234の代わりにrgbaの接尾辞を使用します。

Data

任意のバイナリデータを格納します。このパラメータはUIを持っていないので、スクリプトを使って値を読み書きする必要があります。 これは、ノードインスタンス上にデータをスタッシュ(貯蔵)させるのに役立ちます。 例えば、これはStroke SOPがストロークのデータを格納する方法として使われています。

The Data parameter type can use the following tags:

sidefx::save_value

If this is 0 or false, the value of the data parameter is not saved to the hip file, nor is that data saved when you copy/paste the node. This is useful, for example, if you are caching heavy data such as a Geometry detail and don’t want to save the cache.

Your node must be able to handle the data parameter being empty when the node is loaded, since the contents are not saved.

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。チャンネルは、12の代わりにminmaxの接尾辞を使用します。 このタイプのパラメータを持つノードは、16.0より前のバージョンのHoudiniでは読み込まれません

Min/Max Integer

最小値と最大値を表現した2個のinteger。チャンネルは、12の代わりにminmaxの接尾辞を使用します。 このタイプのパラメータを持つノードは、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の接尾辞を使用します。

パラメータタグ

"Tags" let you attach arbitrary key/value data to the parameter template. You can access this data using hou.ParmTemplate.tags(). Some tags are recognized and used by different parameter types. You can also use them to store your own per-parameter hidden data.

Tags are used by the 3D viewer to signal when a parameter should be treated as an OpenGL value. For example, attaching the "OpenGL → Diffuse" tag to a parameter on a material node makes the 3D viewer treat that parameter’s value as the diffuse color when displaying the surface.

  • The tags are listed in a table in the "Parameter description" sub-pane on the right, when you select a parameter from "Existing Parameters" list in the middle.

  • Click Built in tags below the tag table to choose from a tree of different tags recognized by Houdini, including the OpenGL tags.

  • Some parameters may have internal tags attached to them which store options for the parameter’s look and behavior. These internal tags are not editable in the tag list.

  • Tag names must be unique within each parameter.

  • You can use the Key-Value Dictionary parameter type to add a tag-like editing interface to your own digital assets.

共通設定

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の構文を参照してください。

Tags

上記のタグを参照してください。

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(質量)

kg1

Time(時間)

s1

Velocity(速度)

m1s-1

Angular Velocity(角速度)

s-1

Acceleration(加速度)

m1s-2

Angular Acceleration(角加速度)

s-2

Force(力)

kg1m1s-2

Force Density(流体の単位体積あたりの力)

kg1m-2s-2

Impulse(力積)

kg1m1s-1

Torque(回転モーメント)

kg1m2s-2

Drag(抗力)

kg1s-1

Angular Drag(角抗力)

kg1m2s-1

Pressure(圧力)

kg1m-1s-2

Spring Constant(スプリング定数)

kg1s-2

Linear Density(線密度)

kg1m-1

Area Density(面密度)

kg1m-2

Volume Density(体積密度)

kg1m-3

Size

TypeInteger , 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

タブとして表示します。パラメータツリー内の複数の隣接"タブ"フォルダがパラメータエディタ内でタブセットとして表示されます。

Radio Buttons

ラジオタブセットで選択されているタブに応じてノードの処理を変更することができるタブとして表示します。

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ブロックを参照してください。

Source

Import Settings が有効な時に、このフォルダが内容をインポートするファイルまたはノードの参照。

Token

Import Settings が有効な時に、ノード/ファイルからインポートするアイテムの参照。

Mask

Import Settings が有効な時に、このパターンに合致したパラメータのみをインポートします。

ランプの設定

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ボタンをオンにすると、そのチャンネルは、リンクされたチャンネルから値を取得するようになります。

Importサブタブ

Houdiniは、Importブロックを更新する時に使用するパラメータのプロモート元に関する情報をここに記録しています。 意図的に処理したい場合を除いて、この情報を編集しないでください。

Action Buttonサブタブ

一部のパラメータでは、パラメータエディタのこのフィールドの右側に任意のスクリプトを実行する小さなボタンを表示させることができます。

Houdiniの他のパーツとは違い、これにはアクションボタンの表示を制御するチェックボックスがありません。 代わりに、このタブのスクリプトエディタが空っぽならアクションボタンが表示されず、何か記述されていれば、アクションボタンが表示されます。

このスクリプトが1行なら、Pythonエクスプレッションと見なされて評価されます。2行以上なら、関数のボディとして扱われます。

このスクリプトは、以下のキーを含んだグローバルのkwargs辞書変数を持った環境で実行されます:

"node"

現行ノードのhou.Node参照。

"parmtuple"

パラメータのhou.ParmTuple参照。

"script_multiparm_index"

アクションボタンを持つパラメータがMultiparmのインスタンスだった場合、これは、そのインスタンスを特定するための(0から始まる)番号です。 例えば、Multiparmに3つのインスタンスがあり、2番目のインスタンスのアクションボタンをクリックすると、これは1です。パラメータがMultiparmでない場合は、これは-1です。

"ctrl", "shift", "command", "alt"

指定した修飾キーを押したままユーザがボタンをクリックすると、それに該当する値が1に、それ以外の値が0になります。 これを使用することで、修飾キーに基づいてスクリプトが実行するアクションを変更することができます。

Operator Pathパラメータに対する以下のアクションボタンスクリプトは、選択ダイアログを開いて、ユーザがオブジェクトノードを選択するまで待ち、そして、そのノードのパスをパラメータに格納します。 ユーザがアクションボタンをShiftクリックすると、選択ダイアログは、カメラのみを、Ctrlクリックすると、ライトのみを選択するように制限されます。

# 現行パラメータの参照を取得します。
parm = kwargs["parmtuple"]

# 選択ダイアログのデフォルトとして使用するパラメータの現行値を取得します。
# このメソッドはタプルを返すので、そのタプル内の1番目の項目(のみ)を取得しています。
path = parm.evalAsStrings()[0]
node = hou.node(path)

# 修飾キーをチェックして、フィルターを設定します。
if kwargs["shift"]:
    nodetype = hou.nodeTypeFilter.ObjCamera
elif kwargs["ctrl"]:
    nodetype = hou.nodeTypeFilter.ObjLight
else:
    nodetype = hou.nodeTypeFilter.Obj

# ユーザにノードを選択させます。
newpath = hou.ui.selectNode(initial_node=node, node_type_filter=nodetype)

# パラメータ値を設定します(これもParmTupleなので、1個の項目をタプルとして設定する必要があります)。
parm.set( (newpath, ) )

Disable When/Hide Whenの構文

他のパラメータの値に基づいてパラメータを動的に表示または有効にしたいことが多々あります。 例えば、いくつかの機能を有効にするチェックボックスを持たせた場合、そのチェックボックスが有効な時にその機能に関係するパラメータだけを編集できるようにしたいです。

パラメータの Disable WhenHide 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 GeneratorVOP COP2 Filter), cvex(コンテキストに依存しない: 例えば、Attribute VOP, Point VOP)。

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ネットワークの出力がそれです。

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のファイルによって実装されている場合には、これを有効にします。

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番目のセルはそのシグネチャに対する人が解読可能なラベルです。これらのセルは、入力テーブル内のシグネチャコラムと出力テーブル内のそれに該当する1番目のシグネチャのコラムの両方で表示されます。テーブル内の名前またはラベルを編集すると、自動的にもう片方のテーブルが更新されます。

  • 入力テーブルでは、シグネチャコラムの(NameとLabelの行の後の)行には、 そのシグネチャがアクティブになった時の 各入力のタイプが含まれています(ユーザは、ノードのパラメータインターフェースの上部にあるポップアップメニューからアクティブなシグネチャを選択します)。セルをクリックすれば、ポップアップメニューからタイプを選択することができます。

    出力テーブルでは、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がファイル名を必要とする箇所に埋め込みスクリプトを参照する方法は、埋め込みファイルの参照の方法を参照してください。

スクリプトの追加と読み込み

To...Do this

新しいイベントスクリプトを起動する

  1. Event Handler ポップアップメニューからイベントタイプを選択します。

    • イベントタイプを選択すると、Houdiniは自動的にスクリプトを適切な名前で作成します。

    • "Custom Script"を選択すると、Houdiniは、名前が入力されるのを待ちます。 Section Name フィールドに名前を入力してから Add Empty Section をクリックします。

  2. エディタを使ってスクリプトを記述します。

既存ファイルをイベントスクリプトとして読み込む

  1. Event Handler ポップアップメニューからイベントタイプを選択します。

    イベントタイプ( Custom Script 以外)を選択すると、スクリプトの"セクション"がまだ存在していなければ、それが作られます。

  2. Filename フィールドに、読み込むスクリプトファイルのファイル名を入力します。

  3. Add File をクリックします。

ファイルのコピーがデジタルアセットに保存されます。 そのため、ディスクのファイルを変更しても、アセットのバージョンには何も影響を受けません。ファイルの変更を反映させるなら、ファイルを Scripts タブに再読み込みする必要があります。

イベントに反応してディスク上のモジュールから関数を実行する

  1. HoudiniのPythonパスにモジュールを通します。Pythonシェルで、以下のコマンドで出力されたリストの中に、そのモジュールの親ディレクトリが含まれているかチェックします:

    >>> import sys
    >>> sys.path
    
  2. Operator Typeウィンドウでイベントハンドラーを作成し、そのモジュール内のコードをコールするイベントハンドラーを記述します。

    例えば、スタジオで広く使用されているcompanyutilsというモジュールがあったとします。以下のようにモジュール内のコードをコールするだけのイベントハンドラーを記述することができます:

    import companyutils
    
    companyutils.creation_handler(kwargs)
    

    コールする関数にkwargsグローバル(Houdiniがハンドラースクリプトに対して用意します)を渡したいことでしょう。 kwargsに関する詳細は、アセットイベントハンドラーを記述する方法を参照してください。

Pythonモジュールを追加する

PythonModuleセクションはアセットに関係するPythonの値、クラス、ファンクションの中心の役割になります。他の埋め込みファイルと比べて特徴的なのは、node.hdaModule()メソッドによって値が返されることです。 これはスクリプトでアクセスするのに便利です。

  1. Event Handler をクリックして Python Module を選択します。

  2. 以下のどれかを行ないます:

    • ディスク上にモジュールとして読み込みたいファイルがあれば、 Filename フィールドを入力して、 Add File をクリックします。

    • ペインの右側のエディタを使ってモジュールを記述します。

カスタムスクリプトを追加する

  1. Event Handler をクリックして Custom Script を選択します。

  2. スクリプトの Section Name を入力します。これを使ってHoudini内でカスタムスクリプトを参照します。

  3. 以下のどれかを行ないます:

    • ディスク上にカスタムスクリプトとして読み込みたいファイルがあれば、 Filename フィールドを入力して、 Add File をクリックします。

    • エディタでゼロからスクリプトを作成したいなら、 Add Empty Section をクリックします。

Interactiveタブ

This section contains several tabs for defining and editing the interactive content of the asset.

Viewer State

Use this tab to create, edit and store a python viewer state script associated to this asset. When the asset is loaded, Houdini registers the viewer state to make it available for use. Likewise, when the asset is unloaded, the viewer state is unregistered from Houdini and no longer available for use.

To...Do this

Create a new viewer state

Click the New… button to open the Viewer State Code Generator dialog.

Clear an existing viewer state

Click the Clear button to reset the python editor. The Clear button will also reset the underlying callbacks used for registering and unregistering the python viewer state.

Viewer State Code Generator

The Viewer State Code Generator dialog lets you create a new viewer state script. The code generator provides pre-defined samples, ranging from basic to more complete viewer state implementations. Each sample provides a class implementation and the mandatory createViewerStateTemplate callback function.

The resulting code should help you implement your viewer state in no time and help you understand better how the different API, bindings and event handlers involved in a python viewer state can fit together. Along with samples, the code generator lets you choose from several options to generate the skeleton code of specific event handlers.

Note

The code generator dialog is a tool for generating code, it’s not a tool to assist you in editing your python state code. Once you enter and accept the dialog options, the code is generated and copied into the python editor. You cannot go back to the code generator, change options and expect your code to update accordingly.

To...Do this

Enter basic information

  1. Enter the viewer state name in the Name field. This field is mandatory, if omitted an error message will popup.

  2. Optionally, enter a Label, Description and Icon for the new viewer state. If omitted, the label and description will be inferred from the viewer state name field. If the icon is omitted, the asset’s operator icon is used as the viewer state icon.

Select a Sample

  • Blank: Python state skeleton code with an empty class implementation. This is the default sample.

  • Complete: Python state class implementation with all available event handlers.

  • Handle: Python state class implementation with handle bindings and event handlers.

  • Parameters: Python state class implementation with state parameter bindings.

  • Drawable: Python state class implementation with event handlers for drawing text and geometry drawables.

  • Menu: Python state class implementation with menu bindings and event handlers.

  • Keyboard: Python state class implementation with keyboard event handlers.

  • Selection: Python state class implementation with selector bindings and selection event handlers.

  • Drag & Drop: Python state class implementation with drag and drop event handlers.

  • Stroke: Python state class implementation to demonstrate how to derive from the sidefx_stroke.StrokeState class for handling stroke interactions.

Note

Some samples are only available in specific node contexts. For instance the Stroke sample is available for the SOP context but not for others.

Select Event Handlers

  • Select one of the Event Handler options if you wish to customize the selected sample code.

Select Debug Context Menu

Generate the new python viewer state code

  • Click the Accept button to generate and copy the new code over to the python editor.

  • If a python viewer state is currently loaded in the editor, Houdini will popup a dialog asking if you want to overwrite it or cancel the new viewer state.

  • The new python state will be loaded and listed in the Viewer State Browser tree.

Cancel the current code generation

  • Click the Cancel button to cancel the code generation task.

Reset the input

  • Click the Clear button to reset the dialog input including the python state name, sample, event handlers, etc…

Tip

For HDA states, the asset node type's name is used as the state's name by default. This is clean and makes it easy to associate the state with the asset. The state's name is then used to fill in the Default state field on the Node tab. This means the contents of the Default state field would never be out-of-sync with the embedded state name.

The generated code uses the Default state field like this:

def createViewerStateTemplate():
    state_typename = kwargs["type"].definition().sections()['DefaultState'].contents()

If you set a state name different than the asset node type's name, remember that it must be unique across all states and installed asset names.

(The contents of the Default state field are stored internally in an "extra files" section named DefaultState, so you can read it or even change in a script using this method.)

Shelf Tools

このタブでは、このアセットに関係するシェルフツールを作成することができます。アセットが読み込まれると、このタブで定義したツールをユーザがシェルフに追加でき、ビューアタブに表示されます。

Note

このタブに定義した任意のツールは、アセットが利用できる時であっても自動的にシェルフに表示されるわけではありません。ユーザがシェルフ上でクリックして Edit Shelf Tab を選択して、利用可能ツールのリストからツールを選択することで、シェルフにツールを追加することができます。

アセットを作成する時、Houdiniは自動的にツールをこのタブに追加します。つまり、アセットのインスタンスを作成する汎用スクリプトを呼び出します。このツールのスクリプトを編集したり、またはシェルフツールを追加してアセットをインスタンス化する別の方法を設定することができます。 Create New をクリックして Tool を選択すれば、新しいツールが設定されます。

シェルフツールの作り方を参照してください。

Handlesタブ

このタブ上のコントロールは、 ハンドル (3Dビューア内に表示される3Dユーザインターフェース)を作成し、そのハンドルの編集可能な部分をアセットのパラメータに紐付けることができます。 これによって、ユーザがアセットをビューア内でインタラクティブに制御することができます。 このアセットのインスタンスがアクティブになると、Handlesツールでこのハンドルが表示されます。

このペイン内のコントロールは、Persistent Handle Editor(持続ハンドルエディタ)と同じです。

Selectorsタブ

Note

このインターフェースは古いバージョンのHoudiniからの名残です。 これは、オブジェクトレベルのアセットでのみ動作し、HScriptコマンドにのみ対応しています。 選択を促す現代の方法は、シェルフツールのPythonツールスクリプト内に選択を埋め込むことです。

このタブは、おそらく将来のバージョンのHoudiniで消えます。

このタブでは、ノードを作成した時に、そのノードの適用先(オブジェクト/ジオメトリ)をユーザが選択できるように、(複数手順を含む)選択の工程をセットアップすることができます。 例えば、オブジェクトレベルのアセットの取り付け先にオブジェクトを選択するようにユーザに促すことができます。

Type フィールドは編集不可で、セレクターの基本タイプを反映します。 Name フィールドは英語名で、このセレクターをオペレータタイプに関して固有に定義するべきです。 Prompt フィールドは選択中に表示される文字列です。 Multiple Selection チェックボックスは、現在のセレクターで複数オブジェクト選択を許可するかどうか設定します。編集可能なテキストフィールドでは、オブジェクト選択がバインドされた時にユーザ定義スクリプトを実行することができます。入力オブジェクトは変数$argc$arg0, $arg1,..., $arg($argc-1)によってアクセスします。$argcは入力の数で、残りの変数は個々の入力オブジェクトを意味します。

現行ノードのパスを保持する変数はありません。しかし、pwdHScriptコマンドを使えば現行ノードを取得することができます。

例えば、次のコードを実行することで、最初に選択した入力を現在のノードに接続することができます:

set curNode = `run("pwd")`
opwire -n $arg0 -1 $curNode

Extra Filesタブ

  • "保存されていない"ファイル(エディタでファイルを変更、または、ファイルを新しく追加)は、セクションリスト内でアスタリスクが付きます。

To...Do this

新しいファイルをアセット定義に追加する

  1. File Name フィールドにファイル名を入力するか、そのフィールドの隣にある + ボタンをクリックしてファイルを選択します。

  2. Section Name はHDA内部でのファイルの名前です。デフォルトは、ファイルの名前(つまり、パスと拡張子を除いたファイル名)です。HDA内で別の名前に編集することができます。

  3. Add File をクリックします。

テキストファイルの内容を編集する

  1. セクションリストのファイルを選択すると右側のテキストエディタにその内容とセクションのサイズとタイムスタンプが表示されます。

  2. テキストエディタで内容を編集します。

  3. Apply をクリックします。

バイナリファイルの内容を編集する

  1. セクションリストでファイルを選択します。

  2. 右下にある Save As File をクリックすると、ディスク上のファイルとしてセクションの内容を保存することができます。

  3. 保存したファイルを編集します。

  4. Add File を使ってファイルをHDAに同じセクション名で追加すれば、古いバイナリを置き換えることができます。

ファイルを削除する

  • セクションリストのファイル名の隣のXボタンをクリックします。

埋め込みファイルを使用する

Houdiniがファイル名を受け取る場所ならどこでも、代わりにアセット内の埋め込みファイルの参照を入力することができます。 例えば、アセットがテクスチャファイルのパスを受け取る時に、そのパラメータが空っぽの場合に代わりに埋め込みのデフォルトのテクスチャを使用させたいとします。 そのアセット内のノードが埋め込みのデフォルトのテクスチャファイルを参照するようにさせるには、以下のように参照を使用します:

…ファイルパスの代わりに

opdef:.?default_texture.jpg

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ファイルを読み込む時にノードネットワークをスキップできるので時間が節約されます。

ウィンドウ