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

Frustum.setFromProjectionMatrix()

Frustum.setFromProjectionMatrix(matrix: THREE.Matrix4): void

这是three.js中的Frustum类的方法,用于根据投影矩阵更新该Frustum对象。Frustum表示一个视锥体,用于剔除不在视锥体内的物体。这个方法常常用于在渲染场景时进行剔除优化。

参数

matrix:投影矩阵(Matrix4类型)。

描述

该方法使用指定的投影矩阵更新Frustum对象的属性,这些属性包括planes数组(表示视锥体的6个面)和3D边界框(THREE.Box3类型),以满足指定投影矩阵所代表的视图。该方法使用指定矩阵计算新的平面和边界框,并将它们设置为Frustum对象的新属性。

示例

// 创建一个空的Frustum对象
const frustum = new THREE.Frustum();

// 创建一个投影矩阵
const fov = 45; // 视场角度
const aspect = window.innerWidth / window.innerHeight; // 纵横比
const near = 0.1; // 近截面
const far = 200; // 远截面
const projectionMatrix = new THREE.Matrix4().makePerspective(fov, aspect, near, far);

// 将Frustum对象根据投影矩阵进行更新
frustum.setFromProjectionMatrix(projectionMatrix);

// 根据Frustum对象对物体进行剔除
const boxMesh = new THREE.Mesh(new THREE.BoxGeometry(5,5,5), new THREE.MeshBasicMaterial());
if (frustum.intersectsObject(boxMesh)) {
  // 可以进行渲染操作
} else {
  // 超出视锥体范围,不进行渲染操作
}

参考