带3个矢量的OpenGL相机

带3个矢量的OpenGL相机,opengl,camera,quaternions,Opengl,Camera,Quaternions,好的,所以我遵循本教程来帮助我在OpenGL中制作相机: 所以我遵循它,经过一些努力,终于找到了一个解决方案,我现在有3个向量,代表我相机的3个轴 问题是什么?我不知道如何使用这些信息来获得正确的旋转/平移!我尝试使用gluLookAt,使用相机的位置作为第一个参数,然后使用相机的Z轴作为目标,Y轴作为向上参数。结果是,无论我是上/下/左/右移动,相机都不会停止注视单个点,旋转的行为甚至更为怪异 我是否采取了完全错误的方法?我考虑过用四元数来计算我所需要的变换,但不知道如何获得所需的参数/如何开

好的,所以我遵循本教程来帮助我在OpenGL中制作相机:

所以我遵循它,经过一些努力,终于找到了一个解决方案,我现在有3个向量,代表我相机的3个轴

问题是什么?我不知道如何使用这些信息来获得正确的旋转/平移!我尝试使用gluLookAt,使用相机的位置作为第一个参数,然后使用相机的Z轴作为目标,Y轴作为向上参数。结果是,无论我是上/下/左/右移动,相机都不会停止注视单个点,旋转的行为甚至更为怪异

我是否采取了完全错误的方法?我考虑过用四元数来计算我所需要的变换,但不知道如何获得所需的参数/如何开始。。。基本上,我只想从一个简单的FPS相机开始,在那里我可以四处移动,上/下和侧面观察(以前我的相机主要工作,除了向上看然后转身时,旋转搞砸了…)

一般或具体的帮助将不胜感激!因为我已经在这方面工作了好几个小时了,但情况并没有改善

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

编辑: 好吧,显然按正确的顺序旋转真的很有帮助!我真傻。不管怎样,我仍然有兴趣知道如何使用相机的三个轴形成一个四元数来进行变换

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

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

不管怎样,我仍然有兴趣知道如何使用相机的三个轴形成一个四元数来进行变换

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