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

Labs PolyScalpel 1.0 geometry node

2番目の分割入力のポイント/ポリライン/ポリゴンサーフェスを使用して様々な構成で1番目の入力ジオメトリを分割します。

On this page
Since 19.5

このノードは、2番目の分割入力のポイント/ポリライン/ポリゴンサーフェスに基づいて、特定のエッジやポイントを使ってポリラインやポリゴンサーフェスを分割します。

パラメータ

Geometry Input

以下の設定は、ツールの入力を決めます。例えば、入力のタイプだったり、グループやメッシュの接続性を利用してオペレーションに含める/含めたくないジオメトリを決めることができます。

Source Geo Type

このツールが分割するジオメトリのタイプを設定します。

  • Polygon Surfaces - ポリゴンサーフェスをポイントまたはエッジを使って分割します。

  • Polylines - ポリラインをポイントを使って分割します。

Cutting Geo Type

このツールが分割に使用する2番目の入力のジオメトリのタイプを設定します。

  • Points - ポイントを使用してポリゴンエッジ上にポイントを挿入します。

  • Polylines - ポリラインを使用して近接フェースを分割します。

  • Polygon Surfaces - ポリゴンサーフェスを使用して交差したポリゴンサーフェスを分割します。

Source Geo Group

2番目の入力のカット用ジオメトリを使用して分割したい ソースプリミティブ のグループを指定します。

Cutting Geo Group

カット用ジオメトリとして許容する カットプリミティブ のグループを指定します。 ポリゴンサーフェスまたはポリラインを使用して分割する場合は、ここにはプリミティブグループを指定します。 ポイントを使用して分割する場合は、ここにはポイントグループを指定しますが、 Cut with Intersection Points from Cutting Geo が有効な場合にはプリミティブグループを指定する必要があります。

Use Source Mesh Connectivity

Cutting Geo TypePoint または Polylines の時、これを有効にすると、繋がったメッシュ毎に内部的に接続性IDを割り当てて、そのメッシュを分けます。 しかし、場合によっては、繋がっていないメッシュすべてを単一メッシュとして扱いたいこともあります。 そのような場合、その内部的な接続性IDには-1が設定されます。 このオプションを無効にすることで、繋がっていないソースプリミティブとカットプリミティブをたくさん処理する時にパフォーマンスが良くなります。 (さらに別のオプションの Bind Cuts to Nearest Source Primitive も使用すると良いでしょう)。 しかしながら、接続性IDの使用を無効にすると、メッシュが重なった時に問題を引き起こし、繋がっていないソースジオメトリが分割箇所で結合されてしまう場合があります。デフォルトは有効になっています。

Bind Cuts to Nearest Source Primitive

有効にすると、カットプリミティブは、自身のプリミティブの中心から一番近くにある繋がったソースプリミティブをチェックし、そのソースプリミティブのみを分割の対象にします。 他の繋がっていないソースプリミティブは、そのカットプリミティブでは無視されます。 デフォルトは無効になっていて、1個のカットプリミティブは、繋がっていない複数個のメッシュを一度に結合することなく影響を与えることができます。 繋がっていないソースプリミティブとカットプリミティブがたくさんある場合では、このオプションを有効にするとパフォーマンスが良くなります。

Cross Cut For Planar Surfaces

Cutting Geo TypePolygon Surfaces の時、有効にすると、このオプションは、カット用ジオメトリの法線方向に基づいて、交差をエッジハルで補間します。 これは、2つの同一非平面サーフェス/プリミティブをソース入力とカット入力として使用する場合に役立ちます。 Cross-Cut Depth は、このエッジハルの深さに影響を与えます。

Cross-Cut Depth

Cross Cut for Planar Surfaces を使用した場合、ここでは、分割サーフェスエッジと垂直な断面の距離を決めます。

Cut with Intersection Points from Cutting Geo

有効にすると、両方の入力に同じポリラインソースジオメトリを接続することができます。 これは、そのポリラインから交差を検出し、ソースジオメトリ上にそのポイントを挿入します。 Snap Distance の値が大きいと過剰な検出が起こり、隣接するジオメトリポイントまで交差が検出され混乱を招いてしまいます。

Geometry Output

