タッチでiOSのOpenGLオブジェクトを回転しようとしていますが、何か問題があります。私はここで、ユーザのタッチをつかんでいます:私は回転を実行するために私の更新機能でそれを使用していGLKitでOpenGL ESオブジェクトを回転する
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
startPoint = [touch locationInView:self.view];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
dx = point.y - startPoint.y;
dy = point.x - startPoint.x;
startPoint = point;
}
。今私は、私が上下に行くときに左から右に触れると左から右に回転し、次に前から後ろに回転しようとしています。私は奇妙な組み合わせの回転を得る。ここでは、コードがあります:
- (void)update
{
float aspect = fabsf(self.view.bounds.size.width/self.view.bounds.size.height);
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(65.0f), aspect, 0.1f, 100.0f);
self.effect.transform.projectionMatrix = projectionMatrix;
GLKMatrix4 modelViewMatrix = GLKMatrix4MakeTranslation(0.0f, 0.0f, -3.5f);
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, -1, startPoint.x, startPoint.y, 0.0f);
dx = dy =0;
self.effect.transform.modelviewMatrix = modelViewMatrix;
}
GLKでの操作方法がわかりませんが、回転させる前に原点に翻訳していますか? – dan
いいえ、私はそれをやっているとは思わない。オブジェクトは画面から動いていない、回転している、ちょうど私がそれをしたい方法ではありません。私はそれをしなければならないのでしょうか? – Adam
OpenGLでは、最初にオブジェクトを原点(0,0,0)に変換(=スライド)した後に回転させ、それを元の位置に戻します。 OpenGLは常に原点を回転させますが、そこにスライドさせないと、オブジェクトは原点を「周回」しますが、予想通りに回転しません。 – dan