Projektions Matrix



  • hallo,

    für meinen OpenGL und Direct3D9 Renderer nutze ich natürlich eine Projektions Matrix.
    Ich weiß auch wie man diese erstellt, und wozu sie gut ist.

    Aber in meinem Software Renderer projeziere ich die Vertices immer noch mittels simpler Formel:

    WinX = x / z
    WinY = y / z
    

    Das sieht prinzipiell auch gut aus und funktioniert ja auch, aber zum Einen beinhaltet es keinen Zoom bzw. FieldOfView und die Projektion stimmt nicht exakt mit der von OGL und D3D9 überein.

    Wie die Vertices mit der Modelview Matrix multipliziert werden weiß ich,
    aber wie soll ich das mit der Projektions Matrix machen?
    Geht das genau so wie mit der Modelview Matrix? So wie ich das bereits probiert hatte, funktioniert das nämlich nicht so, wie ich mir das vorstelle.

    Kann mir jemand erklären wie ich die Vertices mit der Projektions Matrix auf den 2D Bildschirm projezieren kann?



  • LukasBanana schrieb:

    Kann mir jemand erklären wie ich die Vertices mit der Projektions Matrix auf den 2D Bildschirm projezieren kann?

    Du multiplizierst den Vertex im Viewspace mit der Projektionsmatrix, dividierst ihn durch w (Homogene Division) und multiplizierst ihn mit der Viewport-Matrix.



  • man sollte nicht mit jeder matrix einzeln projezieren, sondern alle matrizen miteinander multiplizieren, also
    world*view*projection*viewport
    ansonsten macht man redundante arbeit.



  • rapso schrieb:

    world*view*projection*viewport

    Ist die Reihenfolge nicht auch wichtig?

    So weit ich weiß, muss das wenn dann so aussehen:

    Projection * View * World

    (Viewport weiß ich nicht, da weiß ich auch nicht wie die Matrix an sich aussehen soll)



  • LukasBanana schrieb:

    rapso schrieb:

    world*view*projection*viewport

    Ist die Reihenfolge nicht auch wichtig?

    klar, und sie haengt davon ab, ob du row-major oder column-major matricen nutzt.

    (Viewport weiß ich nicht, da weiß ich auch nicht wie die Matrix an sich aussehen soll)

    naja, die matrix die gesetzt wird wenn man glViewport aufruft. Mr G hat sicher endlos viele beispiele.



  • Könntet ihr mir bitte sagen (bzw. schreiben) wie die Viewport Matrix in OpenGL oder halt normaler Weise aussieht?

    Also wenn man "glViewport" aufruft, wie sieht die damit generierte Matrix aus?



  • LukasBanana schrieb:

    Könntet ihr mir bitte sagen (bzw. schreiben) wie die Viewport Matrix in OpenGL oder halt normaler Weise aussieht?

    Also wenn man "glViewport" aufruft, wie sieht die damit generierte Matrix aus?

    http://home.comcast.net/~fbui/glViewport.html


Anmelden zum Antworten