Folgendes Problem: Ich habe das Tutorial aus Davids Buch Modelle (Kapitel03) so verändert, dass die Kamera auf dem Raumschiff befestigt ist, und man das Raumschiff steuern kann. Klappt auch gut, nur mit dem CameraUp Vector habe ich derbe Probleme. Ich berechne ihn im Moment wie folgt:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
//KameraPosition relativ zum Raumschiff
vCameraPos = tbVector3(0, 10, -10);
//KameraPosition berechnen
vCameraPos = tbVector3TransformCoords(vCameraPos, g_pPlayerBot->GetBotMatrix());
//Kamerarichtung berechnen
vCameraDir = vCameraPos + g_pPlayerBot->GetBotFrontVector();
//KameraUp berechnen
vCameraUp = vCameraPos + tbVector3TransformCoords(g_pPlayerBot->GetBotFrontVector(), tbMatrixInvert(g_pPlayerBot->GetBotMatrix()) * tbMatrixRotationX(g_90d) * g_pPlayerBot->GetBotMatrix());
mCamera = tbMatrixCamera(vCameraPos, vCameraDir, vCameraUp);
|
g_pPlayerBot->GetBotFrontVector() stellt den Richtungsvektor des Raumschiffs dar, die Länge ist immer 1.
g_pPlayerBot->GetBotMatrix() ist die Matrix des Raumschiffs, sie enthält Drehungen und Positionsverschiebungen
Die Konstante g_90d ist Pi / 0.5, also 90° im Bogenmaß. Der Vektor KameraUp soll also einfach um 90° um die X-Achse gedreht werden, so dass die Kamera immer nach oben zeigt, vom Raumschiff aus gesehen.
Position und Richtung der Kamera werden korrekt berechnet. Bitte um Hilfe