hi leute,
ich versuch grad einen kleinen flugsimulator zu proggn und will, dass die Kamera immer genau hinter dem Flugzeugmodell bleibt (sich also mit rotiert) und auf das Flugzeug schaut.
Ich habe dazu die Vektor und Matrixfunktionen der TriBase Engine zur verfügung, Position, Blickrichtung (Winkel nicht Vektor), Blickhöhe der Kamera, relative X,Y und Z achsen des Modells und natürlich Positionen von Kamera zur verfügung.
Nur bekomm ich das nicht so ganz auf die reihe
Mein bisheriger Ansatz war erst mal die Position der Kamera etwas hinter die Position des Modells zu setzen (auf absoluter z achse) und dann die position der Kamera um die Achsen des Modells zu rotieren. Ich weiß nicht genau mit welchem Faktor (ich hab den Blickwinkel der Kamera dazu benutzt...)
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
CCamera FollowObject(CCamera CameraOld, CModel *Object)
{
CCamera Camera;
Camera = CameraOld;
Camera.Position = Object->Position + tbVector3(0.0f, 30.0f, -30.0f);
if(Object->Position.z > 0)
Camera.Angle = tbVector3Angle(tbVector3(0.0f, 0.0f, 1.0f), tbVector3(0.0f, 0.0f, Object->Position.z));
else
Camera.Angle = tbVector3Angle(tbVector3(0.0f, 0.0f, -1.0f), tbVector3(0.0f, 0.0f, Object->Position.z));
tbMatrix mRotation;
tbMatrixRotationAxis(Object->YAxis, Camera.Angle);
Camera.Position = tbVector3TransformCoords(Camera.Position, mRotation);
return Camera;
}
|
Fenster bleibt allerdings schwarz :lol:
Was is an meinem Codel alles Falsch?