kameramatrix



  • ok, ich hab nu ne kameramatrix erschaffen( das adapterprob hab ich erstmal zurückgestellt 🙄)
    nunja, ich kann vorwärts und rückwärts gehen, un natürlich nach rechts und links schauen,aber wnen ic mich drehe, und DANACH laufe lauf ich in die total falsche richtung.

    ich hab folgenden code benutzt:

    void Matrix::Mkamera(Vector position,Vector sichtpunkt,Vector hoehe)
    {//position der kamera,sichtpunkt der kamera höhe der kamera
        //benötigte vectoren
        Vector XAchse;//die x achse des neuen koordinatensystems
        Vector YAchse;//die y achse
        Vector ZAchse;//die z achse
        // Die Achsen des Kamerakoordinatensystems berechnen
        ZAchse. VecNormalisieren(sichtpunkt);//normalisieruen des sichtpunkt vektors ergibt automatisch neue z achse
        XAchse.VecNormalisieren(hoehe*ZAchse);//kreuzmultiplikation
    	YAchse.VecNormalisieren(ZAchse*XAchse);//kreuzmultiplikation
    
        //berechnen der kameramatrix
        Matrix translation;
        translation.Mtranslation(position);//translationsmatrix
    
        Matrix achsen(XAchse.VecGetx(),YAchse.VecGetx(),ZAchse.VecGetx(),0.0f,
                       XAchse.VecGety(),YAchse.VecGety(),ZAchse.VecGety(),0.0f,
                       XAchse.VecGetz(),YAchse.VecGetz(),ZAchse.VecGetz(),0.0f,
                       0.0f,0.0f,0.0f,1.0f);//achsenmatrix
        Matrix Kamera=translation*achsen;
        for(int x=0;x<4;x++){
            for(int y=0;y<4;y++){//übertragen der behelfskameramatrix
                this->m[x][y]=Kamera.m[x][y];
            }
        }
    
    }
    

    der mathematische hintergrund ist, durch kreuzmultiplikationen die achsen des neuen koordinatensystems zu erstellen.
    die funktion erhält im ersten parameter die kameraposition, im 2. parameter einen vektor folgender form:

    sin(DEG_TO_RAD(blickwinkel der kamera)),0,cos(DEG_TO_RAD(blickwinkel der kamera))

    dieser vector beschreibt den blickpunkt der kamera
    der 3. vector kann erstmal vernachlässigt werden, da er standardmäßig 0,1,0 ist.
    weis jemand wo der fehler liegt?
    ich hab nämlich atm nich die lust nochmal en paar stunden zeit zu investieren um eine andere theorie der kameramatrix zu lernen und um hinter mathematische systeme zu steigen, die mindestens 3 schuljahre zu hoch für mich sind 😃



  • Mal versucht den Translationsvektor zu rotieren?

    Bye, TGGC (Der Held ist zurück)



  • TGGC schrieb:

    Mal versucht den Translationsvektor zu rotieren?

    ERROR 2007: Bad argument!

    Accepted arguments: "Lern coden!", "-> Doku", "Du bist zu blöd!" 😉 😃



  • void CPointOfView::GetMatrix(CMatrix3D *matrix)
    {
    	matrix->CreateTranslation(-Position.X,-Position.Y,-Position.Z);
    	matrix->MultiplyMatrixRotationY(-Mod(AngleY,PI*2)); //multipliziert die matrix mit einer rotationsmatrix
    	matrix->MultiplyMatrixRotationX(-Mod(AngleX,PI*2));
    	matrix->MultiplyMatrixRotationZ(-Mod(AngleZ,PI*2));
    }
    

    mit:

    a) Position = Vector3D(x,y,z), beschreibt die position des betrachters
    b) AngleX,AngleY,AngleZ beschreibt die rotationswinkel um die achsen x,y und z

    die matrix muss dann noch gesetzt werden:

    pD3DDevice->SetTransform(D3DTS_VIEW,&matrix); //das ist die matrix die oben generiert wurde, nur als directx matrix
    
    	D3DXMatrixPerspectiveLH(&ProjectionMatrix,0.2f/m_Zoom,0.2f/m_Zoom*m_AspectRatio,0.1f,100000.0f);
    	pD3DDevice->SetTransform(D3DTS_PROJECTION,&ProjectionMatrix);
    


  • @kxII das sieht ja schonmal sehr logisch aus...wieso nehm ich nur immer den schweren weg 🙄

    @sgt.nukem ➡ add user to group TGGC like

    einen schönen abend noch euch allen 😃
    //edit sorry, nu klappts...hab an einer stelle vergessen den winkel ins bogenmaß zu übertragen 🙄



  • Hmm, ich hab das gleiche wie KXII gesagt, nur kürzer...

    Muss wohl an mir liegen.

    Bye, TGGC (Der Held ist zurück)



  • otze schrieb:

    @sgt.nukem ➡ add user to group TGGC like

    Ich wollt' doch nur TGGC 'n bisserl verscheissern, war gar nicht gegen Dich gerichtet...! 🙂



  • @Sgt. Nukem:
    Du bist zu blöd. Lern coden! -> Doku

    Bye, TGGC (Der Held ist zurück)



  • TGGC schrieb:

    @Sgt. Nukem:
    Du bist zu blöd. Lern coden! -> Doku

    Bye, TGGC (Der Held ist zurück)

    Ich verlange sofort, daß TGGC gebannt wird!! 🙄

    Er wiedert mich an! 😮 (oder wiehert?!?) 😃

    Er macht mich als totalen Newbie immer soooo fertig! 👎 👎 👎

    Bös'! Bös'! Bös'! 😞



  • Sagt man einmal die Wahrheit, schon heulen'se rum...

    Bye, TGGC (Der Held ist zurück)


Anmelden zum Antworten