3D Lingo Dictionary > L-N > modelsUnderRay

 

modelsUnderRay

Syntax

member(whichCastmember).modelsUnderRay(locationVector, directionVector {, maxNumberOfModels, levelOfDetail})

Description

3D command; returns a list of models found under a ray drawn from the position specified by locationVector and pointing in the direction of directionVector, with both vectors being specified in world-relative coordinates.

The optional maxNumberOfModels parameter allows you to limit the length of the returned list. If this parameter isn't specified, the command returns a list containing references for all of the models found under the specified ray.

The optional levelOfDetail parameter allows you to specify the level of detail of the information returned. The levelOfDetail parameter can have the following values:

#simple returns a list containing references to the models found under the point. This is the default setting.

#detailed returns a list of property lists, each representing an intersected model. Each property list will have the following properties:

#model is a reference to the intersected model object.

#distance is the distance from the world position specified by locationVector to the point of intersection with the model.

#isectPosition is a vector representing the world space position of the point of intersection.

#isectNormal is the world space normal vector to the mesh at the point of intersection.

#meshID is the meshID of the intersected mesh which can be used to index into the mesh list of the meshDeform modifier.

#faceID is the face ID of the intersected face which can be used to index into the face list of the meshDeform modifier.

#vertices is a 3-element list of vectors that represent the world space positions of the vertices of the intersected face.

#uvCoord is a property list with properties #u and #v that represent the u and v barycentric coordinates of the face.

Within the returned list, the first model listed is the one closest to the position specified by locationVector and the last model listed is the furthest from that position.

Only one intersection (the closest intersection) is returned per model.

The command returns an empty list if there are no models found under the specified ray.

Example

This statement displays the detailed information for a model intersected by a ray drawn from the position vector (0, 0, 300) and pointing down the -Z axis.

put member("3d").modelsUnderRay(vector(0, 0, 300), vector(0, 0, -1), 3, #detailed)
-- [[#model: model("mSphere"), #distance: 275.0000, #isectPosition: vector( 0.0000, 0.0000, 25.0000 ), #isectNormal: vector( -0.0775, 0.0161, 0.9969 ), #meshID: 1, #faceID: 229, #vertices: [vector( 0.0000, 0.0000, 25.0000 ), vector( -3.6851, 1.3097, 24.6922 ), vector( -3.9017, 0.2669, 24.6922 )], #uvCoord: [#u: 0.0000, #v: 0.0000]]]

See also

modelsUnderLoc, modelUnderLoc