首页 文章

请问你能解释我的gluLookAt()误解吗?

提问于
浏览
0

我从阅读许多资料中学习并通过重新实现该函数并自己研究矩阵,gluLookAt()等效于旋转,然后转换为逆眼坐标 . OpenGL,MESA,Cogl等实现类似......这里有一个很好的总结:http://pic.dhe.ibm.com/infocenter/aix/v7r1/topic/com.ibm.aix.opengl/doc/openglrf/gluLookAt.htm

然而,考虑观察目标在原点即(0,0,0)并且虚拟相机稍微偏离Z轴的情况,例如, (2,2,10) . gluLookAt()的结果应该是原点在视野的中心 . 初始旋转步骤无关紧要,但后面的平移步骤将原点移离中心!

你能解释一下我的gluLookAt()误解吗?

2 回答

  • 1

    您链接到的文档确实是错误的 .

    如果我们看一下another documentation,我们会看到视图矩阵是由旋转矩阵和平移矩阵构成的,如下所示:

    V = R * T
    

    要转换顶点 v ,我们计算

    v' = V * v = R * T * v = R * (T * v)
    

    所以我们首先应用翻译然后轮换 . 而且由于存在平移,旋转部分也会影响原点 . 这就是为什么可以将原点映射到屏幕中心的原因 .

  • 0

    请问你能解释我的gluLookAt()误解吗?

    你的错误在于将其视为一系列步骤 . 这不是它的工作原理 . gluLookAt计算转换矩阵,该矩阵以所需方式直接映射坐标 . 没有“中间”旋转步骤 .

相关问题