投影视图矩阵,opengl es.iOS



让以下矩阵位于左手坐标系(主列)中

我使用的是苹果的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);

考虑一下直接放置在相机上的对象会发生什么。所以你有camera.view=model.view。在这种情况下,你真正想要的是相机正在做的一切和模型正在做的任何事情相乘,形成单位矩阵,因为你不希望在投影之前应用任何变换。

因此,在设置相机时,您希望使用与用于定位的东西相反的东西,因为根据定义,相反的东西在与原始物体相乘时会给出身份。

所以你没有把任何事情搞砸——你给出的第二个公式和你说的给出正确结果的公式是正确的。

相关内容

  • 没有找到相关文章

最新更新