[gelöst][OpenGL] Billboards verzerrt



  • Hallo,

    Ich hab einen dummen Fehler, vermutlich hab ich was total doofes übersehen...:

    Meine Billboards sind am Rand des Bildschirms immer verzerrt, also größer. Außerdem ist die Ecke, die am weitesten von der Mitte des Bildschirms entfernt ist noch weiter nach außen gezogen. Dadurch wird mein Quadrat total schief.
    Die Kamera steht in dem Falle fix, oder dreht sich um (0|0|0).
    Screenshot: hier

    Hier ein Auszug aus dem Programm:

    // Quad rendering
    vector3d look = obj_pos - cam.pos; // obj_pos ist der Mittelpunkt des Quadrats
    look.normalize();
    vector3d right = vector3d::cross_product(vector3d(0,1,0), look);
    vector3d up = vector3d::cross_product(look, right);
    
    // Ändert auch nichts, was mathematisch durchaus logisch ist...
    //right.normalize();
    //up.normalize();
    
    // Vektoren auf die richtige Länge bringen. Dadurch hat mein Quadrat
    //  (in der Bildschirmmitte) die richtige Größe.
    right*=scale;
    up*=scale;
    
    glBegin(GL_QUADS);
      v=obj_pos-right-up;  glTexCoord2f(0,0);  glVertex3fv(&v.x);
      v=obj_pos+right-up;  glTexCoord2f(1,0);  glVertex3fv(&v.x);
      v=obj_pos+right+up;  glTexCoord2f(1,1);  glVertex3fv(&v.x);
      v=obj_pos-right+up;  glTexCoord2f(0,1);  glVertex3fv(&v.x);
    glEnd();
    

    Eigentlich soll das Quadrat die Größe behalten und quadratisch bleiben. Wie muss ich es dazu drehen? (Was muss ich ändern?)

    Danke im voraus! 😃


  • Mod

    vielleicht hast du perspektivische projektion an



  • rapso schrieb:

    vielleicht hast du perspektivische projektion an

    Ich hab beides probiert, gleiches Problem auch mit Parallelprojektion. Eigentlich müsste die perspektivische Projektion doch auch gehen, oder täusch ich mich da?


  • Mod

    kannst du ein screenshot zeigen wie es mit orthogonaler projektions matrix aussieht?



  • Jetzt bin ich komplett verwirrt...

    rapso schrieb:

    kannst du ein screenshot zeigen wie es mit orthogonaler projektions matrix aussieht?

    Ganz genau so. Da ändert sich nichts. Ich setz die Matrix mit "glOrtho" und vorerst ausprobierten Werten. Dann genau der gleiche Quelltext wie oben im Beispiel. Ich setz ja da noch ein paar Dinge an der Matrix um, um das Quad auszurichten: Ist das der Fehler?

    Dadurch ist der Gesamtmaßstab kleiner. Ich hab nämlich keine Ahnung, wie ich die Projektionsmatrix richtig setze, dass der Maßstab gleich bleibt. Hast du/ein anderer da ein Beispiel/Tutorial?

    Könnte man nicht auch die Spannvektoren up/right anpassen, damit das funktioniert?

    ---

    Vielleicht bin ich komplett auf dem falschen Weg, und das muss man/sollte man anders machen. Ein funktionierendes Beispiel wäre schön... (Ich lerne am Besten mit Beispielen)



  • rapso schrieb:

    vielleicht hast du perspektivische projektion an

    Aber nur ein ganz klein wenig...
    Ich setz natürlich nochmal irgendwo anders im Quelltext die persp. Projektion und überschreibe damit alles wieder... 😃
    Du hattest Recht...


Anmelden zum Antworten