Houdini 19.0 ノード ジオメトリノード

Labs Merge Splines 1.0 geometry node

繋がっていないポリライン同士をPolyPath SOPと同様に1本化し、交点でセグメント化します。ただし条件指定で、アトリビュートとグループを保持したり結合することができます。

On this page
Since 19.5

Labs Merge Splinesノードは、アトリビュートとカーブ方向を維持しつつ、交差したポリライン同士をセグメント化することができます。 これは、ポリラインをセグメント化するPolyPath SOPの基本動作と同じように動作しますが、そのPolyPath SOPに足りない注目すべき機能が3つあります。

これは、維持したいアトリビュートを含んだポリラインを再結合する際に非常に役に立ちます。 道路網のカーブや経路、さらには経路探索するためのグリッド結合なんかにも使用用途が考えられます。

パラメータ

Merge Splines

このツールに指定されたポリラインのどの部分をどのように結合するのか設定します。

Fuse / Snap Distance

繋がっていないポリラインを接続するポイント間のスナップ距離を指定します。 スナップさせすぎると予期しない結果を招いてしまうので、妥当なレベルに維持するのが良いです。

Fuse Targets

Any Point はすべてのポイント、 Only End Points は端点(隣接ポイントが1個)、 Only End Points & Exsisting Intersections はさらにT字や十字などの交点(隣接ポイントが3個以上)を結合の対象として考慮します。 Only End Points & Exsisting Intersections ではL字の交点(隣接ポイントが2個)は無視されます。

Fuse Filter

独自結合フィルターオプションを有効にします。これを無効(デフォルト)にすると、すべてのポイントが結合されます。 入力ポリラインが繋がっていない場合、それらのポイントで結合したいポリラインのポイントグループを選択します。 ポリライン間のポイントが既に繋がっていて、且つ、 Only Merge on Fuse Filter Selection が有効な場合、それらのポイントと繋がったポリラインのみがセグメント化され、それ以外はそのままになります。 それ以外の場合は、繋がったジオメトリがすべてセグメント化されます。 *などの標準グループ構文を使用することで、入力ジオメトリ内のすべてのポイントを選択することができます。

Only Merge on Fuse Filter Selection

Fuse Filter にポイントグループを指定すると、その“Fuse Filter”で選択されたポイントにつながっているポリラインのみがセグメント化され、それ以外のすべてのポリラインは無視されます。 これによって、影響を受けるポリラインのみが再計算され、影響を受けないポリラインはそのままなので処理が高速化されます。 無駄なオーバーヘッドなしでポリラインをたくさんのセグメントに分けたい場合に役立ちます。

Only Merge If Matching

指定した1つ以上のPrimitiveアトリビュートの値が同じポリラインを1本化します。 指定したアトリビュートのどれかの値が異なれば、それらのポリラインは1本化されません。

Attributes To Match

1本化するポリラインにマッチさせるアトリビュート名を指定します(対応しているアトリビュートタイプ: Int, Float, String, Vector)。

Advanced Fuse Behaviour

ポイント同士を結合する際のそれらのポイントのスナップ方法を設定します。

Target Group

有効にすると、ここには、ポイントを結合する時にスナップ先として許可するポイントグループを指定します。 無効にすると、結合されるポイント自身がターゲットグループになります。

Radius Attrib

有効にすると、この名前のPointアトリビュートを使用して、ポイントの半径が指定されます。 2個のポイントは、この半径の球間の最短距離が Space Distance 内にあれば結合することができます。

Only Fuse when Primitive Attribute Matches

指定したPrimitiveアトリビュートの値が同じポリラインのポイントのみを結合します。 指定したアトリビュートの値が異なれば、2本のポリラインのポイントは結合されません。

Attribute to Match

結合するポリラインにマッチさせるアトリビュート名を指定します(対応しているアトリビュートタイプ: Int, Float, String, Vector)。

Output Position

ポイント同士をスナップさせる際にPアトリビュート値の合成に使用するメソッド。 “By Attribute”メソッドを選択すると、指定したPointアトリビュートを使用してスナップ位置が決定されます。

Sort By Point Attrib

ポイントの結合後のポイント位置を決めるウェイトとして作用するPointアトリビュートを指定します(数値順またはアルファベット順でソート)。

