three.js:组的 Y 轴旋转,相对于相机

three.js: Y-rotation of group, relative to camera

即使经过数小时的谷歌搜索,我也无法真正理解这个问题。也许这里有人可以帮我解决这个问题。

我基本上想确定对象的 Y 轴旋转(始终位于视口的中心),相对于我的相机.想象一下物体站在记录 player/turntable 的中心,绕其 Y 轴缓慢旋转,并且我的相机始终面向该物体的中心,同时使用 OrbitControls 更改凸轮在物体周围的位置。想象一下相机没有移动,但是转盘转动,转一圈等于这个Y旋转在360°.

之间

例如,这个 Y 旋转将是:

事实是,这两者在世界坐标系中的位置和旋转可能非常随机,因此并未给出对象的位置 [x=0, y=0, z=0]

有什么想法吗?非常感谢!

我不确定我是否有帮助,但也许 Object3D.getWorldQuaternion and 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);