在 3D 空间中旋转和平移相机

发布于 2024-10-10 17:31:19 字数 250 浏览 1 评论 0原文

我在 3D 空间中平移和旋转相机时遇到了一些小问题。在 Direct3D9 中,相机被定义为位置轴、观察轴和上轴(作为 3d 向量)。因此,我存储了相机的旋转和位置,并且在为新帧定义相机时,我通过旋转旋转了观察向量和上轴并设置了位置。当平移相机时,我进行了平移,通过旋转来旋转它,并通过该平移来平移相机的位置和观察向量。但一段时间后,观察向量和新的平移不再对齐——也就是说,当平移向量是定义向前的原始观察向量的正倍数时,相机不再向前移动。我不明白为什么会发生这种情况 - 有什么建议吗?

I'm having a slight problem translating and rotating my camera in 3D space. In Direct3D9 a camera is defined as position, looking at, and up axis (as 3d vectors). So I stored the camera's rotation and position, and when defining the camera for a new frame, I rotated the looking at vector and up axis by the rotation and set the position. When translating the camera, I took the translation, rotated it by the rotation and translated the camera's position and looking-at vector by that. But after some time the looking-at vector and the new translation don't line up - that is, the camera no longer moves forwards when the translation vector is a straight multiple of the original looking-at vector which defines forwards. I can't understand why this occurs- any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幸福还没到 2024-10-17 17:31:19

您是否遇到过万向节锁?我以前也遇到过这种情况,所以我转储了向量并移至 四元数

Could you be experiencing Gimbal Lock? This has occurred to me before and so I dumped vectors and moved to Quaternions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文