カスタム ノードを作成する

Dynamo では、いくつかの方法でカスタム ノードを作成することができます。最初からカスタム ノードを作成することも、既存のグラフから作成することも、C# を使用して明示的に作成することもできます。このセクションでは、既存のグラフを使用して Dynamo UI 内にカスタム ノードを作成する方法について説明します。ワークスペースを整理し、一連のノードをパッケージ化して別の場所で再利用する場合は、この方法が最適です。

演習: UV マッピング用のカスタム ノード

パート I: グラフから開始する

次の図は、UV 座標を使用して、1 つのサーフェスから別のサーフェスに点をマッピングする場合の例を示しています。この概念を適用して、XY 平面上の曲線を参照する、複数の小さなパネルから構成されるサーフェスを作成してみましょう。ここでは、パネル化用の四角形のパネルを作成しますが、同じ概念を適用して、UV マッピングを使用する多様なパネルを作成することもできます。この演習を行うと、このグラフや Dynamo の別のワークフローで同様のプロセスを簡単に繰り返すことができるようになるため、カスタム ノード開発のよい練習になります。

下のリンクをクリックして、サンプル ファイルをダウンロードします。

すべてのサンプルファイルの一覧については、付録を参照してください。

最初に、カスタム ノード内にネストするグラフを作成します。この例では、UV 座標を使用して、基準となるサーフェスから目的のサーフェスにポリゴンをマッピングするグラフを作成します。この UV マッピング プロセスは頻繁に使用するプロセスであるため、カスタム ノードの演習素材として適しています。サーフェスと UV 空間の詳細については、「サーフェス」ページを参照してください。完全なグラフは、上記でダウンロードした .zip ファイルの UVmapping_Custom-Node.dyn になります。

  1. Code Block: この行を使用して、-45 ~ 45 45..45..#10;の範囲の 10 個の数値を作成します。

  2. Point.ByCoordinates: Code Block ノードの出力を x 入力と y 入力に接続し、[レーシング]を[外積]に設定します。これで、点のグリッドが作成されます。

  3. Plane.ByOriginNormal: Point 出力を origin 入力に接続して、各点に平面を作成します。この操作では、既定の法線ベクトル(0,0,1)が使用されます。

  4. Rectangle.ByWidthLength: 前の手順で作成した平面を plane 入力に接続し、値 10Code Block ノードを使用して幅と長さを指定します。

これで、長方形のグリッドが作成されます。UV 座標を使用して、これらの長方形を目的のサーフェスにマッピングします。

  1. Polygon.Points: 前の手順の Rectangle.ByWidthLength 出力を polygon 入力に接続し、各長方形の頂点を抽出します。これらの点を、目的のサーフェスにマッピングします。

  2. Rectangle.ByWidthLength:100Code Block ノードを使用して、長方形の幅と長さを指定します。これが、基準サーフェスの境界線になります。

  3. Surface.ByPatch: 前の手順の Rectangle.ByWidthLength 出力を closedCurve 入力に接続し、基準となるサーフェスを作成します。

  4. Surface.UVParameterAtPoint: Polygon.Points ノードの Point 出力と Surface.ByPatch ノードの Surface 出力を接続して、各点で UV パラメータを返します。

これで、基準となるサーフェスと UV 座標のセットが作成されました。次に、目的のサーフェスを読み込み、2 つのサーフェス間で点をマッピングします。

  1. File Path: 読み込むサーフェスのファイル パスを選択します。ファイル タイプは .sat にしてください。[参照...]ボタンをクリックして、上でダウンロードした .zip ファイルの UVmapping_srf.sat にナビゲートします。

  2. Geometry.ImportFromSAT: ファイル パスを接続して、サーフェスを読み込みます。読み込んだサーフェスがジオメトリのプレビューに表示されます。

  3. UV: UV パラメータ出力を UV.U ノードと UV.V ノードに接続します。

  4. Surface.PointAtParameter: 読み込んだサーフェス、U 座標、V 座標を接続します。これで、目的のサーフェス上に 3D の点のグリッドが表示されます。

最後に、3D の点を使用して長方形のサーフェス パッチを作成します。

  1. PolyCurve.ByPoints: サーフェス上の点群を接続し、その点群からポリカーブを作成します。

  2. Boolean: Boolean ノードをワークスペースに追加して connectLastToFirst 入力に接続し、値を True に切り替えてポリカーブを閉じます。これで、サーフェスに長方形がマッピングされて表示されます。

  3. Surface.ByPatch: ポリカーブを closedCurve 入力に接続し、サーフェス パッチを作成します。

パート II: グラフからカスタム ノードへ

次に、ノードの入力と出力を考慮しながら、カスタム ノード内にネストするノードを選択します。長方形以外の任意のポリゴンをマッピングできるように、カスタム ノードの柔軟性を可能な限り高めてみましょう。

次のノード(Polygon.Points から始まる)を選択し、ワークスペースを右クリックして[カスタム ノードを作成]を選択します。

[カスタム ノード プロパティ]ダイアログボックスで、カスタム ノードに名前、説明、カテゴリを割り当てます。

  1. 名前: MapPolygonsToSurface

  2. 説明: 基準点からターゲット サーフェスにポリゴンをマッピングします

  3. アドオン カテゴリ: Geometry.Curve

カスタム ノードにより、ワークスペースが見やすくなりました。入力と出力には、元のノードに基づいて名前が付いています。カスタム ノードを編集して、これらの名前をもっとわかりやすい名前に変更しましょう。

編集するカスタム ノードをダブルクリックします。ワークスペースの背景色が黄色で表示されます。これは、カスタム ノードの内部を表しています。

  1. Input ノードの入力名を baseSurfacetargetSurface に変更します。

  2. マッピングするポリゴン用に Output ノードを追加します。

カスタム ノードを保存し、ホーム ワークスペースに戻ります。MapPolygonsToSurface ノードに変更内容が反映されます。

カスタム コメントを追加して、カスタム ノードの内容をさらにわかりやすくすることもできます。コメントを入力すると、入力タイプと出力タイプの内容だけでなく、ノードの機能を説明することができます。カスタム ノードの入力や出力にカーソルを置くと、コメントが表示されます。

編集するカスタム ノードをダブルクリックします。背景が黄色のワークスペースがもう一度表示されます。

  1. Input の Code Block ノードの編集を開始します。コメントを入力する場合は、最初に「//」を入力してから、コメント テキストを入力します。ノードの内容を説明するためのコメントを入力してください。ここでは、targetSurface ノードの説明を入力します。

  2. 特定の値に一致する入力タイプを設定して、inputSurface ノードの既定値を設定します。ここでは、既定値を元の Surface.ByPatch のセットに設定します。

コメントは、Output に適用することもできます。

Output の Code Block ノードのテキストを編集します。「//」の後ろにコメント テキストを入力します。ここでは、PolygonssurfacePatches の Output の詳細な説明を追加します。

  1. カスタム ノード入力にカーソルを置いてコメントを表示します。

  2. inputSurface ノードの既定値が設定されているため、Surface 入力を使用することなく定義を実行することができます。

Last updated