iPadでGLKitを使用して立方体を描画および回転しようとしています。私の問題は、立方体が回転すると、縦横比が変化するように見え、回転すると圧迫されることです。私が言いたいことは、立方体が反時計回りに 90 度回転している次の 3 つの画像で見ることができます。最初(最初の画像)では、立方体の幅/高さの比率は約です。私が設定した1/2
GLKMatrix4 scaleMatrix=GLKMatrix4MakeScale(0.5, 1., 0.3);
それが回転すると、「絞られ」て pi/2 回転後に終了し、ベース (回転前) であった側が高さの 2 倍になります (3 番目の画像)。私の間違いは私が渡す引数にあるとGLKMatrix4MakePerspective
思いますが、openGLメソッドへのすべての呼び出しとそれぞれが何をしているのかにあまり慣れていないので、それに何らかの関係があると思われるコードの一部を画像の後に置きます.
- (void)draw{
//just a quaternion that rotates the cube
GLKQuaternion glkq=GLKQuaternionMake(_quat.x,_quat.y,_quat.z,_quat.w);
GLKMatrix4 rotationMatrix=GLKMatrix4MakeWithQuaternion (glkq);
GLKMatrix4 scaleMatrix=GLKMatrix4MakeScale(0.5, 1., 0.3);
GLKMatrix4 translateMatrix = GLKMatrix4MakeTranslation(0.,0.,0.);
GLKMatrix4 modelMatrix =GLKMatrix4Multiply(translateMatrix,
GLKMatrix4Multiply(scaleMatrix,rotationMatrix));
GLKMatrix4 viewMatrix = GLKMatrix4MakeLookAt(0, 0, 5, 0, 0, 0, 0, 1 , 0);
effect.transform.modelviewMatrix = GLKMatrix4Multiply(viewMatrix, modelMatrix);
effect.transform.projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(45.0f), 3./4., 3, -5);
[effect prepareToDraw];
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 0, triangleVertices);
glEnableVertexAttribArray(GLKVertexAttribColor);
glVertexAttribPointer(GLKVertexAttribColor, 4, GL_FLOAT, GL_FALSE, 0, triangleColors);
glDrawArrays(GL_TRIANGLES, 0, 36);
glDisableVertexAttribArray(GLKVertexAttribPosition);
glDisableVertexAttribArray(GLKVertexAttribColor);
}
ここで私が間違っていることを教えてくれるコードの他の部分が必要かどうかはわかりません...