1 / 8

Positionierung und Ausrichtung der Kamera

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 - hier_bin_ich; Erzeugt den Blickrichtungsvektor (v) v.y = 0.0f; D3DXVec3Normalize( &v, &v); Normalisiert v

taya
Download Presentation

Positionierung und Ausrichtung der Kamera

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Positionierung und Ausrichtung der Kamera

  2. 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° Drehungvon 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.

  3. 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 }

  4. 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 }

More Related