line intersection, perspective projection, near clip pane



  • Hallo miteinander,

    Ich darf graphic primitives (punkte linien dreiecke) zeichnen, allerdings über QPaintDevice.
    Also schön mit Line, Point (icon) ohne einen Rasterizer.

    Bisher war alles auch nur eine Map Ansicht, also orthogonal. Nun kommt aber eine perspectivische Projection hinzu.
    Ich selber hab nur die teile der Camera daten, aber vor allem die Transformations Matrix (Model View Projection) (kommt aus dem Bereich wo wirklich gerendert wird )
    Deswegen hab ich mich entschieden, alles im Screenspace zu machen.

    Funktioniert alles eigentlich sehr gut, bis auf ... tatata, wenn die Vertizies hinter einem liegen.

    Punkte sind kein problem, alles was hinter der near clip pane liegt, zeig ich nicht an.

    Auf Grund von performance und der API kann ich ja nicht rastern ....

    Ich zieh eine Box für den visible Screen Space auf(-1,-1,-1, 1,1,1).
    Clip panes sind was um die (0.00001,10000)

    Checke ob die Linen die Flächen der Box intersecten. Wenn ja versuch ich die Linien zu splitten, und berechne den Schnittpunkt mit der Fläche.

    Problem ist nun die Near Clip Pane .... und was da in der Nähe liegt. Dort scheint das alles nicht zu stimmen.
    Dort bekomm ich Geisterlinien und total falsche projektionen ...

    Hat das schon mal wer rechnen müssen?
    Ist der Raum hinter der Near Clip Pane eigentlich noch linear ? Ich glaub eher nicht ....

    Ciao ...



  • Ob das linear ist oder nicht, hängt von der Transformation in den Screen Space ab. Beispielsweise sind nichtlineare Transformationen auf der Tiefenachse üblich, damit für Werte nah bei der Kamera die minimal darstellbare Distanz möglichst klein ist, während sie mit der Entfernung dann immer weiter wächst.



  • @TGGC
    Die View Projektion Matrix ist OpenGL .... kompatibel ... zumindest wird sie zum rendern auf der HW hergenommen.
    Die ist bestimmt mit den "perspective" oder "frustum" funktionen der Implementation (QT, glm oder irgendwas) erzeugt wurden.
    Ich vermute das die Z Achse demnach nicht mehr linear ist ...
    Hinter der Near clip pane tummelt sich viel im "grad so über 1.0" bereich 🙂



  • Ich glaube du müsstest dich dazu in diesen Thema einlesen: https://www.tomdalling.com/blog/modern-opengl/explaining-homogenous-coordinates-and-projective-geometry/
    bzw. auch hier etwas mathematiklastiger: http://www.songho.ca/opengl/gl_projectionmatrix.html


Anmelden zum Antworten