three.js:组的 Y 轴旋转,相对于相机
three.js: Y-rotation of group, relative to camera
即使经过数小时的谷歌搜索,我也无法真正理解这个问题。也许这里有人可以帮我解决这个问题。
我基本上想确定对象的 Y 轴旋转(始终位于视口的中心),相对于我的相机.想象一下物体站在记录 player/turntable 的中心,绕其 Y 轴缓慢旋转,并且我的相机始终面向该物体的中心,同时使用 OrbitControls 更改凸轮在物体周围的位置。想象一下相机没有移动,但是转盘转动,转一圈等于这个Y旋转在0°
和360°
.
之间
例如,这个 Y 旋转将是:
0°
当凸轮的位置为 [x=0, y=0, z=100]
或 [x=0, y=100, z=200]
(凸轮的 y 位置无关紧要, 它总是 down/up 到组的中心),
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 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);
即使经过数小时的谷歌搜索,我也无法真正理解这个问题。也许这里有人可以帮我解决这个问题。
我基本上想确定对象的 Y 轴旋转(始终位于视口的中心),相对于我的相机.想象一下物体站在记录 player/turntable 的中心,绕其 Y 轴缓慢旋转,并且我的相机始终面向该物体的中心,同时使用 OrbitControls 更改凸轮在物体周围的位置。想象一下相机没有移动,但是转盘转动,转一圈等于这个Y旋转在0°
和360°
.
例如,这个 Y 旋转将是:
0°
当凸轮的位置为[x=0, y=0, z=100]
或[x=0, y=100, z=200]
(凸轮的 y 位置无关紧要, 它总是 down/up 到组的中心),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 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);