【发布时间】:2018-12-30 04:54:06
【问题描述】:
在阅读了 OpenGL 中的坐标系之后,我想在世界各地移动相机,我只需要转换视图坐标。如果我说使用view = glm::translate(view, glm::vec3(0, 0, -50));,我将相机向后平移 50 个单位(通过将世界向前平移 50 个单位)。在我想通了之后,我遇到了 LookAt 函数。我不明白为什么我需要使用这个功能,如果我可以通过平移和旋转视图来移动我的相机。整个事情有点难以理解,所以如果这没有多大意义,我很抱歉!
【问题讨论】:
-
谁说你需要使用它?您的问题似乎有人在问他们为什么需要使用
std::sort,因为他们可以自己实现快速排序。为什么你认为“我只是可以通过平移和旋转视图来移动我的相机”并不是这个函数真正的作用? -
Nico 是对的,如果您不想使用它,则不需要使用它...我在 OpenGL 中编码多年,但仍然从未使用过
LookAt,不是 GLU 也不是 GLM 版本...事实上,我从未使用过 GLM(因为我自己的数学比 GLM 更早,并且更好地满足了我的需求)而且我从 GLU 使用的唯一东西是gluPerspective,最近甚至没有……LookAt函数通常是新手将其用作他们不了解矩阵数学的人的捷径,从而阻止他们以后简单地实现高级相机的东西... -
我totally agree 与您同在,
lookAt被过度使用,并且通常可以通过组合旋转和平移来更好地表达。
标签: opengl coordinate-transformation glulookat