Objective c GLKView GLKmatrix4MakeLook描述和解释

Objective c GLKView GLKmatrix4MakeLook描述和解释,objective-c,opengl,matrix,glkview,Objective C,Opengl,Matrix,Glkview,对于modelviewMatrix,我了解如何形成平移和缩放矩阵。但我无法理解如何使用GLKMatrix4MakeLookAt形成viewMatrix。有人能解释一下它是如何工作的,以及如何给参数赋值吗 GLK_INLINE GLKMatrix4 GLKMatrix4MakeLookAt(float eyeX, float eyeY, float eyeZ, float centerX, floa

对于modelviewMatrix,我了解如何形成平移和缩放矩阵。但我无法理解如何使用GLKMatrix4MakeLookAt形成viewMatrix。有人能解释一下它是如何工作的,以及如何给参数赋值吗

GLK_INLINE GLKMatrix4 GLKMatrix4MakeLookAt(float eyeX, float eyeY, float eyeZ,
                                                  float centerX, float centerY, float centerZ,
                                                  float upX, float upY, float upZ)
GLKMatrix4MakeLookAt以与创建查看矩阵相同的方式创建查看矩阵,以防查看其他OpenGL代码。如参数所示,它考虑了观察者眼睛的位置、他们正在观察的空间点(例如,对象上的一个点)和上方向向量,上方向向量指定了向上的方向,例如,指向天空。生成的观察矩阵是由一组正交基[基向量]和平移组成的旋转矩阵的组合

从逻辑上讲,矩阵基本上由几个步骤构成:

计算视线向量,它是从眼睛位置到你所看到的点,即中心点的归一化向量。 计算视线向量与上方向向量的叉积,并对结果向量进行归一化。 计算在步骤2中计算的向量的叉积。用视线来完成正交基。 创建一个3x3旋转矩阵,方法是将第一行设置为步骤2中创建的向量,中间行设置为步骤3中的向量,底部行设置为求反的标准化视线向量。 这三个步骤将生成一个旋转矩阵,该矩阵将世界坐标系旋转为眼睛坐标系眼睛位于原点的坐标系,视线沿-z轴向下。最终查看矩阵是通过将平移乘以否定的眼睛位置来计算的,该位置将世界坐标定位的眼睛移动到眼睛坐标的原点

这里有一个显示的代码的相关问题,还有一个关于眼睛坐标和相关坐标系的更详细的问题:。

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

从逻辑上讲,矩阵基本上由几个步骤构成:

计算视线向量,它是从眼睛位置到你所看到的点,即中心点的归一化向量。 计算视线向量与上方向向量的叉积,并对结果向量进行归一化。 计算在步骤2中计算的向量的叉积。用视线来完成正交基。 创建一个3x3旋转矩阵,方法是将第一行设置为步骤2中创建的向量,中间行设置为步骤3中的向量,底部行设置为求反的标准化视线向量。 这三个步骤将生成一个旋转矩阵,该矩阵将世界坐标系旋转为眼睛坐标系眼睛位于原点的坐标系,视线沿-z轴向下。最终查看矩阵是通过将平移乘以否定的眼睛位置来计算的,该位置将世界坐标定位的眼睛移动到眼睛坐标的原点


这里有一个相关的问题显示了的代码,还有一个关于眼睛坐标和相关坐标系的更详细的问题:。

谢谢您的回答。这真的帮了我大忙。如果你回答我的另一个问题,会更有帮助。谢谢你的回答。这真的帮了我大忙。如果你回答我的另一个问题,会更有帮助。