Ich bin mir nicht sicher, ob ich Ihr Problem richtig verstanden habe, aber ich werde trotzdem versuchen, es zu beantworten.
gluLookAt()
Wie der Name schon sagt, wird eine Ansichtsmatrix für eine Kamera erstellt und drei Vektoren als Parameter verwendet.
Der erste ist die Position der Kamera. Hier befindet sich Ihre Kamera. Wenn Sie möchten, dass sich Ihre Kamera um sich selbst dreht, möchten Sie höchstwahrscheinlich nicht, dass sich dieser Parameter ändert.
Der zweite ist der Ort des interessierenden Punktes oder wo Ihre Kamera gezeigt wird.
Der dritte ist ein Vektor, der darstellt, wo 'up' ist.
Wie Sie bereits erwähnt haben, soll sich Ihre Kamera um sich selbst drehen. Es gibt tatsächlich drei Bedeutungen von "Rotation" im dreidimensionalen Raum:
Angenommen, dieses schöne Flugzeug, das uns Wikipedia gespendet hat, ist Ihre Kamera:
Gieren (Gieren?) Ist ziemlich einfach. Sie halten Ihren 'up'-Vektor auf (0, 1, 0) und ändern den Blickwinkel so, dass er sich um die XZ-Ebene dreht, indem Sie ihn auf (cos (Theta), 0, sin (Theta)) setzen.
Der Einfachheit halber nehme ich an, dass sich Ihre Kamera bei (0, 0, 0) befindet. Wenn nicht, können Sie einfach den Standort Ihrer Kamera zu Ihrem Sonderziel hinzufügen.
Das Rollen ist auch ganz einfach. Sie halten den interessierenden Punkt statisch und ändern den 'up'-Vektor so, dass er sich um die XY-Ebene dreht, indem Sie ihn auf (cos (Theta), sin (Theta), 0) setzen.
Der Einfachheit halber nehme ich noch einmal an, Sie betrachten (0, 0, 1) oder (0, 0, -1).
Schließlich ist das Pitching etwas komplizierter, da Sie gleichzeitig Ihren Point-of-Interest- und Up-Vektor ändern, aber es ist auch nicht so kompliziert.
Beginnen wir damit, den interessierenden Punkt so zu ändern, dass er sich um die YZ-Ebene dreht, indem wir ihn auf (0, sin (Theta), cos (Theta)) setzen. Dadurch wird die Kamera gedreht.
Um die Kamera zu stabilisieren, müssen wir den Aufwärtsvektor so einstellen, dass er sowohl zum interessierenden Punktvektor als auch zur X-Achse orthogonal ist. Sie können es auch mit trigonometrischen Funktionen erstellen oder die Funktionen des Kreuzprodukts verwenden, das genau das tut. Sie setzen also den 'up'-Vektor auf cross (point_of_interest, (1, 0, 0)). Wenn Ihre Kamera auf dem Kopf steht, kehren Sie die Parameter um oder machen Sie stattdessen das Kreuzprodukt mit (-1, 0, 0).
Dies umfasst die drei Hauptdrehungen. Bei komplizierteren Rotationen werden Quaternionen verwendet. Quaternions ist ein etwas komplizierteres Thema, das ich nicht in einer einfachen Antwort behandeln kann, aber ich bin sicher, dass es online viele Tutorials gibt.
Einen schönen Tag noch.