OpenGL相机方向

Posted

技术标签:

【中文标题】OpenGL相机方向【英文标题】:OpenGL camera direction 【发布时间】:2014-12-10 21:14:26 【问题描述】:

所以我正在阅读this 教程的“反转相机方向矩阵”部分,我不明白为什么在计算相机的向上方向时,我需要乘以 inverse >orientation 由向上方向向量,而不仅仅是 orientation

我画了下面的图片来说明我对我阅读的教程的见解。 我做错了什么?

【问题讨论】:

【参考方案1】:

嗯,该教程明确指出:

我们计算相机向上方向的方法是取 “直接向上”单位向量 (0,1,0) 并通过使用 相机方向矩阵的倒数。或者,解释一下 不同的是,向上的方向总是在相机之后(0,1,0) 已应用旋转,因此我们将 (0,1,0) 乘以倒数 旋转,它在相机旋转之前为我们提供了向上的方向 已应用。

这里计算的向上方向是世界空间中的向上方向。在眼睛空间中,向上向量是(0,1,0)(按照惯例,可以用不同的方式定义它)。由于视图矩阵会将坐标从世界空间转换到眼睛空间,我们需要使用逆矩阵将向上向量从眼睛空间转换到世界空间。您的图像是错误的,因为它与眼睛和世界空间没有正确关联。

【讨论】:

对不起,这仍然困扰着我。这是一个示例代码。 pastebin.com/nLL0uNgK 相机只改变了水平角度,所以相机的向上方向不应该改变。那为什么最终的向量是(0,0.86,-0.5)而不是(0,1,0)? @Pilpel:如果你旋转围绕 x,你的向上向量当然会改变。您必须围绕 y 旋转才能进行水平旋转。

以上是关于OpenGL相机方向的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL模拟波斯王子相机

OpenGL:如何实现相机后视图

OpenGL,第一人称相机翻译

在OpenGL中从上方移动相机

Opengl_12_相机控制

OpenGL的视图变换与OSG漫游器