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

Object3D.raycast()

Object3D.raycast() 方法是three.js中的一种投射方法,用于检测可见光投射源经过对象时的碰撞检测。

语法

Object3D.raycast(raycaster, intersects)

参数

  • raycaster:一个 Raycaster 对象,用于表示要进行投射的可见光源方向和起始点。

  • intersects:一个数组用于存储与当前光线相交的物体,其中每个元素都是包含以下成员的对象:distance, point, face, object

描述

Object3D.raycast() 方法用于执行基于three.js光线投射器的碰撞检测,以确定可见光线是否与物体相交。光线投射器类允许用户对其进行任意的可见光线编码,可以是倾斜的光线,光束还是立方体光束。

该方法的返回值是一个与光线相交的对象数组,数组中每个元素都是一个包含距光线起始点的距离、光线击中的点、平面和被击中的物体的对象。

示例

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

const intersects = [];
objects.forEach((obj) => {
  obj.raycast(raycaster, intersects);
});

if (intersects.length > 0) {
  // handle intersection
}

上面的示例展示了一个典型的光线投射使用场景。首先我们创建一个 Raycaster 对象,并使用鼠标和相机的位置将其设置为目标方向。然后我们循环遍历场景中的一些对象,并对每个对象都执行 raycast() 方法,将结果存储在饱和交点数组中。最后我们检查此数组是否包含交点。