Houdini 20.5 ネットワークとパラメータ

レシピ: ノードとパラメータのプリセットを保存してそれを再生成する方法

パラメータ設定とノードグループを保存して、それらを必要な時に再生成する方法。

On this page

概要

Houdiniでは、パラメータ値のセット、ネットワークアイテム(ノード、ドット、ステッキーノート、ネットワークボックス)のセットを、名前が付いた レシピ として保存することができます。 レシピに保存すれば、必要な時にいつでもそれらのパラメータ値を適用したり、それらのノードを再生成することができます。

3種類のレシピを作成することができます: パラメータプリセットツールデコレーション

レシピはアセットとして保存され、そのアセットカテゴリはSopLopなどの通常のノードタイプカテゴリではなく、特別なDataカテゴリになっています。

ノードプリセットを保存する方法

ノードのパラメータ値のセット、さらには、Spareパラメータ値までもレシピとして保存することができ、そして、その保存されたパラメータ値を他のノードに適用することができます。 後でそれらの値すべてを一度に設定したいとなった時に、既存のノードにそのプリセットを適用することができます。

オプションで、ノードの 中身 をレシピの一部として保存することもできます。 これは、例えば、Pyro Solver SOPのDive Targetコンテキスト内の中身をレシピとして保存してそのレシピを適用すれば、ノードに特定のパラメータが設定され、さらにDOPネットワークも入力されるようになるので便利です。

Note

このタイプのレシピは、 既存ノード のパラメータ値と可能であればその中身までを 変更 するためのものです。 特定のパラメータ値と中身を持つ特定のタイプのノードを配置するだけの手段が必要な場合、代わりにツールレシピを使用します(以下参照)。

Spareパラメータをプリセットの一部として保存した場合、そのプリセットを適用すると、それらのSpareパラメータがまだ存在していなければ、ターゲットノード上にそれらのパラメータが作成されます。

To...Do this

パラメータ値をプリセットとして保存する

  1. パラメータエディタで、保存したいパラメータをセットアップします。

  2. パラメータエディタの右上にある Recipeメニューから Save Node Preset を選択します。

    または

    ネットワークエディタ内で、ノードを右クリックして Recipes ▸ Save Node Preset を選択します。

  3. 表示されたダイアログ内で、チェックボックスを使用して、プリセットに取り込みたいパラメータを選択します。

    このダイアログの最初の状態では、デフォルト値でないすべてのパラメータと、すべてのSpareパラメータにチェックが付いています。

    • 一部のノードタイプでは、ノードの初期状態でオリジナル値になっている“非デフォルト”のパラメータもデフォルトでチェックが付いて表示される場合があります。 例えば、Sphereサーフェスノード生成スクリプトがPrimitive Typeを実際のデフォルト値から Polygon Mesh に変更するようになったしょうもない歴史的理由により、そのパラメータが常に最初から“非デフォルト”になっています。 これは残念なことですが、プリセットの一部として保存したくない場合は、ただチェックマックをオフにすれば良いだけです。

    • Spareパラメータはデフォルトでチェックが付き、オブジェクトノードのMantraレンダープロパティは技術的にはSpareパラメータなので、オブジェクトノードのプリセットを保存する場合、すべてのレンダープロパティが最初からチェックが付きます。 Render フォルダのチェックを外せば、すべての子のチェックが外れるので、その後に実際に保存したいパラメータのチェックを付け直すと良いです。

  4. デフォルトでは、プリセットには、選択したパラメータのキーフレームアニメーションとエクスプレッションが含まれます。代わりに現行値だけを保存したいのであれば、 Capture Keyframes and Expressions のチェックを外してください。

  5. Preset Options セクション内の Preset Title にプリセットタイトルを入力します。

  6. Show for ポップアップメニューを使用して、そのプリセットを適用できるようにしたいノードタイプを選択します。 デフォルトでは、ソースノードタイプにのみそのプリセットが表示されます。 現在のノードタイプカテゴリに属するすべてのノード、または、パターンにマッチしたすべてのノードタイプでプリセットが表示されるように選択することができます。 詳細は、ターゲットノードパターンを参照してください。

  7. Save to メニューのデフォルト( User Preferences )は、ユーザプリファレンスディレクトリ内のアセットライブラリにすべてのレシピが保存されます。通常はこれで十分です。 しかし、既存のアセットにレシピを埋め込みたい場合、または、レシピを共有して使いたい場合(大規模スタジオの場合)、プリセットの保存先と内部名を変更することができます。

