gpt4 book ai didi

rotation - 使用四元数时如何从 Three.js 导出 "standard"旋转?

转载 作者:行者123 更新时间:2023-12-02 14:42:22 24 4
gpt4 key购买 nike

新手 stackoverflow 参与者、新手 3D 程序员,而且远非数学奇才……所以我会尽力尽可能清晰地阐述这个问题,希望它有意义,并希望得到一个不超过一英里的答案我的头。

我使用 Three.js 编写了一个非常酷的应用程序,它可以让用户飞过 3D 空间并探索太阳系。飞行模型大致基于 Three.js 包中的 Fly.Controller 示例/扩展,该示例/扩展教会我使用四元数来保持所有轴相对于彼此的合理旋转。飞行部分一切都很棒。

这是我的困境:使用四元数时,如何推导出“正常”(我不知道还能叫什么)旋转值来确定我面对的方向?使用四元数时,相机对象内部的“旋转”结构保持在 0,0,0。因此,虽然我可以以任何角度自由地在太空中飞行,但我不知道如何确定我实际面对的方向。是否有内置的 Three.js 函数,或者其他简单的方法来转换它?

我在网络上发现了一些类似的、令人困惑的指针,但我无法破译并在 Three.js 中使用它们。谢谢。

最佳答案

这是一个好问题。

当对象处于默认方向时,可以认为它正在朝其内部正 z 轴的方向看。 (相机是个异常(exception),它朝其内部 z 轴的方向看。)

因此,当物体旋转时,您可以通过将物体的四元数应用到指向正 z 轴(相机的负 z 轴)方向的单位向量来获得物体面向的方向。

var zVec = new THREE.Vector3( 0, 0, 1 );
zVec.applyQuaternion( object.quaternion );

这将返回一个指向对象“面向”方向的单位向量。

如果该对象是另一个旋转对象的子对象,则情况会更复杂。

编辑:更新了 r.58。谢谢@eshan。

关于rotation - 使用四元数时如何从 Three.js 导出 "standard"旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14167962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com