在FPS场景中理解gluLookAt xyz旋转的问题
Problems understanding gluLookAt xyz rotation in FPS scenario
我在使用gluLookAt时遇到问题。
我的相机可以通过输入鼠标的相对运动事件沿X轴和Y轴旋转。问题是Z轴-我不知道如何计算。
所以,我的相机可以向上、向下、向左和向右看。但我不知道如何完全旋转360度!
有人能帮忙吗?
编辑:
到目前为止,我的代码有一个微不足道的例子:
Point3 test(0,0,0);
Matrix4 camera = Camera::getInstance().getCameraM();
if ((event.motion.xrel > 200) || (event.motion.yrel > 200))
{
break;
}
float mx = (event.motion.xrel);
float my = -(event.motion.yrel);
mx /= 20;
my /= 20;
test.setX(test.getX()+mx);
test.setY(test.getY()+my);
Camera::getInstance().lookAt(Point3(0,0,15),test,Vector3(0,-1,0));
Camera::lookAt
简单地封装了glu-lookAt函数。
gluLookAt (...)
生成正交视图空间。当你调用它时,你已经知道两个轴中的一个了(Y轴被指定为up
(,Z轴是根据从eye
到center
的方向计算的,最后X轴是Y和Z之间的叉积。
顺便说一句,你不能完全旋转360度。在偏离水平+/-90度的地方,你会遇到一个奇点,在那里有两种可能的方式来表示相同的角度。如果通过该Euler角度对旋转进行插值,则最终可以翻转方向。实际上,如果你的三个轴中有两个变得平行(当你直视或直视时会发生这种情况(,那么欧拉角会让事情变得非常混乱。
相关文章:
- _T("xyz")是什么意思?
- CGAL:无法打开 .xyz 文件
- 学习时空复杂性时语句XYZ的含义是什么?
- 如何使用gluLookAt围绕OpenGL中的点旋转相机视图
- OpenGL gluLookAt
- 调用gluPerspective和gluLookAt给了我一个不确定的参考
- gluLookAt() 在 OpenGL 中没有效果
- #define xyz在#include预编译标题之前
- RGB到XYZ,图像转换
- glulookat() - 旋转问题
- OpenGL Glulookat不与着色器一起使用
- XYZ两个GLM :: MAT4矩阵的距离点对点
- PCL :PCL可视化工具在同一视口中以不同的颜色显示多点云(XYZ)
- CGAL 如何将 std::vector<Point> 点保存到 .xyz 文件中?
- MSVC constexpr 函数 'xyz' 不能产生常量表达式
- 意外的glulookat行为,点在opengl上抽出
- 从线性RGB转换为XYZ
- 如何在XYZ播放器平面中找出前向坐标
- 给定两组 xyz 坐标和一个 sag (a) 的值,我可以在 OpenGL 中的这些点之间绘制一个悬链线
- 在FPS场景中理解gluLookAt xyz旋转的问题