【问题标题】:How to rotate a sphere along the three axis (x,y,z) simultaneously如何同时沿三个轴(x,y,z)旋转球体
【发布时间】:2017-06-28 08:30:04
【问题描述】:

我想沿所有三个轴旋转图像,以便以适当的顺序考虑所有旋转。
我正在使用Three Js 库,旋转似乎沿一个轴工作,而三轴旋转异常。我看到了一些关于使用四元数旋转以避免万向节锁定的想法,我尝试了 Euler,但没有成功。

sphericImageMes​​h_ 是我的球体,this.getRollDeg() 是通过相机获取滚动的方法.

我尝试的方法如下:

// var euler = new THREE.Euler( - THREE.Math.degToRad(this.getRollDeg()), - THREE.Math.degToRad( this.getHeadingDeg()) , - THREE.Math.degToRad(this.getPitchDeg()), 'XYZ' );
// this.sphericImageMesh_.setRotationFromEuler(euler);

// this.sphericImageMesh_.rotateZ(THREE.Math.degToRad(-this.getPitchDeg()));
// this.sphericImageMesh_.rotateX(THREE.Math.degToRad(-this.getRollDeg()));
this.sphericImageMesh_.rotateY(THREE.Math.degToRad(-this.getHeadingDeg()));

我看到了 QuaternionsMatrixX4 的使用,但不知道如何使用应用它。任何帮助将不胜感激。

【问题讨论】:

    标签: javascript three.js quaternions euler-angles


    【解决方案1】:

    您可以尝试重新排序旋转。我认为它默认为 XYZ,但我发现 YXZ 或 YZX 更直观地工作。使用 n.rotation.order('YXZ');看看它的行为是否与您的想法更接近。如果您正在执行 +Z 向前的飞行模拟,这将更直观地工作。你偏航,然后俯仰,然后滚动。

    https://threejs.org/docs/index.html#api/math/Euler

    【讨论】:

    • 没用,我尝试了所有的顺序组合,或者我应该使用 kappa、omega、phi 代替 yaw、roll 和 pitch
    • ?你读过我链接的文档吗? Yaw pitch 和 roll 不是 THREEjs 的关键字,kappa omega phi 也不是。我只是在使用 flightsim 术语。在您的项目中添加一个小提琴并描述您正在寻找的行为。 “它不起作用”可能意味着很多事情。
    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2021-07-12
    • 2012-01-06
    • 2017-04-01
    • 2017-11-26
    相关资源
    最近更新 更多