3

好的,所以我按照本教程帮助我在 OpenGL 中制作相机:http: //nehe.gamedev.net/data/articles/article.asp ?article=08

所以我跟着它,经过一番挣扎,终于有了一个解决方案,我现在有 3 个向量代表我的相机的 3 个轴。

问题呢?我不知道如何使用这些信息来实际获得正确的旋转/翻译!我尝试使用 gluLookAt,将相机的位置用作第一个参数,然后将相机的 Z 轴用作目标,将 Y 轴用作向上参数。结果是,无论我向上/向下/向左/向右移动,相机都不会停止注视一个点,并且旋转的行为更加奇怪......

我采取了完全错误的方法吗?我考虑过使用四元数以某种方式计算我需要的转换,但无法弄清楚如何获得我需要的参数/如何开始......基本上我只想要一个简单的类似 FPS 的相机开始,在那里我可以四处移动,向上/向下和向侧面看(以前我大部分时间都在工作,除了向上看然后转身时,旋转搞砸了......)

一般或具体的帮助将不胜感激!因为我已经为此工作了好几个小时,但情况并没有好转……

总而言之……我需要帮助制作一个可以偏航/俯仰/滚动的相机……而不是盯着一个点。

编辑:好的,所以,显然以正确的顺序旋转真的可以帮上忙!傻我。无论如何,我仍然很想知道如何使用相机的三个轴来形成四元数来进行转换。

4

1 回答 1

0

我尝试使用 gluLookAt,将相机的位置用作第一个参数,然后将相机的 Z 轴用作目标,将 Y 轴用作向上参数。

第二组参数不是观察方向,而是观察位置。您需要获取相机位置并将其偏移 Z 轴,以便在您想要查看的方向上获得查看位置。

无论如何,我仍然很想知道如何使用相机的三个轴来形成四元数来进行转换。

Yes. You turn them into a matrix, then convert the matrix into a quaternion. There are many online resources that explain the process of converting a rotation matrix into a quaternion.

于 2011-09-24T18:05:18.577 回答