Übersetzung mit GLKMatrix4Translate scheint sich um die Kamera zu bewegen, nicht über den Ursprung

StackOverflow https://stackoverflow.com/questions/8824234

Frage

Ich versuche, dass einem Benutzer ein Objekt in OpenGLE nach oben/nach unten und nach links/rechts aufblättern kann. Ich benutze GLKIT für die ganze Zeichnung und Bewegung. Ich habe Touch -Ereignisse aktiviert, um zu verfolgen, wie der Benutzer das Objekt verschieben möchte. Ich verwende GLKMatrix4Translate, um das Pfannen des Objekts zu schieben, aber es hat auch aus irgendeinem Grund eine Rotationskomponente.

Ich sammle die Übersetzungspunkte aus der Berührung des Benutzers und speichere sie in einem CGPoint:

CGPoint center;

Ich benutze Center.x und Center.y für die X- und Y -Positionen, in die ich übersetzen möchte. Ich führe die Übersetzung mit dieser Zeile aus:

GLKMatrix4 modelViewMatrix = GLKMatrix4Translate(GLKMatrix4Identity, center.x, center.y, 0.0f);

Irgendwelche Ideen?

War es hilfreich?

Lösung

Ich fand heraus, was das Problem hier war. Ich habe aufgehört, GLKMatrix4Translate zu verwenden, und ersetzte dies durch GLKMatrix4Makelookat. Mit Glkmatrix4Makelookat können Sie die Kamera bewegen, die den Effekt verleiht, nach dem ich gesucht habe.

Wenn Sie diesen Code einfach verwenden, führt das gleiche Problem, das ich bereits gesehen habe. Das Modell dreht sich, während es schwenkt.

GLKMatrix4MakeLookAt(0, 0, 7,
                     center.x, center.y 0,
                     0, 1, 0);

Das heißt, dass die Kamera immer (0,0,7) mit dem Zentrum in (Center.x, Center.y, 0) ansieht, wobei die y-Achse nach oben zeigt. Das Zeigen des Auges ist das Problem. Wenn sich das Modell dreht (wie es ist), müssen Sie das Auge auf den neu gedrehten Punkt zeigen.

Das Ersetzen des oben genannten durch den folgenden Code scheint den Trick zu tun.

GLKMatrix4MakeLookAt(rotation.x, rotation.y, 7,
                     center.x, center.y, 0,
                     0, 1, 0);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top