【发布时间】:2021-03-10 16:27:47
【问题描述】:
我正在尝试创建一种空心地球类型的导航,沿着球体的内表面移动,但我正在做的旋转计算似乎有问题。在南极转动和移动是可以的,但是你越靠近北极它就越弯曲,所以你面对北极。我正在使用四元数,所以我认为这不应该是万向节锁定问题。以下是相关代码:
function forwardQuaternion() {
const q1 = new THREE.Quaternion().setFromUnitVectors(axisY(), axisUp());
const q2 = new THREE.Quaternion().setFromAxisAngle(axisY(), playerAngle);
return q1.multiply(q2);
}
function getForwards() {
return axisX().applyQuaternion(forwardQuaternion());
}
这是一个工作示例https://codesandbox.io/s/threejs-playground-forked-rokm7?file=/src/index.js:2079-2259
WASD 移动。如果您向前走到北极(用红色框标记)并尝试转身离开它,那么当您移动时,您会再次弯曲以再次面对它。我一直在网上寻找答案并扯掉我的头发,所以如果有人有任何想法,我将永远感激你!
【问题讨论】:
标签: math three.js rotation game-development quaternions