3D Lingo Dictionary > L-N > modelsUnderLoc |  |

modelsUnderLoc

Syntax

    member(whichCastmember).camera(whichCamera).modelsUnderLoc(pointWithinSprite {, maxNumberOfModels, levelOfDetail})

Description

3D command; returns a list of models found under the point specified by `pointWithinSprite` within the rect of a sprite using the referenced camera. The location `pointWithinSprite` is relative to the upper left corner of the sprite, in pixels.

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 point.

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 camera 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 as in index into the mesh list of the `meshDeform` modifier.
| `#faceID` is the face ID of the intersected face, which can be used as an index into the face list of the `meshDeform` modifier.
| `#vertices` is a three-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 viewer and the last model listed is the furthest from the viewer.

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 point.

Example

The first line in this handler translates the location of the cursor from a point on the Stage to a point within sprite 5. The second line uses the `modelsUnderLoc` command to obtain the first three models found under that point. The third line displays the returned detailed information about the models in the message window.

    on mouseUp
      pt = the mouseLoc - point(sprite(5).left, sprite(5).top)
      m = sprite(5).camera.modelsUnderLoc(pt, 3, #detailed)
      put m
    end

See also

`modelsUnderRay`, `modelUnderLoc`