Geometry.GetRaycastIntersections

Geometry.GetRaycastIntersections operator

導入

v6.0

詳細

指定した入力位置と配列からレイキャストを介して検索されたサーフェイス交点を含むPointLocatorDataオブジェクトを戻します。デフォルトでは、入力位置はオブジェクトのローカル空間リファレンスに定義する必要があります。

このメソッドを使用するには、まずGeometry.SetupPointLocatorQueriesの Method 引数で siClosestSurfaceRaycastIntersection を指定する必要があります。

このメソッドを呼び出すと、高速化用のキャッシュが自動的に作成されます。詳細については、Geometry.SetupPointLocatorQueries を参照してください。

同じトポロジを持つ任意の Geometry インスタンスについてポイントロケータが計算され、戻される場合があります。

C#構文

PointLocatorData Geometry.GetRaycastIntersections( Object in_pPositions, Object in_pRays, siLineIntersectionType in_eLineType );

スクリプト構文

oReturn = Geometry.GetRaycastIntersections( Positions, Rays, LineType );

戻り値

PointLocatorData

パラメータ

パラメータ タイプ 説明
Positions Array パックされたXYZトリプレットの 1D 配列または XYZトリプレットの 2D 配列のいずれかの書式のDouble配列。
レイ Array パックされたXYZトリプレットの 1D 配列または XYZトリプレットの 2D 配列のいずれかの書式のDouble配列。これらのレイがそれぞれ、レイキャストで使用されるベクトルを定義します。ベクトルの長さは、LineType 引数の SiSegmentIntersection を渡す場合に重要です。
LineType siLineIntersectionType ラインのタイプです。

デフォルト値:siSemiLineIntersection

JScript の例

/*

	Example using GetRaycastIntersections to find the intersection with a ray and a mesh sphere

*/

NewScene();

var NullObj = Application.ActiveSceneRoot.AddNull();

Translate(NullObj, -2.0, 8.0, 5.0, siRelative, siView, siObj, siXYZ);

var SphereObj = Application.ActiveSceneRoot.AddGeometry("Sphere", "MeshSurface");

var SphereGeom = SphereObj.ActivePrimitive.Geometry;

var vbArr = new VBArray( NullObj.Kinematics.Global.Transform.GetTranslationValues2() ); 

var array = vbArr.toArray();

var vbArr2 = new VBArray( SphereObj.Kinematics.Global.Transform.GetTranslationValues2() ); 

var array2 = vbArr2.toArray();

array2[0] = array2[0] - array[0];

array2[1] = array2[1] - array[1];

array2[2] = array2[2] - array[2];

var ClosestPointLocator = SphereGeom.GetRaycastIntersections( array, array2 );

var ClosestPosition = SphereGeom.EvaluatePositions(ClosestPointLocator).toArray();

var TriangleVertices = SphereGeom.GetTriangleVertexIndexArray(ClosestPointLocator).toArray();

var TriangleWeights = SphereGeom.GetTriangleWeightArray(ClosestPointLocator).toArray();

Application.LogMessage("The intersection of the mesh sphere and the ray starting where the Null is and ending at 0,0,0 is ("

	+ ClosestPosition[0] + ", " + ClosestPosition[1] + ", " + ClosestPosition[2] + ")");

Application.LogMessage("which corresponds to the triangle made of vertices ("

	+ TriangleVertices[0] + ", " + TriangleVertices[1] + ", " + TriangleVertices[2] + ").");

Application.LogMessage("The barycentric weight relatively to each triangle vertex is ("

	+ TriangleWeights[0] + ", " + TriangleWeights[1] + ", " + TriangleWeights[2] + ").");

//INFO : The intersection of the mesh sphere and the ray starting where the Null is and ending at 0,0,0 is (-0.7933665513992314, 3.1734662419917105, 1.9834164080087983)

//INFO : which corresponds to the triangle made of vertices (14, 21, 22).

//INFO : The barycentric weight relatively to each triangle vertex is (0.3966832756996155, 0.20538949966430664, 0.3979272246360779).

関連項目

PointLocatorData Geometry Geometry.GetClosestLocations Geometry.SetupPointLocatorQueries Geometry.GetSurfacePointLocatorsFromPoints Geometry.EvaluatePositions Geometry.EvaluateNormals Geometry.EvaluateClusterProperty PolygonMesh.GetPolygonIndexArray PolygonMesh.GetTriangleVertexIndexArray PolygonMesh.GetTriangleNodeIndexArray PolygonMesh.GetTriangleWeightArray PolygonMesh.ConstructPointLocators NurbsSurfaceMesh.GetSubSurfaceIndexArray NurbsSurfaceMesh.GetNormalizedUVArray NurbsSurfaceMesh.ConstructPointLocators