three.js所:组的Y型旋转,相对于照相机

问题描述 投票:0回答:1

即使谷歌搜索小时后,我真的不能让我解决这个头。也许有人在这里可以帮助我有点与此有关。

我基本上要确定一个对象的Y旋转(即总是在视口的中心),相对于我的相机。想象一下,站在电唱机/转盘的中心目标,即慢慢靠近它的Y轴旋转,并同时使用OrbitControls改变周围的物体压头的位置,我的相机总是面临着物体的中心。试想一下,相机不动,但转盘转动,转一圈等于该Y轴旋转是360°之间。

例如,该Y轴旋转将是:

  • 当凸轮的位置是[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]

有任何想法吗?非常感谢!

three.js rotation euler-angles
1个回答
0
投票

我不知道如果我是有帮助的,但也许Object3D.getWorldQuaternionQuaternion.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);
© www.soinside.com 2019 - 2024. All rights reserved.