Tip

パラメータエディタペイン内でパラメータを編集した場合、 Reload Values をクリックすることで、ダイアログをその新しい値で更新することができます。

パラメータプリセットをノードに適用する

  • ノードを選択してから、パラメータエディタ内の Recipesメニューから、適用したいプリセットを選択します。

    または

  • ネットワークエディタ内で、ノードを右クリックして Recipes サブメニューを開き、そのノードに適用したいプリセットを選択します。

既存のパラメータプリセットを編集する

  1. メインメニューから Windows ▸ Recipe Manager を選択します。

  2. 編集したいレシピを選択して、 Edit Contents ボタンをクリックします。

    Houdiniは、パラメータを取り込んだ元のノードタイプのインスタンスを作成し、そのインスタンスにプリセットを適用し、そのインスタンスに対してプリセットエディタを開きます。 その後に、パラメータ値を編集したり、ダイアログ内で設定(プリセットのタイトルなど)を変更することができます。

  3. Save ボタンをクリックすると、新しい値でプリセットが保存されます。

以下のプリセットを編集する方法を参照してください。

ツールレシピを保存する方法

ツールレシピ は、ノードまたはノードセット(接続と現行パラメータ値を含む)を、Tabメニューの新しいツールとして保存します。 保存した後は、Tabメニューからそのツールを選択することで、その保存されたノードセットアップを再生成することができます。

To...Do this

ノードまたはノードセットをツールとして保存する

  1. ツールにしたいノード(s)を選択します。

  2. 選択したノードのどれかを右クリックして、 Recipes ▸ Save Selected Items as Tool を選択します。

    右クリックしたノードがレシピの“アンカー”ノードになります。 そのレシピをネットワークに“配置”すると、他のノードは、このアンカーノードを基準に配置されます。 ダイアログ内でこの“アンカー”となるノードを編集することができます が、右クリックしたノードをアンカーとして指定できるのは便利です。

  3. 単一ノードを配置する通常のTabメニューツールと同様に、ユーザはTabメニューからレシピを選択して、それを既存のワイヤー上に配置したり、新しいワイヤーで始めてTabメニューを使用してレシピツールを選択してそのツールを接続することができます。 レシピ内に“入力”や“出力”として使用したいノードを設定することができます。詳細は、ワイヤーの制御を参照してください。

  4. そのツールがTabメニューで表示されるサブメニューを選択することができます。 Tab Submenu フィールドの右側にあるドロップダウンメニューから既存のサブメニューを選択するか、または、そのフィールドに新しい名前を入力して新しいサブメニューを作成します。

    複数のメニューラベルをカンマ(,)区切りで入力することで、そのツールを複数のサブメニューに表示させることができます。 例えば、File IO, Recipesは、Tabメニューの File IORecipes のサブメニューの両方にそのツールが表示されます。

  5. Tabメニューのツール名の横に表示されるアイコンを選択することができます。これは、デジタルアセットのアイコンを設定する方法と同じです: ファイルパス、opdef:参照、ビルトインHoudiniアイコンの名前のどれかを指定することができます。

  6. レシピに2個以上のノードを含めた場合、 Anchor Node ポップアップメニューから“アンカー”ノードにしたいノードを選択することができます(ユーザがネットワークエディタ内をクリックしてツールを配置した時に、他のノードはこのノードを基準に配置されます)。

  7. Recipe Options セクションの Recipe Title にレシピのタイトルを入力します。

  8. Save to メニューのデフォルト( User Preferences )は、ユーザプリファレンスディレクトリ内のアセットライブラリにすべてのレシピが保存されます。通常はこれで十分です。 しかし、既存のアセットにレシピを埋め込みたい場合、または、レシピを共有して使いたい場合(大規模スタジオの場合)、プリセットの保存先と内部名を変更することができます。

  9. Save ボタンをクリックします。

