Translation und Rotation



  • Guten Tag.
    Momentan arbeite ich an einer Art Camera, mit der man sich frei durch die Welt bewegen kann.
    Das umschauen funktioniert, das "laufen" auch. Allerdings bewegt man sich, trotz Rotation, immer auf dem Ursprungsgraphen, nicht auf dem Rotierten. oO

    Ich habe einiges ausprobiert und mich kundig gemacht, allerdings habe ich dadurch nur meine Vorstellung erhärtet bekommen, dass nach einer Rotation per glRotatef(); eigentlich die Translation auch auf dem rotierten Graphen stattfinden sollte.
    Das tut sie allerdings, wie gesagt nicht.

    Die betreffenden Zeilen wären folgende:

    glRotatef(xrotate, 1, 0, 0);
        glRotatef(yrotate, 0, 1, 0);
        glRotatef(zrotate, 0, 0, 1);
        glTranslatef(xcamera,ycamera,zcamera);
    

    Simpel und kurz: Muss ich erst anhand der Rotationswinkel die Translationswerte errechnen?
    Falls ja: Weshalb? Ich verstehe nicht wieso nicht auf dem rotierten Graphen translatiert wird...

    Edit:
    Die Zeichnungen an sich erfolgen übrigens in Push- und PopMatrix() Blöcken, falls das etwas ausmachen sollte...



  • Versuchs mal mit

    PushMatrix();
    dein code ohne translatef
    Popmatrix();
    translatef

    Dann bist du wieder im alten Koordinatensystem bzw verwendest die alte Matrix. Dadurch sollte das ganze funktionieren



  • Bei Rotationsproblem vielleicht auch mal hier vorbeischauen :
    http://www.joachimrohde.com/cms/xoops/modules/articles/article.php?id=17



  • ich würde eine Art Trackball mit Quaterionen programmieren
    dann kannst du jede Maus Bewegung mit glMultMatrixf() zu deiner ursprünglichen Matrix multiplizieren. Evtl auch mit gluLookAt(), gluUnProject() arbeiten.

    Nicht mit Translatef und Rotatef, da du ja nicht das Objekt sondern die Kamera drehen möchtest!

    Gruß Matthias



  • Trackball..Quaterionen?

    Die Version mit den Matrizen habe ich ausprobiert, das ganze will allerdings nicht wie ich will.
    Habe alle möglichen Variationen durch und habe einmal das selbe Ergebnis gehabt, einmal nur die Mausrotation und einmal nur die Bewegungen auf den Axen.

    _<

    glLookAt().. ich suche noch nach einer Seite die mir die parameter erklärt.^^



  • Vll ist http://www.morrowland.com/apron/tut_gl.php was für dich. Da sind unter 3B,4 und 4B recht gute tutorials für Kammeras.



  • Vielen Dank.
    Ich habe mir die Kamerklasse genommen und meinen bedürfnissen angepasst. Die Feinjustierung dürfte kein Problem werden.

    Vielen, Vielen Dank an alle.


Anmelden zum Antworten