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

Box3.expandByObject()

概述

Box3.expandByObject()three.js 库中的一个方法,用于将一个 Object3D 对象的包围盒范围(Box3)扩展至包含该对象及其所有子对象的范围。

语法

expandByObject( object )
  • object:要扩展包围盒的 Object3D 对象。

示例

const box = new THREE.Box3();
const obj = new THREE.Object3D();
obj.position.set(1, 2, 3);
obj.scale.set(2, 2, 2);
box.expandByObject(obj);
console.log(box.min); // Vector3(-1, 0, 1)
console.log(box.max); // Vector3(3, 6, 9)

描述

Box3.expandByObject() 方法会遍历 object 对象及其所有子对象,并将它们的范围合并到 Box3 包围盒中。

在合并子对象的包围盒时,所有子对象都将被展开,并且从它们的世界坐标系上的位置重新计算。然后,所有子对象的包围盒将合并到当前 Box3 包围盒中。

注意事项

  • 如果需要在添加完所有子对象后手动重新计算 Box3 包围盒,可以使用 Box3.makeEmpty()Box3.expandByPoint() 方法重新设置。

  • 如果 object 中有网格(Mesh)对象,则使用他们的位置和几何信息来计算包围盒。

参考资料

Box3.expandByObject() - three.js 文档