ツールレシピの中身を配置する

ツールレシピの配置の挙動は、単一ノードを生成する他のツールと同様ですが、ツールレシピは複数のノードを一括で生成することができます。 詳細は、ノードの追加を参照してください。

  1. ネットワークエディタ内で⇥ Tabを押して、Tabメニューからレシピを選択します。

  2. クリックして、レシピの中身を配置します。

ツールの中身をノードの入力または出力に接続する

ワイヤーを開始してツールレシピを選択する挙動は、単一ノードを生成する他のツールと同様ですが、ツールレシピは複数のノードを一括で生成することができます。 詳細は、ノードの追加を参照してください。

  1. ネットワークエディタ内で、ワイヤーを開始するために、ノードの入力コネクタまたは出力コネクタをクリックします。

  2. 新しいワイヤーがマウスポインタに付着している間に⇥ Tabを押して、そのTabメニューからレシピを選択します。

  3. クリックして、レシピの中身を配置します。その新しいワイヤーは、レシピ作成者がレシピの“入力”や“出力”として設定したレシピノードに接続されます。

以下のツールを編集する方法を参照してください。

デコレーションレシピを保存する方法

デコレーションツールレシピに似ていますが、レシピ内の1つのノードを“セントラル”ノードとして指定します。 このセントラルノードとは、ユーザがデコレーションを適用するノードの プレースホルダー のようなものです。デコレーションをネットワークエディタ内の“ターゲット”ノードに適用する時、Houdiniは以下の操作を行ないます:

  • レピシ作成者が保存したパラメータをセントラルノードに適用します。

  • ターゲットノードの周囲にレシピ内のその他のノードを生成します。

  • ターゲットノード上のコネクションを、レシピ作成者が設定したとおりに、新しいノードセットアップ内の適切なノードに接続し直します。

例えば、通常ではPyro Solverの後にボリュームをシャープ化するノードを追加する場合、Pyro Solverとシャープ化ノードで事前作成されたセットアップを配置するツールレシピを作成するか、または、既存のPyro Solverにシャープ化ノードを追加するデコレーションレシピを作成することになると思います。 あるいは、ツールレシピとデコレーションレシピの両方を作成して、ツールレシピを使って新しいセットアップを作成でき、デコレーションレシピを使って既存のセットアップに追加できるようにするのも良いでしょう。

To...Do this

ノードセットアップをデコレーションとして保存する

  1. デコレーションに変換したいノード(s)を選択します。

  2. 選択したノードを右クリックして、 Recipes ▸ Save Selected Items as Decoration を選択します。

    右クリックしたノードがレシピの“セントラル”ノードになります。 セントラルノードは、レシピが適用されるノードを意味します。 ダイアログ内でこの“セントラル”となるノードを編集することができます が、右クリックしたノードをセントラルとして指定できるのは便利です。

  3. そのツールがTabメニューで表示されるサブメニューを選択することができます。 Tab Submenu フィールドの右側にあるドロップダウンメニューから既存のサブメニューを選択するか、または、そのフィールドに新しい名前を入力して新しいサブメニューを作成します。

    複数のメニューラベルをカンマ(,)区切りで入力することで、そのツールを複数のサブメニューに表示させることができます。 例えば、File IO, Recipesは、Tabメニューの File IORecipes のサブメニューの両方にそのツールが表示されます。

  4. ノードが正しく“セントラル”ノードとしてマークされていることを確認します。

    • 現在のセントラルノードは、レシピダイアログ内の概略ビューで黄色いアウトラインが付きます。

    • セントラルノードを変更するには、その概略ビュー内でノードをクリックして、 Set as Central Node を選択するか、 またはCentral Node ポップアップメニューからノードを選択します。

  5. デコレーションレシピは、そのレシピが生成する非セントラルノード上のすべてのパラメータ(非デフォルトのパラメータとSpareパラメータ)値を保存します。 セントラルノード上のパラメータ値を保存するかどうか選択することができ、保存した場合はデコレーションが適用された時にターゲットノードにそれらのパラメータ値が再適用されます。 これは、ターゲットノードの周囲に生成されるデコレーションノードで必要となるそのターゲットノード上のパラメータ値を設定(例えば、チャンネル参照)するのに役立ちます。

    • デフォルトでは、 Capture Parameters on the Centrl Node がオンになっています。セントラルノードのパラメータを保存しなくないのであれば、それをオフにすると良いでしょう。

    • ダイアログの右側のペインのパラメータビューを使用して、取り込まれるセントラルノード上のパラメータを選択することができます。

  6. ユーザがデコレーションをノードに適用すると、Houdiniは、そのターゲットノードの既存コネクションを接続し直します。このような場合のために、レシピ内で“入力”や“出力”として使用されるノードを設定することができます。 詳細は、以下のワイヤーの制御を参照してください。

  7. Recipe Options セクションの Recipe Title にレシピのタイトルを入力します。

  8. Show for ポップアップメニューを使用して、このデコレーションが適用可能なノードタイプを選択します。 デフォルトでは、セントラルノードタイプにのみそのデコレーションが表示されます。 現在のノードタイプカテゴリに属するすべてのノード、または、パターンにマッチしたすべてのノードタイプでプリセットが表示されるように選択することができます。 詳細は、ターゲットノードパターンを参照してください。

  9. Save to メニューのデフォルト( User Preferences )は、ユーザプリファレンスディレクトリ内のアセットライブラリにすべてのレシピが保存されます。通常はこれで十分です。 しかし、既存のアセットにレシピを埋め込みたい場合、または、レシピを共有して使いたい場合(大規模スタジオの場合)、プリセットの保存先と内部名を変更することができます。

  10. Save ボタンをクリックします。

