On this page |
概要 ¶
Houdiniでは、パラメータ値のセット、ネットワークアイテム(ノード、ドット、ステッキーノート、ネットワークボックス)のセットを、名前が付いた レシピ として保存することができます。 レシピに保存すれば、必要な時にいつでもそれらのパラメータ値を適用したり、それらのノードを再生成することができます。
3種類のレシピを作成することができます: パラメータプリセット、ツール、デコレーション。
レシピはアセットとして保存され、そのアセットカテゴリはSop
やLop
などの通常のノードタイプカテゴリではなく、特別なData
カテゴリになっています。
ノードプリセットを保存する方法 ¶
ノードのパラメータ値のセット、さらには、Spareパラメータ値までもレシピとして保存することができ、そして、その保存されたパラメータ値を他のノードに適用することができます。 後でそれらの値すべてを一度に設定したいとなった時に、既存のノードにそのプリセットを適用することができます。
オプションで、ノードの 中身 をレシピの一部として保存することもできます。
これは、例えば、Pyro Solver SOPのDive Targetコンテキスト内の中身をレシピとして保存してそのレシピを適用すれば、ノードに特定のパラメータが設定され、さらにDOPネットワークも入力されるようになるので便利です。
Note
このタイプのレシピは、 既存ノード のパラメータ値と可能であればその中身までを 変更 するためのものです。 特定のパラメータ値と中身を持つ特定のタイプのノードを配置するだけの手段が必要な場合、代わりにツールレシピを使用します(以下参照)。
Spareパラメータをプリセットの一部として保存した場合、そのプリセットを適用すると、それらのSpareパラメータがまだ存在していなければ、ターゲットノード上にそれらのパラメータが作成されます。
To... | Do this |
---|---|
パラメータ値をプリセットとして保存する |
Tip パラメータエディタペイン内でパラメータを編集した場合、 |
パラメータプリセットをノードに適用する |
|
既存のパラメータプリセットを編集する |
|
以下のプリセットを編集する方法を参照してください。
ツールレシピを保存する方法 ¶
ツールレシピ は、ノードまたはノードセット(接続と現行パラメータ値を含む)を、Tabメニューの新しいツールとして保存します。 保存した後は、Tabメニューからそのツールを選択することで、その保存されたノードセットアップを再生成することができます。
To... | Do this |
---|---|
ノードまたはノードセットをツールとして保存する |
|
ツールレシピの中身を配置する |
ツールレシピの配置の挙動は、単一ノードを生成する他のツールと同様ですが、ツールレシピは複数のノードを一括で生成することができます。 詳細は、ノードの追加を参照してください。
|
ツールの中身をノードの入力または出力に接続する |
ワイヤーを開始してツールレシピを選択する挙動は、単一ノードを生成する他のツールと同様ですが、ツールレシピは複数のノードを一括で生成することができます。 詳細は、ノードの追加を参照してください。
|
以下のツールを編集する方法を参照してください。
デコレーションレシピを保存する方法 ¶
デコレーション はツールレシピに似ていますが、レシピ内の1つのノードを“セントラル”ノードとして指定します。 このセントラルノードとは、ユーザがデコレーションを適用するノードの プレースホルダー のようなものです。デコレーションをネットワークエディタ内の“ターゲット”ノードに適用する時、Houdiniは以下の操作を行ないます:
-
レピシ作成者が保存したパラメータをセントラルノードに適用します。
-
ターゲットノードの周囲にレシピ内のその他のノードを生成します。
-
ターゲットノード上のコネクションを、レシピ作成者が設定したとおりに、新しいノードセットアップ内の適切なノードに接続し直します。
例えば、通常ではPyro Solverの後にボリュームをシャープ化するノードを追加する場合、Pyro Solverとシャープ化ノードで事前作成されたセットアップを配置するツールレシピを作成するか、または、既存のPyro Solverにシャープ化ノードを追加するデコレーションレシピを作成することになると思います。 あるいは、ツールレシピとデコレーションレシピの両方を作成して、ツールレシピを使って新しいセットアップを作成でき、デコレーションレシピを使って既存のセットアップに追加できるようにするのも良いでしょう。
To... | Do this |
---|---|
ノードセットアップをデコレーションとして保存する |
|
デコレーションをノードに適用する |
ネットワークエディタ内でノードを右クリックして 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.patternMatchとhou.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 レシピアセットを Store In Same Library as ‹name› レシピをソースノードタイプと同じアセットライブラリに保存します。 このオプションは、Houdiniにインストールされている“ファクトリー”ノードタイプでは利用不可です。 $HIP/otls Directory アセットを現行シーンファイルと同じディレクトリの $JOB/otls Directory アセットを Embed in Current HIP File アセットを現行シーンファイルの一部として埋め込みます。 これは、自己完結した作業シーンファイルを共有する時に役立つ場合があります。 Note これはシーンファイルのサイズを増やしてしまいます。 Custom File Path このオプションを選択してから、そのポップアップメニューの隣のフィールドに保存先のアセットライブラリのパスを入力するか、 または 、ファイル選択アイコンをクリックして、ファイルダイアログから保存先のファイルを選択します。 |
内部名 ¶
各レシピアセットは、名前の干渉が起きないようにデフォルトの内部名が指定されています。
この内部名には、 そのアセットを作成したノードのタイプ をスコープとして、 あなたの名前 ($HOUDINI_AUTHOR
を設定した場合は、その値)をネームスペースとして、レシピタイトルをエンコードしたバージョンをベース名として使用します。
To... | Do this |
---|---|
レシピを作成する時に内部名を変更する |
|
レシピを編集する方法 ¶
To... | Do this |
---|---|
レシピを削除する |
|
レシピの名前を変更します |
|
レシピの中身を編集する |
|
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オブジェクトをセットアップする様々なローレベルな関数とメソッドがあります: