【发布时间】:2017-09-06 19:08:02
【问题描述】:
我正在尝试将 vrDisplays 旋转(以四元数形式出现)转换为纬度和经度,因为我使用的 API 需要以 lat 和 lon 值表示的头戴式显示器的当前旋转。
lordofducts 在 unity3D 论坛中回答 (https://forum.unity3d.com/threads/quaternions-and-euler-angles-to-longitude-latitude.154392/)
给了我很好的希望,这实际上是可能的,但我有点卡住了,因为 THREE.Quaternion 似乎没有 ToAxisAngle() 方法,而且我对 3D 几何体不是很好。
那么有没有人知道我怎样才能做到这一点,这样我就可以做到这一点?
var quat = THREE.Quaternion();
quat.fromArray(vrDisplay.getPose().orientation);
var lat = //do sth with quat
var lon = //do seth with quat
api.rotateCamera({
lat: lat,
lon: lon
});
// 我注意到在我的代码中,我已经进行了从欧拉角到纬度的转换。所以我可能只是将四元数转换为欧拉角,然后将其转换为纬度值。不过,必须有更复杂的方法......
【问题讨论】:
-
(1) 仅供参考,有
Vector4.setAxisAngleFromQuaternion( quaternion )。 (2) 但是,请尝试v = new THREE.Vector3(); // reuse it! v.set( 0, 0, 1 ).applyQuaternion( quaternion );这应该会给你方向。
标签: three.js geometry quaternions webvr