Primitive Behavior on Merge

ポリライン同士を1本化する際にPrimitiveアトリビュートと頂点順をどのようにして解決するのかを設定します。

Prim Attrib Promotion

2本以上のポリラインを1本化する際にPrimitiveアトリビュートをプロモートさせる方法を指定します。

  • Maximum - 一番大きい値を取得します。

  • Minimum - 一番小さい値を取得します。

  • Average - 平均値。すべての値を合算してポリラインの本数で割った値。

  • Mode - 頻度の高い値。頻度の高い値が複数存在した場合は、その中の最小値を取得します。

  • Median - 中間値。ポリラインの本数が偶数の場合、候補となる中間値の中で大きい方の値を取得します。

  • Sum - すべての値の合計。

  • Sum of Squares - 値を2乗した後のすべての値を合計。

  • Root Mean Square - 値を2乗した後の平均値の平方根。

  • By Prim Number First Value - ポリラインの1本化の処理をする毎に最初の有効なプリミティブ番号がアトリビュートで使用されます。 ポリラインをアセットに渡す前にそれらのポリラインのプリミティブ番号をソートしておくと良いでしょう。

  • By Prim Number Last Value - ポリラインの1本化の処理をする毎に最後の有効なプリミティブ番号がアトリビュートで使用されます。

  • Array of All - ソースアトリビュートがタプル型のアトリビュートだった場合、新しく配列アトリビュートが作成されます。 この配列アトリビュートには、マッチしたすべての値が格納されます。

  • By Attribute First Value - 有効なアトリビュート名を指定すると、Primitiveアトリビュートから最小値が取得されます。 複数のプリミティブがこの最小値と同じだった場合、それらの内の最初のプリミティブ番号が使用されます。

  • By Attribute Last Value - 有効なアトリビュート名を指定すると、Primitiveアトリビュートから最大値が取得されます。 複数のプリミティブがこの最大値と同じだった場合、それらの内の最初のプリミティブ番号が使用されます。

Sort By

“By Attribute”系メソッドを使用した場合、すべてのPrimitiveアトリビュートの干渉は、このアトリビュート値の順番(数値順またはアルファベット順)で解決されます。

Vertex Order Direction

1本化された各ポリラインに対して頂点順をどのようにプロモートさせるのかを制御します。

  • Match Prim Attrib Promotion - Prim Attrib Promotionメソッドを使用すると、 Prim Attrib Promotion で選択した By Prim Number メソッドや By Attribute メソッドと同じ方法で頂点順をサンプリングします。

  • By Attribute First Value - 有効なアトリビュート名を指定すると、アトリビュート値が最も小さいプリミティブから頂点順をサンプリングします。 同じ値の場合、プリミティブ番号が小さい方の頂点順が取得されます。

  • By Attribute Last Value - 有効なアトリビュート名を指定すると、アトリビュート値が最も大きいプリミティブから頂点順をサンプリングします。 同じ値の場合、プリミティブ番号が小さい方の頂点順が取得されます。

  • By Attribute First Value / Reverse - 有効なアトリビュート名を指定すると、アトリビュート値が最も小さいプリミティブから頂点順をサンプリングします。 同じ値の場合、プリミティブ番号が大きい方の頂点順が取得されます。

  • By Attribute Last Value / Reverse - 有効なアトリビュート名を指定すると、アトリビュート値が最も大きいプリミティブから頂点順をサンプリングします。 同じ値の場合、プリミティブ番号が大きい方の頂点順が取得されます。

  • By Prim Number First Value - 1本化処理の度に最初の有効なプリミティブ番号が頂点順に考慮されます。

  • By Prim Number Last Value - 1本化処理の度に最後の有効なプリミティブ番号が頂点順に考慮されます。

Sort By

Vertex Order Direction メソッドで By Attribute First系 または By Attribute Last系 を選択した時に、ここでそのアトリビュートを指定して、頂点順がサンプリングされるポリラインを決めます。

Point Behaviour on Fuse

ポイントをFuse Distanceで結合する際にそれらのPointアトリビュートやポイントグループの解決方法を設定します。

Point Attribs Promotion

