Kamera Clipping an geriffelter Ebene



  • Hallo,

    ich habe eine Oberfläche bei der ich an jedem Punkt die Abweichung von einer perfekten xy-Ebene in z-Richtung anhand von uv-Koordinaten berechne, welche auf der CPU berechnet werden. Nun möchte ich an dieser Oberfläche die Umgebung spiegeln. Dafür spiegel ich meine Kamera an meiner perfekten Ebene und render damit eine Reflektions-Textur. Das Problem ist, dass ich die Umgebung die ich mit der Reflektionskamera render noch clippen muss. Wenn ich ein einfaches clipping plane nehme, sieht die Reflektion falsch aus, da meine Oberfläche ja keine perfekte Ebene ist. Wie clippe ich jetzt also an meiner Oberfläche?
    Das einzige was mir bisher eingefallen ist, ist bei der Reflektionkamera eine Tiefentextur mitzurendern, daraus die world position des Objekts auf der Textur berechnen, die world position in den model space meiner Oberfläche transformieren, anhand der xy-Koordinaten der transformierten world position aufwändig die uv-Koordinaten der Oberfläche berechnen, anhand der uv-Koordinaten die z-Komponente der Oberfläche ausrechnen und dann beide z-Komponenten zu vergleichen.
    Das ganze erscheint mir viel zu aufwändig und irgendwo habe ich noch Probleme, da meine Implementierung dieser Methode nicht klappen will 😉
    Ich hoffe es gibt einfachere Methoden für mein Problem, und wenn ja, wie heißen diese?
    Vielen Dank im Voraus 🙂


  • Mod

    wenn ich dich richtig verstanden habe, dann kann man das mit "stencil mirrors" loesen, z.B.

    https://www.opengl.org/archives/resources/code/samples/mjktips/Reflect.html



  • Tut mir leid, aber ich sehe nicht, wie mir das helfen soll.
    Zudem scheint es mir so als wäre stencil mirroring nur eine schnelle Methode um an planaren Flächen zu spiegeln. Das krieg ich auch so schon korrekt ohne Probleme hin. Aber meine Fläche ist ja eben NICHT planar.



  • Wie soll denn der geclippte Bereich aufgefüllt werden? Vielleicht reicht's ja schon, die Fläche nachträglich mit einem Z-Fail-Pass in die Spiegel-Textur zu rendern?



  • decimad schrieb:

    Wie soll denn der geclippte Bereich aufgefüllt werden?

    Das ist eine sehr gute Frage. Eigentlich dachte ich, dass es reicht den Bereich mit der Hintergrundfarbe zu füllen. Allerdings musste ich jetzt feststellen, dass das nicht funktioniert wenn hinter dem geclippten Bereich sich noch andere Objekte verstecken.

    decimad schrieb:

    Vielleicht reicht's ja schon, die Fläche nachträglich mit einem Z-Fail-Pass in die Spiegel-Textur zu rendern?

    Was meinst mit "Die Fläche in die Spiegel-Texture rendern"? Kannst du das näher erläutern? 🙂


Anmelden zum Antworten