以下の設定は、このツールの出力と分割の方法を決めます。

Surface Output

出力が既存エッジ上に新しくエッジを分割するのか、それとも、ポイントのみを挿入するのかを決めます。 これは、 Cutting Geo TypePolylines または Polygon Surfaces の場合にのみ有効です。

Slicing Method

サーフェスをサーフェスで分割する方法を決めます。

  • Boolean Shatter - ブーリアンベースの分割は、一般的には効率が良いのですが、スナップ機能を利用することができません。サーフェスで細かいメッシュを分割する必要がある場合は、このBoolean Shatterモードが望ましいです。

  • Poly Split - このモードの特徴はスナップに対応していることです。サーフェス全体を分割しない分割を完全自動補間することができます。Poly Splitモードは、大量のジオメトリピースに対して処理速度が遅くなるので限界があり、適切なスナップ距離を実施する Auto Precision モードを有効にすると上手く動作します。

Prevent Incomplete Slices

Slicing MethodPoly Split モードの時、これが無効の場合、カットプリミティブがソースプリミティブを完全に横切っていなくても分割が実行されます。 これを有効にすると、完全に横切っていない分割は無視されます。

Include Shared Edges From Cutting Geometry

Slicing MethodBoolean Shatter モード、 Surface OutputSlice Surfaces に設定されている場合、分割平面ジオメトリとソース平面ジオメトリの共有エッジをそのソースジオメトリに入れ込むことができます。 この設定を有効にすると、それらのエッジは Cut Edge Group に格納され、 Cusp Cut Edges 処理の対象となります。 Boolean Shatter モードを使用する時は、重なったカット用ジオメトリは、ソースジオメトリと完全に重複していて、且つ、どちらのジオメトリも平面でXYZ軸に整列している場合にのみ正しく分割を検出することができることに注意してください!

Slice Edges Neighbouring the Source Group

有効な時に Source Geo Group を選択すると、分割と交差している非選択ジオメトリのエッジも分割されます。 これは、隣接プリミティブ上にポイントを挿入することで、ジオメトリを綺麗にそのままで維持します。 さらに、エッジグループとポイントグループを非選択ジオメトリまで伝搬させます。

Cusp Cut Edges

有効にすると、サーフェス上の分割エッジがカスプ(尖)化され、その分割エッジでジオメトリが分かれます。 Source Geo Group を使用、且つ、 Slice Edges Neighbouring Source Geo Groups を有効にすると、グループジオメトリと非グループジオメトリ間のエッジもカスプ(尖)化されて適切なカスプが得られます。 これは、 Surface OutputSlice Surfaces の場合にのみ利用可能です。

Cusp Cut Points

有効にすると、ポリライン上の分割ポイントがカスプ(尖)化され、その分割ポイントでジオメトリが分かれます。 これは、 Source Geo TypePolylines の場合にのみ利用可能です。

Tool Precision

以下の設定は、入力1と入力2の間で分割ポイントや分割エッジを検出する時の分割/スナップの精度を決めます。 このツールには、自動精度モードと手動精度モードがあります。 Auto Precision Correction を有効にすると、実際のスナップ値がパラメータインターフェース上に表示されます。

スナップ機能は、距離を大きく設定しすぎると分割自体が破綻してしまうので適切なレベルに維持するのが良いです。 Auto Precision Correctionモードは、自動的にスナップ強度と許容誤差に制限をかけることで、この問題を対処します。

  • 手動設定のスナップ - これは、臨機応変にスナップ値を変えて入力ジオメトリ上に特定の分割ポイントを挿入して作業する場合に役立ちますが、注意して使用してください。

  • Auto Precision Correction - 過剰なスナップや分割を防ぐために、スナップ距離と交差許容値に妥当な制限を加えることを試みます。

  • Auto Correct Non-Planar Tolerance - 複雑なメッシュなど細かなジオメトリのサーフェス間分割をする際に非平面検出率を自動的に上げます。しかし、ほぼ単純なメッシュに対してはむしろ逆効果になってしまう可能性があります!

Auto Precision Correction

