v6.0
以降のGeometry.GetClosestLocationsを呼び出す方法と、Geometry.GetClosestLocationsWithinRadiusおよびGeometry.GetRaycastIntersectionsを操作する方法をセットアップします。
このメソッド、Geometry.GetClosestLocations、またはGeometry.GetClosestLocationsWithinRadiusが最初に呼び出されたときに高速化用のキャッシュが作成されます。このキャッシュを使用する条件は、以降のGeometry.GetClosestLocations、Geometry.GetClosestLocationsWithinRadius、Geometry.GetRaycastIntersectionsおよびの呼び出し中にジオメトリが変形されないことです。この条件が満たされない場合は再びジオメトリを取得し、このメソッドを呼び出して再び高速化キャッシュを作成します。この操作に従わない場合は、正しい結果を取得できません。
Geometry.SetupPointLocatorQueries( Int32 in_Method, Object in_Transfo, Object in_FacetsToRestrictSearch, Int32 in_NbLocatorsToBeQueried ); |
Geometry.SetupPointLocatorQueries( Method, Reference, Facets, NbLocatorsToBeQueried ); |
パラメータ | タイプ | 説明 |
---|---|---|
Method | siClosestLocationMethod |
最も近い場所を検索するメソッド。次にGeometry.GetRaycastIntersectionsを呼び出す場合は、この値を SiClosestSurfaceRaycastIntersections に設定する必要があります。
デフォルト値:siClosestSurface |
Reference | SITransformation | 入力位置が解釈され、検索が実行される場所にリファレンス変換を指定できます。「最短距離」のリレーションシップは、ジオメトリおよび入力位置の空間基準に対して相対的に変化します。たとえば、オブジェクトのポイントに最も近い場所を別の場所にコピーし、その両方を不均等にスケーリングしたり、ポーズにシアリングを加えたりすると、一般的には異なる結果が得られます。このような場合にローカル空間で最も近い場所を計算すると、グローバル空間での計算結果とは異なる値が取得される傾向があります。 |
Facets | 1DArray | (すべてのジオメトリを検索せず)検索範囲をファセットのサブセットに制限します。検索が高速になり、高速化キャッシュのメモリ使用率を抑えることができます。 |
NbLocatorsToBeQueried | Long | 呼び出しの後にクエリされるポイントロケータの近似数。全体のパフォーマンスを向上させるのに役立ちます。何も手がかりがない場合は-1が渡されます。 |
/* This example uses PointLocatorData to shrink-wrap a sphere on only two faces of a cube */ NewScene( null, false ); var root = Application.ActiveSceneRoot; var CubeGeom = root.AddGeometry("Cube", "MeshSurface").ActivePrimitive.Geometry; var SphereObj = root.AddGeometry("Sphere", "MeshSurface"); SphereObj.subdivv = 24; SphereObj.subdivu = 24; // Freeze it, otherwise its position array cannot be set: FreezeObj(SphereObj); var SphereGeom = SphereObj.ActivePrimitive.Geometry; var Facets = new Array(2); var Transform = XSIMath.CreateTransform(); Facets[0] = 2; Facets[1] = 3; CubeGeom.SetupPointLocatorQueries(siClosestSurface,Transform,Facets,-1); var SphereOnCubePointLocators = CubeGeom.GetClosestLocations(SphereGeom.Points.PositionArray); SphereGeom.Points.PositionArray = CubeGeom.EvaluatePositions(SphereOnCubePointLocators); |
PointLocatorData Geometry Geometry.GetClosestLocations Geometry.GetClosestLocationsWithinRadius Geometry.GetRaycastIntersections Geometry.GetSurfacePointLocatorsFromPoints Geometry.EvaluatePositions Geometry.EvaluateNormals Geometry.EvaluateClusterProperty PolygonMesh.GetPolygonIndexArray PolygonMesh.GetTriangleVertexIndexArray PolygonMesh.GetTriangleNodeIndexArray PolygonMesh.GetTriangleWeightArray PolygonMesh.ConstructPointLocators NurbsSurfaceMesh.GetSubSurfaceIndexArray NurbsSurfaceMesh.GetNormalizedUVArray NurbsSurfaceMesh.ConstructPointLocators