デコレーションをノードに適用する

ネットワークエディタ内でノードを右クリックして Recipes サブメニューを開き、適用したいデコレーションを選択します。

以下のデコレーションを編集する方法を参照してください。

ワイヤーを制御する方法

既存のコネクションをツールレシピやデコレーションレシピで生成されたノードに接続する方法を制御することができます。

  • ツールレシピの場合、そのレシピの“入力”や“出力”として作用するノードをレシピ内から選択することができます。ワイヤー操作を開始してからTabメニューからツールを選択した時、または、ツールの中身を既存のワイヤー上にドロップした時に、それらのノードが使用されます。

  • デコレーションレシピの場合、最大で4個の入力ノード、1個の出力ノードを選択することができます。デコレーションを“ターゲット”ノードに適用すると、Houdiniは、そのターゲットノードの入力/出力コネクションをそれらのノードに接続し直します。

例えば、入力コネクションを受け取り、それをサブディビジョン化し、それをVellum Constraintsノードの“Collision Geometry”(3番目の)入力に接続してそのジオメトリを球と衝突させて、そのVellum Constraintsノードの出力を分岐させてVisualizeノードとNullノードに接続し、 そのNullノードの出力を出力コネクションとして使用たいとします:

これらのノードをツールとして取り込む時、そのSubdivideノードをレシピ入力として設定し、そのNullノードをレシピ出力として設定することになります:

次に、そのツールをワイヤー上にドロップすると:

…Houdiniは、そのワイヤーをレシピの入力ノードと出力ノードのコネクションに置換します:

To...Do this

ノードをレシピの入力または出力として設定する

レシピダイアログの概略ビュー内でノードをクリックし、 Set as Input または Set as Output を選択するか、 または 入力/出力のポップアップメニューからノードを選択します。

入力となるノードはセントラルノードより“上流にある”ノードしか設定できません。 出力となるノードはセントラルノードより“下流にある”ノードしか設定できません。

Tip

現在のところ、Houdiniは、ノードの1番目の入力/出力しか接続できません。 しかし、この回避策として、入力/出力ノードにNullノードを接続することで、そのNullノードをレシピで指定する入力/出力に使用することができます。

ターゲットノードパターン

ノードプリセットやデコレーションでは、レシピが表示されるノードタイプをレシピメニューから選択することができます。

  • デフォルトでは、元のノード(ノードプリセットの場合)またはセントラルノード(デコレーションの場合)と同じノードタイプに対してレシピが表示されます。

  • レシピを作成する時、 Show for メニューを使用することで、それと同じカテゴリに属するすべてのノード(例えば、すべてのSOPノード)、または、名前が特定のカスタムパターンにマッチしたすべてのノードタイプでレシピが表示されるように選択することができます。

