即使谷歌搜索小时后,我真的不能让我解决这个头。也许有人在这里可以帮助我有点与此有关。
我基本上要确定一个对象的Y旋转(即总是在视口的中心),相对于我的相机。想象一下,站在电唱机/转盘的中心目标,即慢慢靠近它的Y轴旋转,并同时使用OrbitControls改变周围的物体压头的位置,我的相机总是面临着物体的中心。试想一下,相机不动,但转盘转动,转一圈等于该Y轴旋转是0°
和360°
之间。
例如,该Y轴旋转将是:
0°
当凸轮的位置是[x=0, y=0, z=100]
,或[x=0, y=100, z=200]
(凸轮的y位置并不重要,它总是低头/达集团中心)45°
当凸轮的位置是[x=100, y=0, z=100]
或[x=100, y=200, z=100]
,90°
当凸轮的位置是[x=100, y=0, z=0]
或[x=200, y=100, z=0]
等。事情是,这两种可以有一些漂亮的随机位置和旋转的世界坐标系中,所以它没有给该对象的位置是[x=0, y=0, z=0]
。
有任何想法吗?非常感谢!
我不知道如果我是有帮助的,但也许Object3D.getWorldQuaternion和Quaternion.angleTo()可能帮助?
就像是 :
const cameraQuaternion = new THREE.Quaternion();
camera.getWorldQuaternion(cameraQuaternion);
const targetQuaternion = new THREE.Quaternion();
target.getWorldQuaternion(targetQuaternion);
const delta = cameraQuaternion.angleTo(targetQuaternion);
const euler = new THREE.Euler().setFromQuaternion(delta);
console.log(euler.y / Math.PI * 180);