光線方向の すべての 交差のリストを取得するには、intersect_allを使用します。
int intersect(<geometry>geometry, vector orig, vector dir, vector &p, float &u, float &v)
int intersect(<geometry>geometry, vector orig, vector dir, vector &p, float &u, float &v, ...)
指定した光線とジオメトリの最初の交差を計算します。
ベクトルに沿って すべての 交差を取得するには、intersect_allを使用します。
可変長引数の"farthest"
を使用することで、最初の交差または最後の交差のどちらを返すのかを指定することができます。
int intersect(<geometry>geometry, vector orig, vector dir, vector &p, vector &uvw)
指定した光線とジオメトリの最初の交差を計算します。 ベクトル方向の すべての 交差を取得するには、代わりにintersect_allを使用します。
int intersect(<geometry>geometry, string group, vector orig, vector dir, vector &p, vector &uvw)
指定した光線と指定したグループ内のプリミティブの交差を計算します。
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
group
グループを指定すると、このグループ内のプリミティブのみの交差を計算します。
orig
光線の原点。
dir
光線の方向と 最大距離 。 この関数は、正規化された方向ベクトルを必要としません。 代わりに、そのベクトル長を検索の最大距離として使用します。
&p
光線とプリミティブが交差すると、この変数は、そのワールド空間の交点で上書きされます。
&u
, &v
, &uvw
光線とプリミティブが交差すると、この/これらの変数は、そのプリミティブ上のパラメトリック交差位置で上書きされます。
Returns
交差したプリミティブ番号、または、エラーが起きたり、光線が何も交差しなかった場合は-1
。
Note
交差がメタボールジオメトリに対して実行されると、光線が当たったメタボールのプリミティブ番号を判断することができません。 この場合、関数は、交差したジオメトリのプリミティブの数を返します。
Examples ¶
// 現在のポイントの位置でVelocityベクトルの方向を向いた光線を使用して、2番目の入力のジオメトリと交差させます。 vector origin = @P; float max_dist = 1000; vector dir = max_dist * normalize(@v); vector isect_pos; float isect_u, isect_v; int isect_prim = intersect(@OpInput2, origin, dir, isect_pos, isect_u, isect_v); // 代わりに、最も遠くにある交差を返します。 isect_prim = intersect(@OpInput2, origin, dir, isect_pos, isect_u, isect_v, "farthest", 1);
See also | |
intersect | |
ray | |
search |