OpenGL 用三个向量实现相机

3

好的,我正在按照这个教程制作一个OpenGL相机:http://nehe.gamedev.net/data/articles/article.asp?article=08

我跟着做了,经过一些努力,现在有了三个向量,代表相机的三个轴。

问题是什么?我无法弄清楚如何使用这些信息来得到正确的旋转/平移!我尝试使用gluLookAt,使用相机位置作为第一个参数,然后将相机的Z轴用于目标,将Y轴用于上方参数。结果是相机永远不停地看着一个点,无论我向上/向下/向左/向右移动,旋转的行为变得更加奇怪...

我是完全错误的吗?我考虑使用四元数来计算所需的转换,但是无法弄清楚如何获得所需的参数/如何入手...基本上,我只想开始使用类似FPS的简单相机,可以在其中移动,向上/向下和向两侧看(以前我大部分时间都已经完成了,除了当向上看并转身时,旋转出现问题...)

非常感谢您的帮助!我已经花费了数小时的时间,但情况并没有得到改善... 我需要制作一个可以偏航/俯仰/翻滚的摄像机,而不会被固定在一个单一的点上。编辑:好吧,显然正确旋转可以真正帮助!我有些傻。不过,我仍然很想知道如何使用我的相机的三个轴来形成我的变换的四元数。
1个回答

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

第二组参数不是观察方向,而是观察位置。您需要将相机位置偏移Z轴,以获得所需观察方向的观察位置。

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

是的。您可以将它们转换为矩阵,然后将矩阵转换为四元数。有许多在线资源可以解释将旋转矩阵转换为四元数的过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接