有効にすると、入力ジオメトリの中間サイズに基づいて内部値を自動的にクランプします。 これは、入力ジオメトリの大きさと密度に比例したスナップ強度を調整するのに役立ちます。 Snap Distance の値を手動で設定する場合は、ソース入力の大きさに較べて高過ぎないように低過ぎないように注意してください。 そうしないと、良くない分割が生成されたり、分割に沿ってモデルが破綻してしまいます(v2.0で改良される予定)。 この実際の計算は次のとおりです: 入力1 の中間エッジ長と 入力2 の中間エッジ長のうち小さい方の値を採択してそこに0.1を乗算します。この機能を無効にすると、手動による Snap Distance の値が反映されます。

Auto Correct Non-Planar Tolerance

有効にすると、入力ジオメトリの中間サイズに基づいて Non-Planar Tolerance 値が自動的に調整されます。 これは、サイズが異なるサーフェスで複雑なサーフェスを分割する際に非平面ジオメトリの設定の補正を試みます。 これは、単純な平面ジオメトリには適していません。その場合、このオプションを無効なままにして、手動で Non-Planar Tolerance を設定する方が良いです。 この実際の計算は次のとおりです: Non-Planar Tolerance に、 入力1 の中間エッジ長の平方根を乗算し、1000を乗算します。この機能を無効にすると、手動による Non-Planar Tolerance の乗算値が反映されます。

Auto Precision Correction Limits

たいていの場合、 Auto Precision Correction の上限と下限は、モデルのプリミティブから中間サイズを自動的に検出することによって、幅広い範囲のスケールのモデルに対応できるように設計されています。 とはいえ、モデル内のプリミティブの表面積の相違が大きい場合、この自動補正は過剰な補正をしてしまいます。 この設定は、下限などの一部の制限を無効にしてスナップ値を不要にクランプしないようにすることができます。

Snap Distance

カット用ジオメトリをソースジオメトリにスナップさせる距離を設定します。 ポイントまたはポリラインを使って分割する場合に、カット用ジオメトリがソースジオメトリ上に正確に乗っていなくてもそのポイントがこの距離の範囲内にある時に分割が有効になります。 サーフェスを使って分割する場合、これは、カット用ジオメトリをソースジオメトリにスナップさせることでコーナーでの細い分割面ができないようにするのに役立ちます。 正確な分割を行ないたい場合、値が小さいほど精度が高くなります。 v1.0では、大きいスナップ値によってモデルが分割に沿って破綻してしまうので、スナップ値を適切な値に維持するのが良いです。 この問題はv2.0で対処される予定です。 デフォルトでは、手動で上書きしない限り Intersect Tolerance も設定されます。 Snap Distance は、 Auto Precision Correction を有効にすると自動的に調整されます。

Intersect Tolerance

有効にすると、許容値の考え方を Intersection ToleranceSnap Distance に分けることができます。 これは、入力1と入力2から交差を検出するポイント間の距離を決めます。 値が小さいほど精度が高くなります。これを Snap Distance と同じに設定するとより確実に動作し、必要な場合にのみ変更してください。

Point Snap Factor

ソースジオメトリポイントにスナップする強度を、この値の10乗で乗算します。 プリミティブのエッジを非常に細かく分割する時、コーナーでの分割は非常に微小になってしまって、スナップ距離に収まっていないポイントはそのままになるので、 その結果、微小な未分割のプリミティブのコーナーが残ってしまいます。 これは、スナップ強度が強いポイントをさらにポイントスナップさせることで、それらの未分割コーナーを隣接コーナーポイントにスナップさせます。 多用すると分割が破綻してしまうので注意してください。

Non-Planar Tolerance

非平面サーフェスを分割する時に、分割サーフェスと重なっているプリミティブやエッジの検出率を上げます。 中間プリミティブポイントと分割サーフェスは、この値と Intersection Tolerance を乗算してサーフェスを検出することができます。 この値は、分割後にエッジグループをソースメッシュに転送する際にも使用されるので、非平面サーフェスと非直線エッジに対して適切な転送が行なわれます。 この値と Snap Distance の値をどちらも高くすると過剰な分割が行なわれます。 Auto Correct Non-Planar Tolerance が有効な場合、これは乗数として作用します。

Edge Length Threshold

