Q100494: 入力ノード タイプに基づいてマージ入力の名前を変更することで、ノード グラフの読みやすさが向上しました。

フォローする

まとめ

複数の入力を持つノード (Merge、Switch、または VariableSwitchノードなど)を設定する場合、どの種類のノードが上流で接続されているかを示すために各入力ポートの名前を変更すると便利な場合があります。ただし、ポートの名前を手動で変更するのは面倒になる場合があります。

この記事は、「Q100372: Python を使用した入力ポートと出力ポートの名前変更」に示されている例を基に構築し、ユーザー定義カテゴリを介して入力ポートの名前をマージ ノードに変更する機能を提供することを目的としています。

詳しくは

Katanaテンプレートを構築するとき、入力ポートに上流に接続されているノードのカテゴリが表示されると、テンプレートのフローを理解しやすくなります。

Merge ノードのデフォルトの動作を使用する場合、作成される入力には i0、i1、i2 などの名前が付けられます。この命名規則では、上流に接続されているノードに関する情報は提供されません。

Merge ノードのデフォルトのポート名を使用する代わりに、接続されているノードのカテゴリに基づいて Merge ノードの入力ポートの名前を変更するカスタム Python セットアップを作成できます (たとえば、CameraCreate ノードに接続されている場合の Merge ノードの入力ポートは「 「カメラ」、ネットワークマテリアル ノードの場合は「マテリアル」になります)。

たとえば、Merge ノードに機能を追加すると、次の入力ポート名を使用できます。これにより、アップストリームのセットアップを理解しやすくなります。

advRename1.PNG

上の画像に示されているように、Merge ノードの入力ポートの名前は、各入力に接続されているノードのカテゴリに従って変更されます。

スクリプト例

この記事には、スタジオのニーズに合わせてダウンロードして変更できる Python サンプル スクリプトが添付されています。

スクリプトを機能させるには、添付ファイルを.katana/Shelvesフォルダーの場所に追加する必要があります。たとえば、次のようになります。

Windows: C:\Users\USERNAME\.katana\Shelves\RenameShelf\Type_Merge.py
Linux: /mnt/nethome/users/USERNAME/.katana/Shelves/RenameShelf/Type_Merge.py

シェルフ スクリプトの詳細については、次の記事を参照してください。
Q100401: Katanaで棚アイテムを作成する方法
Q100402: Katanaで棚アイテムを編集および削除する方法

スクリプトの使用

Katana内でこのカスタム スクリプトをテストするには、ノードの選択 (たとえば、CameraCreate、PonyCreate、およびマテリアル ノード) を作成する必要があります。

ノードが作成されたら、それらをすべて選択し、キーボード ショートカットCtrl+Mを使用して、カスタム シェルフ アイテム スクリプトを使用してノードを結合します。あるいは、[ヘルプ] の横にある歯車アイコンに移動し、[シェルフ] で[RenameShelf]シェルフ アクションと[Type_Merge]シェルフ アイテムを選択することによっても、スクリプトにアクセスできます。

上のサンプル画像に示されているように、マージ ノードの入力ポートには、シェルフ アイテム スクリプトで定義されているように、接続されているノードのカテゴリによって名前が付けられます。

このツールは複数のカテゴリを追加することもできます。たとえば、「prmanCameraSettings」ノードのマージ ポートの名前は「Prman_Camera_Settings」になります。

接続のセットアップ、シェルフ項目およびスーパーツールの作成の詳細については、以下のリンクを使用してKatanaユーザー ガイドおよびKatana開発者ガイドを確認してください。

Python のノード接続: Katana開発者ガイド - ノードの操作 - ノードの接続
シェルフ スクリプト: Katanaユーザー ガイド - Katanaでのスクリプト作成とプログラミング - シェルフ アイテム スクリプト
SuperTools: Katanaユーザー ガイド - グループ、マクロ、および SuperTools - SuperTools

スクリプトの説明

スクリプトは、定義とライブラリ変数が設定された後、選択されたノードを照合することから始まります (80 行目)。このデータが収集されると、新しいマージ ノードが作成されます。

Q100372: Python スクリプトを使用した入力ポートと出力ポートの名前変更のに続き、87 行目から、for ループで選択した各ノードを反復処理することで、選択したノードが新しく作成された Merge ノードに接続され、選択されたノード。

このスクリプトは、入力ポートを追加する前に、新しい関数checkDictionary()を呼び出して特定のノードのユーザー定義辞書をレビューする点で、Q100372の記事の例とは異なります

カスタム辞書 (18 行目から 44 行目) は、辞書値を使用して、入力ポートの名前変更に使用されるノード カテゴリ キーを使用して、既存のノード名 (PrimitiveCreate など) またはノード名の潜在的な部分 (Camera など) と一致します。

24 行目の MergeType カスタム辞書は次のとおりです。

mergeDictionaries.PNG

たとえば、上記の辞書キーに従って、PrimitiveCreate ノードの出力は、ノード カテゴリ マッピングに基づいて「Geometry」という名前になります。

mergeDictionaries1.PNG

checkDictionary checkDictionary()関数はこれらのディクショナリを反復処理し、キーの 1 つが選択されたノードのタイプと一致するかどうかを見つけようとします。ノードのタイプがいずれかのキーと一致すると、そのキーは「mergeLabel」という名前の変数に追加され、入力ポートの名前として使用されます。

例として、 ArnoldCameraSettingsノードは次のように 3 つのキーをキャッチし、それらを次々に追加します。

advRename2.PNG

名前コンポーネントが最終的な入力ポート名に追加される順序はcheckDictionary()を使用してカテゴリ ディクショナリがチェックされる順序によって決まります

advRename3.PNG

上記のcheckDictionary()への呼び出しが切り替えられた場合、入力ポートの名前は「Arnold_Camera_Settings」ではなく「Camera_Settings_Arnold」になります。

辞書の書式設定に続いて、独自のカスタム辞書を追加し、 checkDictionary()を呼び出して、入力ポート名にさらにコンポーネントを追加できます。

すべての入力ポートが追加されると、新しいマージ ノードが選択されたノードとして設定され、Q100402: Katanaでシェルフ アイテムを編集および削除する方法で説明されている機能を通じて [ノード グラフ] タブに表示されます。

Merge ノードをフローティングすると、新しいノードを作成するのと同じ動作が提供されます。

注:スクリプトの詳細については、スクリプト内のヘルプ コメントを参照してください。

添付ファイル

私たちはそれを聞いて申し訳ございません

理由をお聞かせください