如何在three.js中获取Object3D的世界旋转?
我知道如何从object.matrixWorld
获取Object3D的世界位置,但是如何获取对象的世界旋转?
我需要这个来解决以下问题:我有一个像这样的分层对象结构:
var obj1 = new THREE.Object3D();
obj1.x = 200;
obj1.rotation.x = 0.1;
scene.add(obj1);
var obj2 = new THREE.Object3D();
obj2.y = -400;
obj2.rotation.y = 0.21;
obj1.add(obj2);
var obj3 = new THREE.Object3D();
obj3.z = -200;
obj3.rotation.x = 0.1;
obj3.rotation.y = -0.1;
obj2.add(obj3);
现在我想让我的相机以一定的距离从正交的角度看向obj3。当我的物体没有旋转时,它的工作方式如下:
var relativeCameraOffset = new THREE.Vector3(0, 0, 500); // 500 is z-distance from my object
var cameraOffset = relativeCameraOffset.applyMatrix4(obj3.matrixWorld);
camera.position = cameraOffset;
当仅旋转我的最后一个子元素时,添加以下代码行可实现所需效果:
camera.rotation = obj3.rotation;
但是当所有父元素都被旋转时,这种方法就不起作用了。因此,我正在寻找一种方法来获取我的3D对象的世界“方向”。 谢谢。
getWorldQuaternion
方法会出现抖动,而你提到的第一种方法则很平滑。这只是给其他人的一个提示 :) - Kus