投影视图矩阵,opengl es。 iOS版

时间:2012-01-20 16:58:14

标签: ios opengl-es linear-algebra

让以下矩阵在左手坐标系(Column-major)中

我正在使用Apple的GLKMatrix4x4结构和函数,因此数学运算可以被认为是正确的。

我希望以下内容能产生正确的矩阵。

projectionViewModel = camera.projection * camera.view * model.view

然而这是不正确的,因为模型开始围绕相机的平移偏移旋转。

但是,当我执行以下操作时,结果是正确的。

projectionViewModel = camera.projection * camera.inverseView * model.view

我的问题是,我把其他东西搞砸了吗?或者这是产生projectionViewModel矩阵的正确方法吗?

 GLKMatrix4 modelView  = GLKMatrix4Multiply(*[_scene.camera inverseView],*[_frame worldMatrix]);

 GLKMatrix4 projectionViewModel =  GLKMatrix4Multiply(*[_scene.camera proj],modelView);

1 个答案:

答案 0 :(得分:2)

根据直接放置在相机上的物体想要发生的事情来考虑它。所以你有camera.view = model.view。在这种情况下,你真正想要的是无论相机在做什么,以及模型正在做什么来相乘以制作单位矩阵,因为你不希望在投影之前应用变换。

因此,您希望在设置相机时使用您用于定位的任何反转,因为根据定义,反转是与原始相乘时将赋予身份的东西。

所以你没有弄乱任何东西 - 你给的第二个公式和你说的那个给你正确的结果是正确的。