On this page | |
Since | 17.0 |
Triangulate 2Dは入力ジオメトリ内の2Dポイントを繋げて、できるだけ(鋭角な角度を回避して)“良い形状”の2D三角形メッシュを作成します。
Triangulate 2Dは、平面上のポイントに対して動作するので、各3D入力ポイントに2D位置を割り当てる必要があります。 これには3通りの方法があります:
-
3Dポイントセットにベストフィットする平面にポイントを投影する。
-
ユーザがポイントの投影先となる平面を選択する。
-
ユーザが各ポイントの2D座標に対応したPointアトリビュートを用意する。
Triangulate 2Dは、特定のポイントのペアを出力メッシュのエッジ(またはRefinementを実行した時のエッジのサブディビジョン)にすることができます。 これらのエッジを“constraints(拘束)”と呼びます。 Constraints タブ下でエッジグループまたはプリミティブグループ(または両方)を用意することで、 そのconstraints(拘束)を指定することができます。
-
特定の境界エッジを最終的な三角形に存在させるには、 Constraint primitives パラメータにエッジのプリミティブ番号を入力するか、 または Constraint edges パラメータに必要なエッジのグループを指定します。
Triangulate 2Dは、 Outside Removal タブにある色々な方法を指定することで、目的の領域の外側と判断された三角形を削除することもできます。
Triangulate 2Dの Refine タブでポイントを追加すれば、三角形の形状を改良することもできます。
-
新しくポイントを追加せずに入力を三角形分割するには、 Refine をオフにし、 Constraint Primitives を空っぽのままにします。
-
ポイントの数が増えても良質な三角形を生成するには、 Refine をオンにします。 Maximum Area (三角形の大きさを制御)と Minimum Angle (値を上げると、鋭角な細長い三角形が回避されます)のパラメータを使えば、三角形の品質を制御することができます。 Minimum Edge Length パラメータを設定すれば、大きな三角形へのRefinement(精密化)を制限することができます。
Tip
三角形分割にランダム性を加えるには、元のジオメトリにScatter SOPを接続することで、ランダムな位置にポイントを追加します。
技術的には、Triangulate 2Dは、 拘束付きのドロネー三角形分割 を生成します。これは同じポイントセットに対して可能なすべての三角形分割の最小角度が最大になります。そして精密処理が ドロネーリファイン です。
パラメータ
Points
三角形分割で使用するポイントのサブセット。
2D Positions
三角形分割に使用するポイントの2D位置を決める方法を指定します。
Fit Plane
ポイントを3Dポイントセットにベストフィットする平面に投影することで、ポイントの2D位置を取得します。
Select Projection Plane
3Dポイントの投影先となる投影平面をユーザが指定します。
Origin
Select Projection Plane を使用した時、投影平面は、“origin”として扱われるこのポイントを基準に決まります。
Distance
Select Projection Plane を使用した時、このパラメータは、投影平面と Origin で指定したポイント間の距離を決めます。
Direction
Select Projection Plane を使用した時、このベクトルは、 Origin で指定したポイントから離す投影平面の方向を決めます。
Use Attribute
指定したPointアトリビュート(アトリビュートは、最低でも2つの成分を持つ浮動小数点ベクトルでなければなりません)から各ポイントの2D位置を読み込みます。
Attribute Name
Use Attribute を使用した時、ポイントの2D位置が、この名前のアトリビュートから読み込まれます。
Restore Original Point Positions
選択すると、生成される三角形分割の三角形は、入力ポイントの元の3D位置を使用してトランスフォームされます。 新しく生成されるポイント(RefinementまたはConstraint Conflict Resolution用)には、入力ポイントの3D位置に基づいて補間された位置が割り当てられます。
Keep Primitives
三角形分割で作成された新しいプリミティブに加えて、出力に入力プリミティブすべて(拘束プリミティブを除く)を保持します。 このオプションがオフの時、入力プリミティブは出力されません。
Recompute Point Normals
(ポイント法線があれば)そのポイント法線を再計算します。
Remove Unused Points
選択すると、入力ポイントグループ外のポイントが出力から削除されます。
Remove Duplicate Points from Triangulation
指定した2D位置に対して、1ポイントのみを三角形分割に挿入することができます。 複数のポイントが同じ2D位置である場合、それらのポイントのうち1つだけが三角形分割に挿入され、他のポイントは無視されます。 このオプションを選択すると、それらの重複したポイントが出力から削除されます。選択しなかった場合は、独立したポイントのままになります。
Random Seed
このノードで実装された三角形分割とRefinement(精密化)のアルゴリズムは、本質的には“ランダム化”されています。 つまり、入力ポイントを“ランダム”な順番で処理する場合にのみ、高い確率でピークパフォーマンスが期待されます。 Houdiniのノード出力は決定論的でなければならないので、このパラメータで決まる入力ポイントの固定ランダムのような並べ替えが使われます。 たいていの場合では、この固定された並べ替えがほぼ最適に実行されるはずですが、理論的には固定された並べ替えが特定のポイントセットに対して 弱く実行することができます。そのような場合にシード値を変更すると、生成される出力に影響を与えますが、特にポイント番号やプリミティブ番号に 関して三角形分割の速度に対して目に見える効果が出ます。
Constraints
拘束を使用することで、特定のポイントのペアを出力三角形分割のエッジ、別名 constrained edge で強制的に繋げることができます。 拘束プリミティブグループ(すべてのエッジが拘束と見なされるポリゴンまたはポリゴンカーブで構成)を使用するか、またはエッジグループを使用するか、 または両方で拘束を指定することができます。
Constraint Primitives
このプリミティブグループの各ポリゴンまたはポリゴンカーブのすべてのエッジが拘束と見なされ、出力三角形分割に強制されます。
Constraint Edges
指定したエッジグループのすべてのエッジは、出力三角形分割の拘束として定義されます。 エッジグループのエッジは、入力のプリミティブエッジとして存在する必要がありません。 サンプルとして、“p10-20 p16-24”のエクスプレッションを拘束エッジグループとして使用すると、 ポイント10と20が出力のエッジで接続され、ポイント16と24も同様に接続されます。
No New Points on Constraints
2つの拘束の2Dラインセグメントが交差する場合、2つの拘束を同時に強制させることは不可能です。 そのような拘束は、お互いに“コンフリクト”と呼びます。 このオプションを選択すると、コンフリクト拘束の各ペアのどれかが落ちるので、片方の拘束を強制することができます。 選択しなかった場合、コンフリクトは、拘束を小さく分割し、交差部分に新しいポイントを挿入することで解決します。
Create Group for New Points on Constraints
選択すると、拘束のコンフリクトを解決するためにポイントグループがポイントに対して作成され追加されます。
Group Name
Create Group for New Constraint Points on Constraints がオンの時、 Triangulate 2Dは、この名前のグループを作成して、拘束エッジに対して作成されたポイントを格納します。
Create Group for Output Constraint Edges
選択すると、エッジグループが作成されます。このグループは、出力三角形分割のすべての拘束エッジを含みます。
Group Name
Create Group for Output Constraint Edges がオンの時、 エッジグループがこの名前で作成され、出力拘束エッジを格納します。
Outside Removal
このノードは、オプションで、拘束で決定される 外側 に属していると解釈可能な生成された三角形のサブセットを削除することができます。 これは、外側三角形の初期セットから開始し、拘束エッジによる現在のflood設定とは 別に floodが連続して近接三角形まで広がる一連の flooding 処理で行われます。言い換えると、削除floodは、拘束エッジでのみブロックされます。
Remove Triangles
Reachable From Convex Hull Boundary
選択すると、削除floodは、三角形分割の外側境界(ポイントセットの凸ハルの境界と同一)から開始し、三角形分割の非拘束エッジを通して伝搬します。
例えば、以下の拘束三角形分割:
三角形を削除する Reachable From Convex Hull Boundary は、この結果を生成します:
Outward Reachable From Constraint Primitives
選択すると、削除floodは、各閉じた拘束プリミティブの境界外側から始まります。
例えば、三角形を削除する前のサンプルの Outward Reachable From Constraint Primitives は、この結果を生成します:
But Keep Triangles
Inward Reachable From Constraint Primitives
このオプションは、同じ三角形が他の拘束プリミティブの境界内側からfloodして到達できる時なら、拘束プリミティブの外側から始めるflood内の三角形の削除を取り消します。
三角形を削除する Outward Reachable From Constraint Primitives 、前のサンプルの三角形を保持する Inward Reachable From Constraint Primitives は、この結果を生成します:
Refinement
Refine
新しくポイントを追加することで、三角形分割の品質を改良します。 三角形分割によって、ポイントの数が入力のポイントの数より増えますが、三角形が良い形状になります。
以下のポイントから始めるとします:
Refine をオフにすると、Triangulate 2Dは利用できるポイントを使って三角形を作成します。 状況によっては、良くない細長い三角形が生成される場合があります:
Refine をオンにすると、Triangulate 2Dは Maximum Area , Minimum Angle , Minimum Edge Length のパラメータの設定に順守するようにポイントを追加して 良い三角形を作成します:
Maximum Area
各三角形内側の最大面積。この値を下げると、三角形の大きさが小さくなり、等辺な三角形に近づきます。 非常に小さな値を設定すると、三角形分割の処理時間が長くなります。
Minimum Angle
各三角形内側の最小角度(度)。 この値を上げると、三角形がより対称的な三角形になり、細長い三角形が軽減されます。 30度より大きい値は、保証できません。そのような値は、Refinementを永久に行なわさせてしまうことがよくあり、最大許容ポイント数( Maximum New Points )に到達した時に停止します。
Minimum Edge Length: #channels: /minedgelength
ローカル領域での過剰なRefinement(精密化)を回避するには、さらに精密化される三角形の最長エッジに対して最小距離を指定します。 三角形のエッジすべてが指定した長さより短くなると、その三角形の形状の改良が終わります。
Maximum New Points
三角形分割する時に追加可能な新しいポイントの数を制限します。 新しいポイントは、拘束条件を満たしたり、 Refine を行なう時に、この数を上限に追加されます。 これは、三角形分割が無限ループに陥らないようにできるので非常に役に立ちます。 通常では、この数は、あなたが生成したいポイント数よりも大きな値に設定します。
Examples
Chainmail Example for Triangulate 2D geometry node
このサンプルでは、鎖かたびらの環を作成する新しいTriangulate2D SOPの高度な使い方を説明しています。
See also |