Geometry.GetSurfacePointLocatorsFromPoints operator

Introduced

v5.0

Description

Returns a PointLocatorData object containing surface locations corresponding to the specified Points of the geometry (or all Points if not specified).

In the case of a NurbsSurfaceMesh, there is no direct relationship between the points (control vertices) and the surface. In that case, the returned point locators correspond to the surface locations being the most influenced by each input control vertex.

Note: The returned point locators can be evaluated on any Geometry instance having the same topology.

Scripting Syntax

oReturn = Geometry.GetSurfacePointLocatorsFromPoints( [PointIndices] );

Return Value

PointLocatorData

Parameters

Parameter Type Description
PointIndices 1-dimensional Array A 1D array containing point indices for which the point locators will be built.

Examples

JScript Example

/* 
        This example uses point locators to place a null positioned 
        and oriented to a surface location corresponding to each
        control vertex of the NURBS sphere.
*/
NewScene( null, false );
var root = Application.ActiveSceneRoot;
var SphereGeom = root.AddGeometry("Sphere", "NurbsSurface").ActivePrimitive.Geometry;
var PointLocatorsFromSpherePoints = SphereGeom.GetSurfacePointLocatorsFromPoints();
CreateNullsAtPointLocations(SphereGeom, PointLocatorsFromSpherePoints);
function CreateNullsAtPointLocations( InGeom, InPointLocators )
{
        var SpherePositions = InGeom.EvaluatePositions(InPointLocators).toArray();
        var SphereNormals = InGeom.EvaluateNormals(InPointLocators).toArray();
        var TempVector = XSIMath.CreateVector3();
        var TempRotation = XSIMath.CreateRotation();
        for (i = 0; i < SpherePositions.length; i+=3)
        {
                var NullObj = root.AddNull();
                TempVector.Set(SpherePositions[i], SpherePositions[i+1], SpherePositions[i+2]);
                NullObj.LocalTranslation = TempVector;
                TempVector.Set(SphereNormals[i], SphereNormals[i+1], SphereNormals[i+2]);
                TempRotation.SetFromXYZAxes( TempVector, TempVector, TempVector );
                NullObj.LocalRotation = TempRotation;
        }
}

See Also

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