ノードセットに対してレシピを表示させるには、 Show for ▸ Node Matching a Custom Pattern を選択し、レシピを表示させたいノードにマッチするようにカスタムパターンを設定します。

  • パターンには、hou.text.patternMatch関数と同様に標準のHoudiniパターンマッチングを使用します。*ワイルドカードは、どの文字列にもマッチします。

  • パターンには、パターンをスペースで区切ったリストを指定することができます。名前がそのリスト内の どれか にマッチしたノードタイプに対してレシピが表示されます。

  • Houdiniは、ノードの カテゴリを含んだ内部名 (例えば、acme::Sop/foobar::2.0)とパターンのマッチングを試みます。

  • 例えば、acmeネームスペース内のすべてのノードとマッチさせるには、acme::*を使用します。

  • 複数のカテゴリにマッチさせたい場合(例えば、すべてのSOPとすべてのDOPにマッチさせたい場合)、可能性のあるケースにマッチするように複数のパターンをスペースで区切ったリストを記述する必要があります。例えば、ネームスペースのないSOP、ネームスペースのあるSOP、ネームスペースのないDOP、ネームスペースのあるDOPにマッチさせる場合は、 Sop/* *:Sop/* Dop/* *:Dop/*と記述します。

  • パターンにはワイルドカードを使用する必要はありません。レシピを特定のノードタイプのみに表示させたい場合、単にそれらのノードの内部名をスペース区切りのリストで記述すれば良いだけです。

Tip

レシピを作成した後でも、そのパターンで適切にマッチしないことが分かったなら、そのパターンを編集することができます。

ノードがそのパターンにマッチするかどうかをチェックしたいのであれば、hou.text.patternMatchhou.Node.nameWithCategoryを使用すると良いでしょう:

>>> my_pattern = "acme::*"
>>> # このノードがそのパターンにマッチしますか?
>>> hou.text.patternMatches(my_pattern, hou.node("/obj/geo1/my_node").type().nameWithCategory())
True

保存先を選択する方法(上級者向け)

レシピダイアログの Save to メニューのデフォルトは User Preferences です。 これは、すべてのレシピをユーザプリファレンスディレクトリ内のアセットライブラリに保存します。通常はこれで十分です。 しかし、既存のアセットにレシピを埋め込みたい場合、または、レシピを共有して使いたい場合(大規模スタジオの場合)、レシピの保存先を変更したり、レシピアセットの内部名を編集することができます。

例えば、スタジオで共有できるようにツールを作成する場合、ツールを共有ネットワークドライブに保存し、そのツールの内部名には、スタジオ固有のネームスペースとバージョン番号(例えば、acme::vellum_cloth_tool::2.0)を使用したいことでしょう。

保存場所

To...Do this

レシピの保存先を選択する

レシピダイアログの Save to ポップアップメニューをクリックして、以下のどれかを選択します:

User Preferences

レシピアセットを$HOUDINI_USER_PREF_DIR/otls/Recipes.hdaに保存します。

Store In Same Library as ‹name

レシピをソースノードタイプと同じアセットライブラリに保存します。 このオプションは、Houdiniにインストールされている“ファクトリー”ノードタイプでは利用不可です。

$HIP/otls Directory

アセットを現行シーンファイルと同じディレクトリのotlsサブディレクトリに保存します。

$JOB/otls Directory

アセットを$JOB環境変数で設定されたパス内のotlsサブディレクトリに保存します。

Embed in Current HIP File

アセットを現行シーンファイルの一部として埋め込みます。 これは、自己完結した作業シーンファイルを共有する時に役立つ場合があります。

Note

これはシーンファイルのサイズを増やしてしまいます。

Custom File Path

このオプションを選択してから、そのポップアップメニューの隣のフィールドに保存先のアセットライブラリのパスを入力するか、 または 、ファイル選択アイコンをクリックして、ファイルダイアログから保存先のファイルを選択します。

内部名

各レシピアセットは、名前の干渉が起きないようにデフォルトの内部名が指定されています。 この内部名には、 そのアセットを作成したノードのタイプ をスコープとして、 あなたの名前 ($HOUDINI_AUTHORを設定した場合は、その値)をネームスペースとして、レシピタイトルをエンコードしたバージョンをベース名として使用します。

To...Do this

レシピを作成する時に内部名を変更する

  1. レシピダイアログで、 Show Advanced Options ボタンをクリックします。

  2. Internal name フィールドを編集します。

レシピを編集する方法

To...Do this

レシピを削除する

  1. メインメニューから Windows ▸ Recipe Manager を選択します。

  2. 削除したいレシピを選択して Delete ボタンをクリックします。

レシピの名前を変更します

  1. メインメニューから Windows ▸ Recipe Manager を選択します。

  2. レシピを選択して、テーブル内のタイトルをクリックします。

    または

    レシピを選択して、右クリックメニューから Edit Title を選択します。

レシピの中身を編集する

  1. メインメニューから Windows ▸ Recipe Manager を選択します。

  2. 編集したいレシピを選択して、 Edit Contents ボタンをクリックします。

    Houdiniは、一時的なサブネット内にそのレシピの中身を生成し、その中身を選択して、それに対してレシピエディタを開きます。 そのサブネット内でパラメータ値を編集したり、ダイアログ内で設定(タイトルなど)を変更することができます。

    ノードをツールレシピやデコレーションレシピに追加するには、その一時的なサブネット内にノードを作成し、そのノードを選択し、レシピエディタダイアログ内の Reload Selection ボタンをクリックします。

    ツールレシピやデコレーションレシピからノードを削除するには、その一時的なサブネットからそのノードを削除し、レシピエディタダイアログ内の Reload Selection ボタンをクリックします。

  3. Save ボタンをクリックすると、新しい値でプリセットが保存されます。

Tip

レシピはデジタルアセット内に格納されるので、Asset Manager (Assets ▸ Asset Manager)、Type Properties Editor、ノードタイプとアセット定義を制御するHOM関数を使用して、レシピを管理することもできます。

上級者向けオプション

通常ではこれらの設定を変更する必要はありません。 これらの設定をレシピダイアログに表示するには、 Show Advanced Options ボタンをクリックします。

Recursively Save Node Contents

これをオフにすると、ツールまたはデコレーションは、トップレベルのノードのみを持つようになり、サブネットワークまたはロック解除されたアセットの中身は保存されなくなります。

Save Editable Dive Targets

アセットは、定義内のサブネットを編集可能なDive Targetとして指定することができます。 そのアセットインスタンスを作成したユーザは、そのDive Target内で独自のノードを配置して、そのアセットの挙動に影響を与えることができます。 通常では、Houdiniはサブネットワークの中身をレシピの一部として保存します。 このオプションをオフにすると、サブネットワークの中身が無視されます。

セントラル/アンカーノードの編集可能な中身を保存するコントロールと他のすべてのノードの中身を保存するコントロール(Non-Anchor Nodeオプション)が別々に存在します。

Save View Flags (at Top Level)

通常ではビューフラグを変更するようなレシピを適用することはないので、Houdiniはビューフラグ(Output、Display、Render)をレシピの一部として 保存しません 。 非ビューフラグ(“Frozen”や“Bypass”など)が常に保存されます。 このオプションをオンにすると、ビューフラグをレシピの一部として保存することができます。

Only Save Nodes

通常では、Houdiniはステッキーノート、ネットワークボックス、ドットをレシピの一部として保存します。 このオプションをオンにすると、レシピはノードだけを保存し、他のタイプのネットワークオブジェクトを無視します。

スクリプト

以下のHOM関数を使用することで、レシピの保存と適用を行なうことができます:

また、HOMにはHoudiniオブジェクトからJSONライクなデータを返し、そのJSONライクなデータに基づいてHoudiniオブジェクトをセットアップする様々なローレベルな関数とメソッドがあります:

ネットワークとパラメータ

ネットワーク

パラメータの編集

次のステップ

エクスプレッション

導師レベル

リファレンス