Ich habe eine Kamera im FPS-Stil implementiert, wobei die Kamera aus einem Positionsvektor und den Euler-Winkeln Pitch und Yaw (x- und y-Drehungen) besteht. Nach dem Einrichten der Projektionsmatrix übersetze ich dann durch Drehen in die Kamerakoordinaten und übersetze dann in die Umkehrung der Kameraposition:
// Load projection matrix
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// Set perspective
gluPerspective(m_fFOV, m_fWidth/m_fHeight, m_fNear, m_fFar);
// Load modelview matrix
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Position camera
glRotatef(m_fRotateX, 1.0, 0.0, 0.0);
glRotatef(m_fRotateY, 0.0, 1.0, 0.0);
glTranslatef(-m_vPosition.x, -m_vPosition.y, -m_vPosition.z);
Jetzt habe ich ein paar Ansichtsfenster eingerichtet, jedes mit seiner eigenen Kamera, und von jeder Kamera rendern ich die Position der anderen Kameras (als eine einfache Box). Ich möchte auch den Blickvektor für diese Kameras zeichnen, aber ich habe keine Ahnung, wie ich den Blickvektor aus der Position und den Euler-Winkeln berechnen kann. Ich habe versucht, den ursprünglichen Kameravektor (0, 0, -1) mit einer Matrix zu multiplizieren, die die Kameradrehungen darstellt und dann die Kameraposition zu dem transformierten Vektor zu addieren, aber das funktioniert überhaupt nicht (wahrscheinlich, weil ich weit von der Basis entfernt bin):
vector v1(0, 0, -1);
matrix m1 = matrix::IDENTITY;
m1.rotate(m_fRotateX, 0, 0);
m1.rotate(0, m_fRotateY, 0);
vector v2 = v1 * m1;
v2 = v2 + m_vPosition; // add camera position vector
glBegin(GL_LINES);
glVertex3fv(m_vPosition);
glVertex3fv(v2);
glEnd();
Ich möchte ein Liniensegment von der Kamera in Richtung der Blickrichtung zeichnen. Ich habe überall nach Beispielen dafür gesucht, aber ich kann nichts finden.
Herzlichen Dank!