首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能解释一下我对gluLookAt()的误解吗?

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

Stack Overflow用户
提问于 2013-07-20 14:08:42
回答 2查看 365关注 0票数 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()的误解吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-20 19:51:04

您链接的文档确实是错误的。

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

代码语言:javascript
复制
V = R * T

为了变换顶点v,我们计算

代码语言:javascript
复制
v' = V * v = R * T * v = R * (T * v)

因此,我们首先应用平移,然后应用旋转。因为存在平移,所以旋转部分也会影响原点。这就是为什么可以将原点映射到屏幕中心的原因。

票数 1
EN

Stack Overflow用户

发布于 2013-07-20 17:22:55

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17759269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档