BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

Raycaster.intersectObject()

概述

Raycaster.intersectObject()three.jsRaycaster 类的一个方法,用于在场景中对指定的 Object3D 对象进行射线拾取计算,返回被射线穿过的物体与从 Raycaster 发射点到物体相交点之间的距离。

语法

raycaster.intersectObject( object, recursive );

参数

  • object:要进行射线拾取计算的 Object3D 对象,为 THREE.Object3D 类的实例对象
  • recursive:是否对传入的 Object3D 对象进行递归计算,来获取其子对象被射线穿过的结果,为一个布尔值,默认值为 false

返回值

返回一个数组,该数组包含被射线穿过的所有物体与从 Raycaster 发射点到物体相交点之间的距离,每个物体与距离构成一个对象 {distance, object}

异常

示例

var raycaster = new THREE.Raycaster();
raycaster.setFromCamera( mouse, camera );

var intersects = raycaster.intersectObject( objects, true );
if ( intersects.length > 0 ) {
    // 处理拾取到的物体
    var object = intersects[ 0 ].object;
    ...
}

注意事项

  • 要使用 Raycaster.intersectObject() 方法,必须先有一个初始化好的 Raycaster 实例。
  • 要对多个物体进行拾取计算,可以将这些物体添加到一个 THREE.Group 中,然后传入该 Group 实例来进行计算。
  • 当在 intersects 数组中获取到拾取到的物体时,可以根据实际需求来决定需要处理哪些属性,如物体的位置、射线起点等等。