Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface Raycaster

This class is designed to assist with raycasting. Raycasting is used for mouse picking (working out what objects in the 3d space the mouse is over) amongst other things.

Examples

Raycasting to a Mesh | Raycasting to a Mesh in using an OrthographicCamera | Raycasting to a Mesh with BufferGeometry | Raycasting to a InstancedMesh | Raycasting to a Line | Raycasting to Points | Terrain raycasting | Raycasting to paint voxels | Raycast to a Texture

Code Example

const raycaster = new THREE.Raycaster();
const mouse = new THREE.Vector2();
function onMouseMove( event ) {
// calculate mouse position in normalized device coordinates // (-1 to +1) for both components
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
}
function render() {
// update the picking ray with the camera and mouse position raycaster.setFromCamera( mouse, camera );
// calculate objects intersecting the picking ray
const intersects = raycaster.intersectObjects( scene.children );
for ( let i = 0; i < intersects.length; i ++ ) {
intersects[ i ].object.material.color.set( 0xff0000 );
}
renderer.render( scene, camera );
}
window.addEventListener( 'mousemove', onMouseMove, false );
window.requestAnimationFrame(render);

Hierarchy

  • Raycaster

Index

Constructors

constructor

  • This creates a new raycaster object.

    Parameters

    • Optional origin: I3JS.Vector3

      The origin vector where the ray casts from.

    • Optional direction: I3JS.Vector3

      The direction vector that gives direction to the ray. Should be normalized.

    • Optional near: number

      All results returned are further away than near. Near can't be negative. Default value is 0.

    • Optional far: number

      All results returned are closer then far. Far can't be lower then near . Default value is Infinity.

    Returns I3JS.Raycaster

Properties

camera

camera: I3JS.Camera

The camera to use when raycasting against view-dependent objects such as billboarded objects like Sprites. This field can be set manually or is set when calling "setFromCamera". Defaults to null.

far

far: number

The far factor of the raycaster. This value indicates which objects can be discarded based on the distance. This value shouldn't be negative and should be larger than the near property.

default

Infinity

layers

layers: I3JS.Layers

Used by Raycaster to selectively ignore 3D objects when performing intersection tests. The following code example ensures that only 3D objects on layer 1 will be honored by the instance of Raycaster. raycaster.layers.set( 1 ); object.layers.enable( 1 );

default

new THREE.Layers()

near

near: number

The near factor of the raycaster. This value indicates which objects can be discarded based on the distance. This value shouldn't be negative and should be smaller than the far property.

default

0

params

An object with the following properties: Where threshold is the precision of the raycaster when intersecting objects, in world units.

default

{ Mesh: {}, Line: { threshold: 1 }, LOD: {}, Points: { threshold: 1 }, Sprite: {} }

ray

ray: I3JS.Ray

The Ray used for the raycasting.

Methods

intersectObject

  • Checks all intersection between the ray and the object with or without the descendants. Intersections are returned sorted by distance, closest first. An array of intersections is returned... [ { distance, point, face, faceIndex, object }, ... ] distance - Second set of U,V coordinates at point of intersection instanceId – The index number of the instance where the ray intersects the InstancedMesh Raycaster delegates to the raycast method of the passed object, when evaluating whether the ray intersects the object or not. This allows meshes to respond differently to ray casting than lines and pointclouds. Note that for meshes, faces must be pointed towards the origin of the .ray in order to be detected; intersections of the ray passing through the back of a face will not be detected. To raycast against both faces of an object, you'll want to set the material's side property to THREE.DoubleSide.

    Type parameters

    Parameters

    • object: I3JS.Object3D<Event>

      The object to check for intersection with the ray.

    • Optional recursive: boolean

      If true, it also checks all descendants. Otherwise it only checks intersection with the object. Default is true.

    • Optional optionalTarget: Intersection<TIntersected>[]

      target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).

    Returns Intersection<TIntersected>[]

intersectObjects

  • Checks all intersection between the ray and the objects with or without the descendants. Intersections are returned sorted by distance, closest first. Intersections are of the same form as those returned by .intersectObject.

    Type parameters

    Parameters

    • objects: I3JS.Object3D<Event>[]

      The objects to check for intersection with the ray.

    • Optional recursive: boolean

      If true, it also checks all descendants of the objects. Otherwise it only checks intersection with the objects. Default is true.

    • Optional optionalTarget: Intersection<TIntersected>[]

      target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).

    Returns Intersection<TIntersected>[]

set

  • Updates the ray with a new origin and direction. Please note that this method only copies the values from the arguments.

    Parameters

    • origin: I3JS.Vector3

      The origin vector where the ray casts from.

    • direction: I3JS.Vector3

      The normalized direction vector that gives direction to the ray.

    Returns void

setFromCamera

  • setFromCamera(coords: { x: number; y: number }, camera: I3JS.Camera): void
  • Updates the ray with a new origin and direction.

    Parameters

    • coords: { x: number; y: number }

      2D coordinates of the mouse, in normalized device coordinates (NDC)---X and Y components should be between -1 and 1.

      • x: number
      • y: number
    • camera: I3JS.Camera

    Returns void

Generated using TypeDoc