我正在使用OpenGL创建一个简单的正方形网格,我希望这样,当用户点击一个正方形时,它会在Y轴上翻转(我的代码正在工作)。然而,由于透视原点/消失点在屏幕的中心,旋转看起来并不像应该的那样相对于正方形的中心。
下面是所有的广场旋转0.5弧度(约30度)的图片。中心广场是正确旋转的,但是,我希望其他所有的方块都有相对于其中心点的透视,而不是屏幕的中心点(目前它们看起来是被剪裁的,我不想这样):

下面是如何创建投影和视图矩阵(适用于所有正方形):
float aspect = fabsf(self.view.bounds.size.width / self.view.bounds.size.height);
_projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(65.0f), aspect, 0.1f, 100.0f);
_viewMatrix = GLKMatrix4MakeTranslation(0, 0, -5);下面是我如何为每个正方形创建一个模型矩阵:
GLKMatrix4 modelMatrix = GLKMatrix4MakeTranslation(tile.x, tile.y, 0);
modelMatrix = GLKMatrix4RotateY(modelMatrix, 0.5f);发布于 2013-11-25 08:43:16
在玩完这个之后,我最终看到了CSS3转换是如何实现的,以及W3C提供了关于如何计算透视图原点的如下解释:。
这很容易应用于OpenGL和GLKit。与其将投影* View * Model相乘(在本例中,我的模型转换为平移和旋转),我发现乘平移*投影*视图*旋转代替了工作,并允许我正确地翻转围绕其中心的方块。
https://stackoverflow.com/questions/20162947
复制相似问题