この記事はHoudini Apprenticeアドベントカレンダー2024 9日目の記事です。
Houdini 20.5では、パラメータやノードがHOM APIを通じてJSON互換の辞書として表現できるようになりました。この機能をさらに拡張し、ノードプリセット、ノードごとのシェルフ、およびタブメニューエントリを作成および管理するための手法を「レシピ」と呼びます。
まず、レシピとは何かについて簡単に説明します。
レシピとは、さまざまなプリセット(パラメータやツール、セットアップ)を保存、適用、管理する方法です。セットアップとは、特定のタスクを果たすための一連のノードを指し、デジタルアセットとして保存する必要はありません。
Houdini では、パラメータ値のセット、またはネットワーク アイテム (ノード、ドット、付箋、ボックス) のセットを名前付きのレシピとして保存できます。その後、いつでもそれらのパラメータ値を適用したり、それらのノードを再作成したりできます。
ノードのプリセットをレシピとして保存したいと思います。
ノードのパラメータ値のセットやスペアパラメータをレシピとして保存し、保存したパラメータ値を他のノードに適用することができます。その後、それらの値を一度に設定したいときに、既存のノードにプリセットを適用することができます。
この機能はとても便利です。
よく使うノードの設定を保存しておき、それをいつでも適用できるということですからね!
レシピを作成するには、ノードを右クリックし、「Recipe」から「Save Node Preset」を選びます。
ここではPyro Solver SOPのパラメーターを自分の好きな設定に変更しています。
レシピを保存するためのウィンドウが表示されます。
ダイアログで、チェックボックスを使用して、プリセットにキャプチャするパラメータを選択します。
デフォルトでは、プリセットには、選択したパラメータのキーフレーム アニメーションとエクスプレッションが含まれます。代わりに現在の値だけを保存するには、[Capture Keyframes and Expressions] のチェックを外します。
Preset Titleに任意の名前を設定します。
[Show for] ポップアップ メニューを使用して、プリセットを適用できるノード タイプを選択します。
デフォルトでは、プリセットを作成した元のノードタイプ(ここではPyro Solver SOP)のプリセットのみが表示されます。
[Save to]メニュー デフォルトでは、User Preferencesが選択され、すべてのレシピがUser Preferencesディレクトリのアセット ライブラリに保存されます。
通常はこれで十分です。ただし、既存のアセットにレシピを埋め込む場合や、共有するレシピ (大規模なスタジオなど) で作業している場合は、プリセットの保存場所と内部名を変更できます。
Saveボタンをおしてプリセットを保存します。
それでは保存したプリセットを適用しましょう。
ここではPyro Solver SOPのプリセットを保存したので、新しいPyro Solver SOPを作成します。
右クリック>Recipies>保存したプリセット名を選択します。
これで保存しておいたパラメーター値が簡単に割り当てできました。
保存したプリセットはあとから編集も可能です。
Recipe Managerを開きます。
修正したいプリセットレシピを選択し
Edit Contentsを開くと先ほどのウィンドウが開くので、保存したいパラメーターを再度オンオフ切り替えて、保存します。
単にノードのパラメーター設定を保存するだけでなく、ネットワークと現在のパラメータ値を含むノードまたはノード セットを、タブ メニューの新しいツールとして保存することもできます!
いつもよく使うセットはツールレシピとして保存しておくと便利ですよね!!
それでは保存したいネットワークを選択します。
右クリック>Recipis>Save Selected Items as Toolを選択します。
右クリックした位置にあるノードがレシピの「アンカー」ノードになります。後ほど作成したレシピをネットワークに「ドロップ」すると、他のノードはこのノードを基準に配置されます。ダイアログでどのノードが「アンカー」であるかを編集することもできます。
ここではPyro Solver SOPの上で右クリックしたので、Pyro Solver SOPがアンカーになります。
下記のウィンドウが表示されます。
現在はPyro Solver SOPがアンカーになっているので、青色の線でPyro Solver SOPがハイライトされています。
アンカーを変えたい場合、そのノードの上で右クリックからSet as Anchor Nodeを選択します。
設定したノードが青色の線でハイライトされ、アンカーになったことがわかります。
また、各ノードでプリセットとして保存されるパラメーター確認する場合は右クリック>Inspect Captured Parametersを選択します。
Recipi Titleで保存するレシピ名を設定します。
Tab Submenuではタブ メニューでツールが表示されるサブメニューを選択できます。
Tab Submenuフィールドの右側にあるドロップダウン メニューを使用して既存のサブメニューを選択するか、フィールドに新しい名前を入力して新しいサブメニューを作成します。
ツールを複数のサブメニューに表示させるには、複数のメニューラベルをカンマで区切って入力してください。たとえば、File IO, Recipes
と入力すると、そのツールはタブメニューの「File IO」と「Recipes」の両方のサブメニューに表示されます。
タブ メニューのツール名の横に表示されるアイコンを選択できます。
「Save to」メニュー(ユーザープリファレンス)のデフォルト設定では、すべてのレシピがユーザープリファレンスディレクトリ内のアセットライブラリに保存されます。通常はこれで十分です。しかし、既存のアセットにレシピを埋め込みたい場合や、大規模なスタジオで共有するレシピを作成している場合は、プリセットの保存先や内部名を変更することができます。
設定が終わったらSaveをクリックします。
作成したツールレシピを作成するにはRecipes(変更した場合は設定したTab Submenu内) > 保存したレシピ名を選択します。
そうするとネットワークおよび保存されたノードプリセットでネットワークを作成できます。
最後はデコレーションレシピです。
デコレーションレシピとは、Houdiniにおけるツールレシピに似た概念ですが、特定のノードを「中心ノード」として指定する点が特徴です。「中心ノード」は、ユーザーがデコレーションを適用する対象となるノードのプレースホルダーのような役割を果たします。
デコレーションレシピをネットワーク内の「ターゲット」ノードに適用すると、Houdiniは以下の処理を行います:
- レシピ作成者が「中心ノード」に保存したパラメータを適用する。
- レシピに含まれる他のノードをターゲットノードの周囲に作成する。
- レシピ作成者が設定した通りに、ターゲットノードの接続を新しいノードセットアップに再配線する。
例えば、Pyro Solver SOPの入力に必要なアトリビュートを作り、それをラスタイライズ、さらに煙のネットワークを作るというデコレーションレシピを作りたいと思います。
例えば入力ジオメトリは必要ないので、下記のようなネットワークから一番上のSphereジオメトリ以外を選択します。
中心としたいノード今回はPyro Solver SOPを右クリックして、Recipies>Save Selected items as Decolationを選択します。
ウィンドウが開き、Pyro Solver SOPが黄色のラインで囲まれたセンターノードになっていることがわかります。
そして、選択したセンターノードに適用されるパラメーターを選択することができます。
後は先ほどと同様にRecipi Titleを入力し、どのノードに対して表示するか、どこへ保存するかを選択してSaveします。
作成したレシピを適用するために下記のようにノードを作成します。
後は周りにデコレーションレシピを適用するため、Pyro Solver SOPを右クリックしRecipies>名前を付けたレシピを選択します。
これでPyro Solver SOPおよび入力は残したまま、その周囲のノードを作成することができます。
要するに、デコレーションレシピは、既存のノードセットアップに特定の機能を簡単に追加するための仕組みです。
これでネットワークの繰り返し作成が少し楽になりますね!
レシピをもっとカスタマイズする方法を知りたい方はこちらへ
Houdiniをちょっと使いやすくするレシピ機能をぜひ試してみてください。