tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
277
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hallo
    Jeder kenn ein EgoShooter oder? Gut
    Also ich kann meine Kamera mit der Maus schwenken und auch in die aktuelle richtung gehen.
    Aber ich will wenn man Pfeil links oder Rechts drück sich die Kamera auf der X achse bewegt.
    Ist ja relativ einfach: CamPos.x += 25* fNumSecs;.
    Nur das ich halt auch nur auf der x achse gehen kann, möchte aber das wenn man die links/rechts taste drückt man zur seite geht.Was muss ich dafür rechnen?
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  2. #2
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Hallo,

    Du hast ja vermutlich eine Matrix die dir deine Kameraposition beschreibt. Je nach implementierung ist es so das Mutliplikationen mit einer Matrix von rechts um die lokalen Achsen verschiebt, und eine Multiplikation von Links um die globalen Achsen. Was du machen willst ist eine Verschiebung um die X-Achse nach den Rotationen, also entlang der lokalen X-Achse.
     

  3. #3
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Ok
    Ich verstehe den Text leider nicht so ganz.
    Aber meine berechung für die Kameramatrix:
    Code cpp:
    1
    2
    3
    4
    
    mCamera = MatrixCamera(g_vCameraPos,
                                 g_vCameraPos + Vector3(sinf(g_fCameraAngleX) * cosf(g_fCameraAngleY),
                                                               g_fCameraAngleY,
                                                              cosf(g_fCameraAngleX) * cosf(g_fCameraAngleY)));
    MatrixCamera ist nur ne Matrix und Vector3, na was wohl
    Die berechung der Blickrichtung muss ich nicht schreiben oder?
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  4. #4
    portus portus ist offline Grünschnabel
    Registriert seit
    Sep 2011
    Beiträge
    2
    Poste mal die Blickrichtung !
     

  5. #5
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Willst du jetzt nur gucken weil dus nett packst oder kannst du mir Helfen?
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  6. #6
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Hallo,

    Ich versteh noch nicht ganz wie du aus zwei Vec3 (g_vCameraPos, und dem den du dir da zusammenaddierst) eine Kameramatrix bekommst. Du musst doch irgendwo ein 4x4-Matrix zusammenstellen mit der du dann die Vertices multiplizierst.
    Welches System verwendest du? DirectX oder OpenGL?

    Welchen Typ hat mCamera? und was passiert in MatrixCamera()?
     

  7. #7
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    MatrixCamera():
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    Matrix MatrixCamera( const Vector3& vPos, 
                                        const Vector3& vLookAt, 
                                        const Vector3& vUp ) //  Vector3( 0.0f, 1.0f, 0.0f )
    {
        Vector3 vZAxis( Vector3Normalize( vLookAt - vPos ) );
     
        Vector3 vXAxis( Vector3Normalize( Vector3Cross( vUp, vZAxis ) ) );
     
        Vector3 vYAxis( Vector3Normalize( Vector3Cross( vZAxis, vXAxis ) ) );
     
        return MatrixTranslation( -vPos ) *
               Matrix( vXAxis.x, vYAxis.x, vZAxis.x, 0.0f, 
                        vXAxis.y, vYAxis.y, vZAxis.y, 0.0f, 
                        vXAxis.z, vYAxis.z, vZAxis.z, 0.0f, 
                        0.0f,     0.0f,     0.0f,     1.0f );
    }
    Ich verwende DirectX 9
    Matrix mCamera; ist das gleiche wie D3DMATRIX
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  8. #8
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Ist für DirectX-Matrizen die Multiplikation definiert? Dann erstellst du dir zusätzlich eine Translationsmatrix entlang der x-Achse und rechnest: cameraMatrix = translationsMatrix * cameraMatrix.
     

  9. #9
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Ist für DirectX-Matrizen die Multiplikation definiert?
    Nein habe ich überladen.
    Die lösung von dir muss ich aber nicht so ganz verstehen wenn ich dann die neu matrix habe was mache ich dann?
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  10. #10
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Das ist dann deine neue Kameramatrix. Die verwendest du dann in den Shadern.
     

  11. #11
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Ich möchte ja nur das sich die Kamera je nach blickrichtung zur Seite bewegt.
    Nichts mit Shadern immoment( obwohl... )
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  12. #12
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Nimm zwei von den Matrix-Vektoren (LookAt - Pos und LookUp), rechne dir den Vektor aus, der normal auf die beiden steht, und du hast einen Vektor, der dir die Richtung nach links bzw. rechts angibt (je nach Reihenfolge).
     

  13. #13
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Ähm bitte sei nicht böse aber ich bin neu in Vector Rechnung deswegen versteh ich das nicht ganz.
    Ich werde mal etwas testen und mich dann nochmal melden
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

Ähnliche Themen

  1. Kamera Bewegen
    Von SpiderZLS im Forum Cinema 4D
    Antworten: 4
    Letzter Beitrag: 27.03.08, 17:10
  2. Kann nur noch Kamera bewegen?
    Von jccTeq im Forum Cinema 4D
    Antworten: 2
    Letzter Beitrag: 14.01.07, 22:02
  3. Antworten: 0
    Letzter Beitrag: 04.08.05, 13:48
  4. Spieleprogrammierung
    Von warlike im Forum Java
    Antworten: 2
    Letzter Beitrag: 15.06.05, 18:38
  5. [Director Shockwave3D] Kamera an Pfad bewegen
    Von Martin Schaefer im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 30.03.03, 16:40