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

介绍

Object3D.worldToLocal() 方法将三维空间坐标系中的向量转换为本地坐标系中的向量。本地坐标系是以当前对象的中心点为原点的坐标系。

这个方法是 THREE.Object3D 类的一个方法,所以只有继承自这个类的对象才可以使用。

语法

vector = object.worldToLocal(vector)

参数

  • vectorTHREE.Vector3 类型的对象,需要被转换的向量。

返回值

  • vectorTHREE.Vector3 类型的对象,转换后的向量。

示例

const object = new THREE.Object3D();
const vector = new THREE.Vector3(3, 2, 1);
object.position.set(2, 2, 2);
const localVector = object.worldToLocal(vector);
console.log(localVector);
// 输出结果: THREE.Vector3(-1, 0, -1)

在这个例子中,我们创建了一个 THREE.Object3D 类型的对象 object 和一个 THREE.Vector3 类型的向量 vector,将 vector 的值设置为 (3, 2, 1)。然后我们将 object 的位置设置为 (2, 2, 2),这样它的中心点就位于 (2, 2, 2) 这个位置。最后我们调用 object.worldToLocal(vector) 方法将 vector 中的坐标从三维空间坐标系转换为 object 的本地坐标系中的坐标,并将其存储在 localVector 变量中。最后一行代码 console.log(localVector) 打印出了转换后的坐标值,应该是 -1, 0, -1

注意事项

  • 本方法会修改传入的向量对象,也就是说传入的向量对象在转换后会发生变化。如果不希望传入对象改变,可以先将其复制一份再传递进去。
  • 使用这个方法时需要注意本地坐标系与三维空间坐标系的方向不同。如果你使用的是右手坐标系(Three.js 中默认使用的是右手坐标系),那么本地坐标系会根据三维视图中的拆线(grid)的方向,从左向右是 x 轴正方向,从下向上是 y 轴正方向,从里向外是 z 轴正方向。与之相对应,在三维空间坐标系中,从左向右是 x 轴正方向,从里向外是 y 轴正方向,从下向上是 z 轴正方向。因此在使用这个方法时要注意区分两个坐标系的方向。

相关链接