Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Positionierung und Ausrichtung der Kamera. void balance::kamera_bewegen( float seit, float hoch, float vor) { D3DXVECTOR3 v, s, h, t; v = da_gucke_ich_hin.

Ähnliche Präsentationen


Präsentation zum Thema: "Positionierung und Ausrichtung der Kamera. void balance::kamera_bewegen( float seit, float hoch, float vor) { D3DXVECTOR3 v, s, h, t; v = da_gucke_ich_hin."—  Präsentation transkript:

1 Positionierung und Ausrichtung der Kamera

2

3

4 void balance::kamera_bewegen( float seit, float hoch, float vor) { D3DXVECTOR3 v, s, h, t; v = da_gucke_ich_hin - hier_bin_ich; Erzeugt den Blickrichtungsvektor (v) v.y = 0.0f; D3DXVec3Normalize( &v, &v); Normalisiert v s = D3DXVECTOR3( -v.z, 0, v.x); s wird berechnet durch 90° Drehung von v, ist damit normalisiert h = D3DXVECTOR3( 0, 1, 0); h zeigt nach oben und hat die Länge 1 t = seit*s + hoch*h + vor*v; t wird aus 3 Verschiebefaktoren und 3Verschiebevektoren berechnet hier_bin_ich += t; wird um t verschoben da_gucke_ich_hin += t; wird um t verschoben } Achtung: +,- und * sind überladene Operatoren.

5

6 void balance::kamera_schwenken( float seit, float hoch) { D3DXVECTOR3 blick, normale; D3DXMATRIX dreh; blick = da_gucke_ich_hin - hier_bin_ich; Blickwinkelvektor (blick) berechnen D3DXVec3Normalize( &blick, &blick); Blickwinkelvektor normalisieren if( blick.x*blick.x + blick.z*blick.z < 0.005) Verhinderung des Überkopfschwenks { if( ((blick.y > 0) && (hoch > 0)) || ((blick.y < 0) && (hoch < 0))) hoch = 0.0; } D3DXVec3Cross( &normale, &blick, &D3DXVECTOR3( 0.0f, 1.0f, 0.0f)); Drehachse (norm) wird berechnet D3DXMatrixRotationAxis( &dreh, &normale, hoch); Drehmatrix (dreh) wird berechnet. D3DXVec3TransformNormal( &blick, &blick, &dreh); Drehmatrix wird auf Blickwinkelvektor angewendet D3DXMatrixRotationY( &dreh, seit); Drehung wird auf die Y-Achse angewendet. D3DXVec3TransformNormal( &blick, &blick, &dreh); Drehmatrix wird auf Blickwinkelvektor angewendet da_gucke_ich_hin = hier_bin_ich + blick; neuer Blickpunkt wird berechnet }

7

8 void balance::kamera_fahrt( float seit, float hoch, float speed) { D3DXVECTOR3 delta; kamera_schwenken( seit, hoch); delta = da_gucke_ich_hin-hier_bin_ich; Fahrtrichtungsvektor wird berechnet D3DXVec3Normalize( &delta, &delta); fahrgeschwindigkeit += speed; Änderung der Fahrtgeschwindigkeit delta = fahrgeschwindigkeit*delta; Fahrtvektor wir berechnet hier_bin_ich += delta; Standort wir angepasst da_gucke_ich_hin += delta; Blickpunkt wird angepasst }


Herunterladen ppt "Positionierung und Ausrichtung der Kamera. void balance::kamera_bewegen( float seit, float hoch, float vor) { D3DXVECTOR3 v, s, h, t; v = da_gucke_ich_hin."

Ähnliche Präsentationen


Google-Anzeigen