1

对于modelviewMatrix,我了解如何形成翻译和缩放矩阵。但我无法理解如何使用GLKMatrix4MakeLookAt. 任何人都可以解释它是如何工作的以及如何为参数赋值(眼睛中心在 XYZ 上)。

GLK_INLINE GLKMatrix4 GLKMatrix4MakeLookAt(float eyeX, float eyeY, float eyeZ,
                                                  float centerX, float centerY, float centerZ,
                                                  float upX, float upY, float upZ)
4

1 回答 1

5

GLKMatrix4MakeLookAt创建一个查看矩阵(以与查看其他 OpenGL 代码相同的方式gluLookAt)。正如参数所暗示的那样,它考虑了观看者眼睛的位置、他们正在观看的空间点(例如,对象上的一个点)以及指定“向上”方向的向上向量(例如,指向朝向天空)。生成的观察矩阵是旋转矩阵(由一组正交基[基向量]组成)和平移的组合。

从逻辑上讲,矩阵基本上是通过几个步骤构建的:

  1. 计算视线向量,它是从眼睛位置到您正在查看的点(中心点)的归一化向量
  2. 计算视线向量向上向量的叉积,并对结果向量进行归一化。
  3. 计算在步骤 2 中计算的向量与视线的叉积,以完成正交基。
  4. 通过将第一行设置为在步骤 2 中创建的向量,将中间行设置为步骤 3 中创建的向量,将底行设置为取反的归一化视线向量,创建一个 3x3 旋转矩阵。

这三个步骤产生一个旋转矩阵,它将世界坐标系旋转到眼睛坐标(眼睛位于原点的坐标系,视线在 -z 轴下方。计算最终的观察矩阵通过将平移乘以取反的眼睛位置,这会将“世界坐标定位的眼睛”移动到眼睛坐标的原点。

这是一个显示代码的相关问题GLKMatrix4MakeLookAt,这是一个关于眼睛坐标和相关坐标系的更详细的问题:(眼睛空间坐标到底是什么?)。

于 2013-12-17T14:26:06.247 回答