让以下矩阵在左手坐标系(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);
答案 0 :(得分:2)
根据直接放置在相机上的物体想要发生的事情来考虑它。所以你有camera.view = model.view。在这种情况下,你真正想要的是无论相机在做什么,以及模型正在做什么来相乘以制作单位矩阵,因为你不希望在投影之前应用变换。
因此,您希望在设置相机时使用您用于定位的任何反转,因为根据定义,反转是与原始相乘时将赋予身份的东西。
所以你没有弄乱任何东西 - 你给的第二个公式和你说的那个给你正确的结果是正确的。