Frage

In meiner Schwemme Anwendung, die ich Simulation eine Ebene mit der Kamera. Wenn die Flugzeuge Geschwindigkeit niedrig ist beabsichtige ich, die Nase Start haben auf den Boden zu zeigen, wie die Kamera fällt. Mein erster Instinkt war, nur die ändern Tonhöhe , bis er nach unten auf -90degrees hingewiesen wurde. Ich kann jedoch nicht nur die Tonhöhe ändern, denn wenn das Flugzeug auf die Seite gekippt oder auf den Kopf, dann wäre es beachten Richtung auf den Boden werden zu ändern.

Jetzt versuche ich, nach unten durch Verschieben des ‚lookAt.y‘ eine grobe Simulation, dies zu tun. Um dies zu tun ich alle Koordinaten der aktuellen Kamera zu bekommen versuche, dass ich die Kamera setzen verwenden (Eye.x, Auge.y, eye.z, look.x, look.y, look.z, up.x, up.y, up.z). Dann erinnern an die Set mit den neuen geänderten Werte.

Ich habe die Arbeit mit der Camera.cpp und Camera.h meiner Kamerafunktionen zu steuern. Sie können gefunden werden hier

nach Methoden Addition aller Werte zu erhalten, nur die Augenwerte werden aktualisiert, tatsächlich, wenn verschiedene Kamerabewegungen gemacht werden. Ich denke, meine Frage ist, wie rufe ich diese Werte.

Der glLoadMaxtrix Aufruf ist in dieser Funktion

void Camera :: setModelViewMatrix(void)

{ // load model view matrix with existing camera values

    float m[16];

    Vector3 eVec(eye.x, eye.y, eye.z);

    m[0] =  u.x; m[4] =  u.y; m[8]  =  u.z;  m[12] = -eVec.dot(u);

    m[1] =  v.x; m[5] =  v.y; m[9]  =  v.z;  m[13] = -eVec.dot(v);

    m[2] =  n.x; m[6] =  n.y; m[10] =  n.z;  m[14] = -eVec.dot(n);

    m[3] =  0;   m[7] =  0;   m[11] =  0;    m[15] = 1.0;

look.x = u.y; look.y = v.y; look.z = n.y; 

    glMatrixMode(GL_MODELVIEW);

    glLoadMatrixf(m);

}

Gibt es eine Möglichkeit ‚Auge‘ zu bekommen, ‚LookAt‘ und ‚up‘ Werte aus der Matrix hier? Oder sollte ich etwas anderes tun, um diese Werte zu bekommen?

-Danke im Voraus für Ihre Hilfe

War es hilfreich?

Lösung

Die Kamera Klasse Link zu Sie ist nicht eine tatsächliche OpenGL-Klasse, aber es sollte mit einfachen genug sein, um zu arbeiten.

Die Funktion zitierte nimmt nur die aktuellen Werte des Kameraobjekts und sendet sich an OpenGL. Wenn Sie auf dem Kamera-Setup-Funktion anschaut, kann man sehen, wie das Programm die Werte berechnet es tatsächlich speichert.

Das Auge Wert wird direkt gespeichert. Der LookAt Wert ist nur der Wert von (eye - n), durch den Vektor math. Der Aufwärtswert ist das härteste, aber wenn ich richtig meine Vektor Mathe erinnern, ich glaube, dass nach oben = (n u überqueren).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top