On this page | |
Since | 13.0 |
概要 ¶
このノードは、開始点から終了点までの間で、入力サーフェスジオメトリのエッジに沿った最短パスを検索し、それらのパスに沿ってポリゴンカーブを作成します。
パスの長さ以外にもパスのコストを指定するオプションがたくさんあります。例えば、特定のポイントを通過するコストです。 開始点と終了点がパスで繋げることができない場合、またはコストが無限大になる場合は、ポリゴンは作成されません。
また、2番目の入力を指定すると、 Start Points と End Points のパラメータが2番目の入力のポイントを参照します。パスは1番目の入力(サーフェスジオメトリ)のポイント(2番目の入力で指定したポイントに一番近いポイント)で開始そして終了します。例えば、これは1本の線分を2番目の入力に接続して、インタラクティブにその線分を動かすことで、その線分の0番を開始点、1番を終了点として指定することができます。
パラメータ ¶
Start Points
パスの開始点となるポイントで、ほとんどの場合は1個のポイントを指定します。2番目の入力を接続すると、これは2番目の入力のポイントを参照するようになり、パスは、その2番目の入力の指定したポイントに一番近い1番目の入力のポイントを開始点にします。
End Points
パスの終了点となるポイントで、ほとんどの場合は1個のポイントを指定します。2番目の入力を接続すると、これは2番目の入力のポイントを参照するようになり、パスは、その2番目の入力の指定したポイントに一番近い1番目の入力のポイントを終了点にします。
Adjacency Array Attribute
有効な場合、ここには、各ポイントから配列内の番号のポイントの方向のエッジを追加するように指示したPointアトリビュートを指定します。 この場合では、オプションで Point Cost Attribute に、他のコストに加えて、それらのエッジに追加するコストに相当するエントリーを含んだ配列アトリビュートを指定することができます。
Output ¶
Output Paths
有効にすると、見つかったパスをポリゴンカーブとして出力します。無効にすると、パスが出力されず、 Keep Original Geometry が常に有効になります。
From any start to any end
任意の開始点と任意の終了点との間に1本の一番コストが低いパスが存在すれば、そのパスを出力します。
From each start to any end
各開始点毎に対して、そのポイントから任意の終了点までの一番コストが低いパスが存在すれば、そのパスを出力します。
From any start to each end
各終了点毎に対して、任意の開始点からそのポイントまでの一番コストが低いパスが存在すれば、そのパスを出力します。
From each start to each end
各開始点毎、各終了点毎に対して、その開始点からその終了点までの一番コストが低いパスが存在すれば、そのパスを出力します。
From each start to corresponding end
各開始点毎に対して、指定した開始点と終了点の順番に合わせて、その開始点から終了点までの一番コストが低いパスが存在すれば、そのパスを出力します。 終了点の数は、開始点の数と同じでなければなりません。
Keep Original Geometry
有効にすると、ソースジオメトリが出力されます。さらに Output Paths も有効にすれば、それらのパスがサーフェスジオメトリとポイントを共有します。 Output Paths を無効にすれば、これは常に有効になります。
Cost Attribute
アトリビュート名を指定すると、その名前のPointアトリビュートが作成されます。このアトリビュートは、各ポイントにおける累積コストを示します。さらに Keep Original Geometry も有効にすれば、すべてのポイントに到達するコストが出力されます。このアトリビュートはポイントに含まれ、出力されるパスには含まれません。そのような設定の時に複数の開始点を指定すると、 Output Paths ドロップダウンメニューで選択したオプションに関係なく任意の開始点から各ポイントまでの最小の到達コストが出力されます。指定した開始点から任意のポイントまで到達不可能であれば、このアトリビュートは、そのポイントに対してマイナスの値を持ちます。複数の開始点を指定し、2つの From each start… オプションの中からどれかを選択すると、このアトリビュートは開始点の数と同じサイズのタプルを持ち、 Start Points フィールドで指定した順番で、各開始点からのパスの最小コストを出力します。 Adjacency Array Attribute が有効であれば、オプションで、他のコストに加えて、ここに Adjacency Array Attribute で指定された方向のエッジに追加するコストに相当するエントリーを含んだ配列アトリビュートを指定することができます。
Previous Point Number Attribute
アトリビュートを指定すると、その指定した名前のPointアトリビュートが作成されます。このアトリビュートは、各出力ポイントが最初に到達したサーフェスジオメトリのポイント番号を示します。これには、出力パスポリゴン表現よりもVEXで使用しやすいパス表現を用意します。
Point Number Attribute
アトリビュート名を指定すると、その名前のPointアトリビュートが作成されます。このアトリビュートは、各出力ポイントに相当するサーフェスジオメトリのポイント番号を示します。この情報は、サーフェスジオメトリに戻すためのマッピングのためにあり、 Keep Original Geometry が無効な場合に役に立ちます。
Paths Group
プリミティブグループ名を指定すると、その名前のプリミティブグループが作成されて、パスのポリゴンカーブがそのグループに追加されます。これは、サーフェスジオメトリと出力パスを区分する時に役に立ちます。
Start Point Attribute
アトリビュート名を指定すると、その名前のPrimitiveアトリビュートが作成されます。このアトリビュートは、各出力パスに相当する入力開始点を示します。 Keep Original Geometry を有効にすると、このアトリビュートは、出力パスではないプリミティブに対して-1の値を持ちます。
End Point Attribute
アトリビュート名を指定すると、その名前のPrimitiveアトリビュートが作成されます。このアトリビュートは、各出力パスに相当する入力終了点を示します。 Keep Original Geometry を有効にすると、このアトリビュートは、出力パスではないプリミティブに対して-1の値を持ちます。
Path Cost Attribute
アトリビュート名を指定すると、その名前のPrimitiveアトリビュートが作成されます。このアトリビュートは、各出力パスのコストを示します。 Keep Original Geometry を有効にすると、このアトリビュートは、出力パスではないプリミティブに対して-1の値を持ちます。
Path Costs ¶
Max Search Path Cost
有効にすると、これより高いコストのパスが無効と見なされます。これによって、より高いコストのパスが関係ない場合には、パスの検索を速くすることができます。
Point Cost Attribute
アトリビュート名を指定すると、サーフェスジオメトリ上の指定したPointアトリビュートが各ノードのパスのコストに加算されます。
Primitive Cost Attribute
アトリビュート名を指定すると、サーフェスジオメトリ上の指定したPrimitiveアトリビュートがプリミティブのエッジ沿いを通過するパスのコストに加算されます。複数のプリミティブが同じエッジを共有している時、一番小さい番号のプリミティブが使われます。プリミティブが Directed Primitives グループ内に存在すれば、そのエッジが正しい方向を向いているプリミティブのみが考慮されます。
Omit Distance from Cost
有効にすると、エッジの長さがエッジのコストに含まれなくなります。これは、エッジの長さに関係しないエッジのコストが必要な時に役に立ちます。これは、 Custom Edge Cost パラメータで指定することができます。
Consider Turning Costs
これはデフォルトでは無効になっており、エッジのコストが、そのエッジ上のポイントにのみ依存することができます。しかし、これを有効にすると、エッジのコストがさらに前のエッジに依存可能になるような遅い手法が使われます。これは、コストが例えば回転角度に依存させることができます。
Angular Cost Attribute
アトリビュート名を指定すると、サーフェスジオメトリ上の指定したPointアトリビュートがパス内の各ポイントの回転角度で乗算されて、その結果がパスのコストに加算されます。これは Consider Turning Costs が有効な時にのみ使うことができます。
Custom Edge Cost
これは独自のエッジコストを指定するオプションであり、すべてのエッジに加算する一定コストまたはエクスプレッションを指定し、非常に広範囲なコストが可能です。例えば、急な勾配のあるエッジを制限することができます。 Consider Turning Costs を有効にすると、エクスプレッションはエッジより前にあるポイントを参照することができます。利用可能なローカル変数のリストは以下を参照してください。
Enable Primitive Variables in Custom Cost
有効にすると、 Custom Edge Cost と Override Heuristic で指定したエクスプレッションが、考慮されるエッジのプリミティブを参照することができます。 Consider Turning Costs を有効にすると、それらのエクスプレッションがエッジより前にあるプリミティブを参照することができます。利用可能なローカル変数のリストは以下を参照してください。
Override Heuristic
パスが1個の終点にしか見つからない場合、現在のポイントから終点までの最小コストを発見的過小評価によって検索します。いくつかの場合では、この過小評価が良い結果を出し、場合によっては検索速度が非常に速くなる場合があり、ここでは、それを指定することができます。
Surface Constraints ¶
Surface Primitives
パスが、それらのプリミティブのエッジのみを通過することを許可します。このフィールドが空っぽの場合、パスは、任意のプリミティブのエッジを通過することができます。
Directed Primitives
有効にすると、指定したプリミティブのエッジが“方向付き”と見なされます。つまりパスは、エッジが他のプリミティブに移らない限りは、プリミティブ内のエッジと同じ方向にしか通過することができません。これは、例えば、下方向に下がって行くことができても、上方向に上がることができないといった一方向にのみしか移動させないようにしたい時に役に立ち、目的の方向へポリゴンカーブが使われます。さらに Custom Edge Cost を使えば、エッジコストを別の方向に増やすこともできます。
Edges to Avoid
有効にすると、それらのエッジがパスでは使われなくなります。
ローカル変数 ¶
Custom Edge Cost と Override Heuristic の両パラメータでは、以下のローカル変数を使用することができます。
PTSTART
現在の開始点の番号。開始点が複数存在し、 Output Paths オプションを無効または任意の開始点からのパス検索に設定している場合、この変数は利用できません。
PT0
考慮されるエッジよりも前にあるエッジの後尾にあるポイントの番号。$PT
が開始点であれば、前のポイントが存在しないので、これは-1になります。この変数は、 Consider Turning Costs が有効な時のみ利用可能です。
PT
考慮されるエッジの後尾にあるポイント、つまり、現在の検索パスに追加されたばかりのポイントの番号。
PT2
考慮されるエッジの先頭にあるポイント、つまり、現在の検索パスに追加されようとしているポイントの番号。
PTEND
固有な終了点の番号。終了点が複数存在すれば、この変数は利用できません。
PR0
考慮されるエッジよりも前にあるエッジ、つまり現在の検索パスに追加されたばかりのエッジを共有しているプリミティブで一番小さいプリミティブ番号。$PT
が開始点であれば、前のポイントが存在しないので、これは-1になります。この変数は、 Consider Turning Costs と Enable Primitive Variables in Custom Cost が有効な時のみ利用可能です。 Directed Primitives が有効な時は、方向付きグループ内のプリミティブのみが、プリミティブのエッジと同じ方向を向いているエッジを共有しているとみなされます。
PR
現在の検索パスに追加されようとしているエッジを共有しているプリミティブで一番小さいプリミティブ番号。この変数は、 Enable Primitive Variables in Custom Cost が有効な時のみ利用可能です。 Directed Primitives を有効にすると、方向付きグループ内のプリミティブのみが、プリミティブのエッジと同じ方向を向いているエッジを共有しているとみなされます。
LEN0
考慮されるエッジよりも前にあるエッジの長さ。$PT
が開始点であれば、前のポイントが存在しないので、これは0になります。この変数は、 Consider Turning Costs が有効な時のみ利用可能です。
LEN
考慮されるエッジの長さ。
TXSTART, TYSTART, TZSTART
現在の検索ポイントの座標。開始点が複数存在し、 Output Paths オプションを無効または任意の開始点からのパス検索に設定している場合、この変数は利用できません。
TX0, TY0, TZ0
考慮されるエッジよりも前にあるエッジの後尾にあるポイントの座標。$PT
が開始点であれば、前のポイントが存在しないので、座標の値は開始点の座標と同じになります。この変数は、 Consider Turning Costs が有効な時のみ利用可能です。
TX, TY, TZ
考慮されるエッジの後尾にあるポイント、つまり、現在の検索パスに追加されたばかりのポイントの座標。
TX2, TY2, TZ2
考慮されるエッジの先頭にあるポイント、つまり、現在の検索パスに追加されようとしているポイントの座標。
TXEND, TYEND, TZEND
固有な終了点の座標。終了点が複数存在すれば、これらの変数は利用できません。
Examples ¶
DirectedEdgesPath Example for Find Shortest Path geometry node
このサンプルでは、FindShortestPath SOPを使って、指向性のエッジを持つジオメトリから最短パスを見つける方法を説明しています。 指向性のエッジは、1方向にしか移動できません。
SOPがどのように間違えた方向を回避するのか、なぜ出力方向のエッジのみではポイントに到達できないのかを調べるために、指向性のエッジだけでなく、開始/終了点も変更してみてください。
PathAnalysis Example for Find Shortest Path geometry node
これは、FindShortestPathとAttribWrangleによる測定に基づいた“中心軸”パスを優先にする高度なサンプルです。これは、壁への近接を回避するのに役に立ちます。
空間内でもっと簡単に確認するには、Display OptionsダイアログのOptimizationタブにあるCulling > Remove Backfacesをオンにします。 Switchノードを使って別の中心軸測定を可視化してみてください。パスの中心軸を考慮しない同じサンプルを、違いがわかるようにSOPネットワーク内の端に置いています。
See also |