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.updateWorldMatrix()

Object3D.updateWorldMatrix() 在 Three.js 中是一个用于更新对象世界矩阵的方法。世界矩阵描述了对象在全局坐标系中的位置、旋转和缩放信息。

当对象的变换(位置、旋转、缩放等)发生变化时,世界矩阵也会相应地改变。开发者可以调用该方法来手动更新对象的世界矩阵。

语法

updateWorldMatrix(force?: boolean): void
  • force: boolean:可选参数,用于表示是否强制更新。默认值为 false

参数

  • force:如果设置为 true,则会强制更新对象的世界矩阵。否则,只有在对象的变换发生变化时才会更新。

返回值

该方法没有返回值。

示例

const object = new THREE.Object3D();

object.position.set(1, 2, 3);
object.rotation.set(Math.PI / 2, 0, Math.PI);
object.updateWorldMatrix();

console.log(object.worldPosition); // Vector3 {x: 3, y: 1, z: -2}
console.log(object.worldRotation); // Quaternion {_x: -0.7071067811865475, _y: 0, _z: -0.7071067811865476, _w: 0}
console.log(object.worldScale); // Vector3 {x: 1, y: 1, z: 1}

该示例创建了一个 Object3D 实例,并设置了该对象的位置、旋转。接着,调用了 updateWorldMatrix() 方法来更新对象的世界矩阵。最后,打印了对象的世界位置、旋转和缩放信息。

注意事项

默认情况下,对象的世界矩阵会在每次渲染前自动更新。如果希望手动控制更新时机,可以将场景的 autoUpdate 属性设置为 false。这时,开发者需要手动调用一次场景的 updateWorldMatrix() 方法,以更新所有对象的世界矩阵。

const scene = new THREE.Scene();
scene.autoUpdate = false;

// ...

scene.updateWorldMatrix();