【发布时间】:2013-05-05 23:58:39
【问题描述】:
我现在正在学习 OpenGL,特别是如何移动相机。如果我想改变我的相机矩阵,例如,如果用户使用 WASD 翻译它,我可以通过两种主要方式来做到这一点:
- 将相机矩阵预乘以新的平移矩阵。
- 管理相机的一组属性,例如位置、视角、向上矢量,修改这些属性,并根据这些属性重新计算相机矩阵。
哪些被认为更好?我觉得第一个会引入漂移,第二个需要更多的计算,但我对这两者的了解不够。
【问题讨论】:
我现在正在学习 OpenGL,特别是如何移动相机。如果我想改变我的相机矩阵,例如,如果用户使用 WASD 翻译它,我可以通过两种主要方式来做到这一点:
哪些被认为更好?我觉得第一个会引入漂移,第二个需要更多的计算,但我对这两者的了解不够。
【问题讨论】:
对相机建模的最简单方法之一是使用“lookAt”系统。基本上你记得camera_pos,camera_target,可选camera_up向量。然后你使用旧的gluLookAt 或像glm::lookAt 这样的现代方式构建最终矩阵。
这样更容易对相机及其参数进行建模。
这里有一些链接:
不要太看重性能成本。首先学习一些东西,构建它......然后在需要时进行优化。
【讨论】: