2017-03-11 4 views
0

Ich benutze OpenGL, um ein Objekt in meiner Szene zu zeichnen, aber ich kann nicht scheinen, dass es sich um die Kamera dreht, anstatt sich nur an der Stelle zu drehen.Rotierendes Objekt um die Kamera herum und transformierte Koordinaten?

Was kann ich tun, um es stattdessen um die Kamera drehen zu lassen? Ich weiß, dass ich es in der Kamera/im Ansichtsbereich zeichnen kann, aber ich muss die Position und Drehung des Objekts nach der Transformation abrufen (damit ich diesem Objekt mit Bullet einen starren Körper geben kann). Wenn die Position und Drehung von einem im Ansichtsbereich wiedergegebenen Objekt noch abgerufen werden kann, ignorieren Sie bitte den ersten Teil des Posts.

Mit anderen Worten, wie kann ich das Objekt um die Kamera zu bewegen und zu drehen und bekomme es Koordinaten und Drehung von den ModelMatrix, so dass ich diese füllen kann:

glm::vec3 objectPosition; 
glm::quat objectRotation; 

Ich habe Online-Ähnliche Beiträge gesehen, dass benutze älteres OpenGL/nicht das MVP-Framework, also bin ich mir nicht sicher, wie ich das machen soll. Prost.

+0

Sie müssen in die _negative_ Kameraposition übersetzen, drehen und zurück übersetzen. Ansonsten verschiebst du das Objekt zum Ursprung und drehst es dann natürlich nur noch um seine eigene Achse. Versuchen Sie, Ihre erste Zeile zu kommentieren. – Psi

+0

Ich habe damit kein Glück. Ich habe zuerst versucht, mit -getPosition() zu übersetzen, rotiert und dann in getPosition() übersetzt (wenn Sie das gemeint haben), aber ohne Erfolg. –

Antwort

0

Haben Sie versucht, MVP2 ohne die Projektionsmatrix zu verwenden? Die Projektionsmatrix splattiert es auf den Bildschirm. Also könnte das helfen.

+0

Das hat einige ... interessante Effekte. Es folgt der Kamera, aber die Rotation und die Übersetzung stimmen nicht mehr wirklich mit der Bewegung überein. –

Verwandte Themen