ポイントを他のポイントに結合する際にそのPointアトリビュートの解決方法を指定します。 各Snap Methodには特定のタイプのアトリビュートしか使用できません。 そのアトリビュート自体の値、ポイント番号または別のウェイトアトリビュートによるソートのどちらかでアトリビュートを解決することができます。

Sort Type

Pointアトリビュートのプロモートに By Attribute系 メソッドを使用する場合、ウェイトアトリビュートを、結合されるポイント、または、繋がったプリミティブのどちらから取得するのかを指定します。

Sort By

By Attribute系 メソッド用のウェイト値として使用するPoint(またはPrimitive)アトリビュートのアトリビュート名を指定します(数値順またはアルファベット順でソートします)。

Point Attributes

解決するPointアトリビュートを指定します。

Group Propagation

ポイントを結合する際のそれらのポイントグループの解決方法を指定します。

Point Group Names

解決するポイントグループを指定します。

Vertex Attrib Promotion Method

頂点を結合する際のそれらのVertexアトリビュートのプロモート方法を指定します。 Prim Attrib Promotion メソッドと同様のプロモート方法( By Attribute系 オプションを除く)から選択します。

Sort By Vertex Order

有効にすると、出力ジオメトリのポイント番号が頂点順でソートされます。

Visual Feedback

ガイド表示と出力の表示方法を設定します。

Guide Scale

ノードが選択された時に表示するワイヤーフレームガイドオブジェクトのスケールを設定します。このオブジェクトは2番目の出力に用意されます。

Show Source Vertex Order

入力ポリラインの頂点順を小さい方向ガイド矢印で表示します。

Color Segments

有効にすると、出力プリミティブが1本毎に異なるプリミティブカラーで表示されます。

Seed

1本毎に割り当てられるランダムカラーのシード値を設定します。

Guide Color

2番目の出力のGuide Visual Outputのカラークラスを指定します(これは、他のジオメトリに1本化した時にカラーアトリビュートの互換性を持たせるのに役立ちます)。

Pack Guide Output

2番目の出力のGuide Visual Outputをパックジオメトリとして出力します。

Clean NURBS and Bezier Curves upon Input

このユーティリティはポリラインのみを出力し、ここでは、NURBS/Bezierカーブの処理方法を設定します。

Clean Method

NURBSカーブやBezierカーブの非対応なジオメトリタイプの扱い方を設定します。

Level of Detail

カーブのU方向に沿ったポイント密度。

Divisions Per Span

カーブのU方向に沿ったポイント数。

ガイド

ノードが選択されるとガイドが表示されるので、ポリライン同士がどのように1本化される(または、されない)のか分かりやすいです。

  • 明るい黄色の矢印 は、処理された(または、処理されなかった)ポリラインの頂点順を示しています。

  • 暗い黄色の矢印 は、事前に1本化されているポリラインの元々の頂点順を示し、明るい黄色の矢印は、その暗い黄色の矢印の上に配置され、最終的に1本化されたポリラインに使用された頂点を示します。

  • 赤色の矢印 は、ポリラインがこのポイント位置で終了し、他のポリラインと1本化もセグメント化もされていないことを示します。

  • 緑色の球 は、ポイントが結合されたことを示します。

  • オレンジ色の球 は、そのポイントは結合されていて、ポリラインはセグメント化されています(ただし、ポイントが既に結合されている場合は1本化されています)。

  • 青色の球 は、ポイントが結合されているものの、1本のカーブになっていません(ただし、ポイントが交点で終了する場合はカーブは1本になっています)。

2番目の出力にはガイドが用意されるので、それをツールの視覚的出力として実装することができます。

Note

内部的には、アセットは“temp_”で始まるグループやアトリビュートを使用しているので、その接頭辞で始まるグループやアトリビュートをこのツールに渡すと、そのグループやアトリビュートは削除されてしまいます。

参考

このノードは、元々はE-Houdini AcademyのMentoring and Consultingの仕事の一部として開発されました。 そのバージョン1.5がLabsに2022年7月21日にLabs Merge Splines 1.0として追加されました。

オリジナルの製作者: Erwin Heyms氏

Houdini Version H19.5.284で作成されました。

2022年7月10日にV1.0.1として最終更新されました。

Erwin Heyms - EhoudiniAcademy

ジオメトリノード