Slicing MethodBoolean Shatter モードの時、微小エッジがこの長さ以下の場合に結合されます。 メッシュに穴が開かないように低い値のままにするのが良いです。 これは、分割エッジに隣接する非選択ジオメトリにポイントを挿入する精度にも影響を与えます。

以下の設定を使用することで、結果が正しくない場合にこの分割システムの挙動をさらに調整することができます。

Disable Tolerance for Polyline Intersection Checks

これを有効にすると、 Intersection Tolerance がすべてのポリラインの交差チェックをしなくなります。 通常では、これらの交差チェックは許容値の範囲で行なわれます。 しかし、場合によっては、特に非常に大きなジオメトリの場合では、交差の検出に失敗する可能性があります。 これを無効にすると、その交差チェックの挙動が変わりますが、両方の入力のジオメトリが完全に重なっているかどうかの“再照会”は、それらのジオメトリが平面で、XYZ軸に平行になっていることが条件になります。 デフォルトでは、 Intersection Tolerance は有効になっています。

Group Output

以下の設定は、このツールで生成されるグループを決めます。

Cut Edge Group

有効にすると、このツールがサーフェス上に分割したエッジをこの名前でエッジグループとして出力します。

Avoid Grouping Incomplete Auto-Slices

不完全なスライスを許容した場合、繋がっているスライスがエッジグループに追加されます。 このオプションを有効にすると、そのグループからこのエッジを自動的に排除を試みます。 これは、エッジのカスプ化にも影響します。

Cut Point Group

有効にすると、ソースジオメトリ上で分割されたポイントをこの名前でポイントグループとして出力します。

Snap Point Group

有効にすると、ソースジオメトリにスナップされたポイントをこの名前でポイントグループとして出力します。

Center Point Group

有効にすると、プリミティブサーフェス内の2枚のスライス間の交差として分割された新しいポイントをこの名前でポイントグループとして出力します。

Preserve Edge Groups

ソース入力から出力に維持されるエッジグループをフィルタリングします。 このフィールドが空っぽ、または、*に設定すると、すべてのエッジグループが維持されますが、膨大な数のエッジグループがソースジオメトリ上に存在している場合、このコピー処理の負荷が大きくなってしまいます。

Cleanup

以下のオプションを使用することで、すべての分割処理が完了した後に出力ジオメトリをクリーンアップすることができます。

Sort Primitives by Connectivity ID

有効にすると、出力時に接続性ID順に従ってプリミティブ順がソートされます。

Sort Points By Vertex Order

有効にすると、出力時に頂点順に従ってポイント順がソートされます。

Post-Compute Normals

有効にすると、メッシュ全体で法線が再計算されます。 無効にすると、ソース入力の元々の法線を近似するのを試みます。

Visual Feedback & Performance

他のささいな設定を使用すれば、便利機能の視覚的フィードバックとパフォーマンスを調整することができます。

Input Connection ID

有効にすると、ソース入力のメッシュ接続性IDが、指定したPrimitiveアトリビュート名に書き出されます。

Display Output Connectivity as Primitive Color

これを使用すると、PolyScalpel SOPが出力するメッシュの接続性をデバッグしたり表示することができます。 これを使用することで、悪い分割を調べたり、繋がっていないセグメントを表示することができます。 この接続性IDは入力の接続性IDとは異なります。 メッシュ上のすべてのカラーアトリビュートは、このカラーで上書きされます。

Color Seed

出力の接続性カラーのシード値。

Always Display Cutting Guide

このノードを選択すると、カット用ジオメトリの場所を示したガイドジオメトリワイヤーフレームが常に表示されます。

Enable Compiling Inside Assets

有効にすると、このアセットの大部分を内部的にコンパイルして、この便利機能を高速化します。

Note

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

参考

このノードは、元々はE-Houdini AcademyのProcedural Asset Production Masterclassの一部として開発されました。 それがSide FX Labs 2021 Tech Art Challengeのコンテストエントリーで提出され、ベストUtility Asset部門で3位を獲得しました。 バージョン1.3.6がLabsに2022年7月21日にLabs Poly Scalpel 1.0として追加されました。 バージョン2.0が開発中で、そのゴールはスナップ機能の改良です。

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

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

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

Erwin Heyms - EhoudiniAcademy

ジオメトリノード