Wie erstelle ich ein mirror-spiegelung etwas in OpenGL?
Vom mein Verständnis ist, dass die Spiegel in OpenGL, dass Sie im Grunde zeichnen der Szene, dann blätterst du alles über und zeichnen Sie es wieder, mit Ausnahme nur machen es sichtbar durch den Spiegel, wodurch eine perfekt gespiegelt Bild im Spiegel. Aber das problem, das ich sehe, ist, dass, wenn dies zu tun, ist der einzige Spiegel, der andere Spiegel sind diejenigen, die ergangen sind, nachdem die vorherigen Spiegel. Also, wenn ich render Spiegel 1 Spiegel 2 Spiegel 1 nicht sehen kann, mirror 2, mirror 2 sehen können Spiegel 1. Wie kann ich effektiv Spiegel Spiegel ohne das passiert?
InformationsquelleAutor | 2013-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt zwei Allgemeine Möglichkeiten zum Rendern von Reflexionen mit mehrere/rekursiver Reflexionen...
Rendern in eine textur und anwenden der textur auf die Spiegel-Oberfläche.
Einen Vorteil von dieser ist, können Sie den Spiegel Texturen der andere Spiegel aus dem vorherigen frame. Während dies führt zu kleinen Verzögerungen, es tut nicht weh, ist die Leistung, wenn Sie sehen wollen, durch viele Spiegel. Wenn dies ein Problem ist, könnte man neu machen, um die Reflexion Texturen ein paar mal vor der Kamera machen.
Können Sie diese Methode auch verwenden, wenn die Spiegel nicht perfekt planar, zum Beispiel dies funktioniert gut für kleine Wellen im Wasser. In der Tat kann diese sogar erweitert werden mit cube-maps zur Unterstützung Ungefähre willkürliche Reflexionen.
Portal rendering, wo Sie, wie Sie sagen, verwenden Sie die stencil-Puffer abkleben der Spiegel-Oberfläche, flip-Szene rund um die mirror ' s Flugzeug, und neu Rendern.
Spiegel-rendering ist nur ein spezieller Fall von portal-rendering. Diese kann getan werden, rekursiv, aber es wird ziemlich kompliziert, da Sie zum verwalten der depth-buffer richtig. Sie müssen auch eine räumliche Datenstruktur, die für Ihre Szene, so dass Sie nicht haben, um eine vollständige re-Rendern und nur wiedergeben, was Sie sehen können, durch den Spiegel (oder es wird sehr langsam sehr schnell). Wenn Sie diesen Weg gehen, würde ich vorschlagen, nehmen Sie es langsam und gehören viele von visual debugging und die Verwendung einer einfachen und intuitiven test-Szene.
(Es gibt viele Seiten auf single-Reflexion stencil buffer verwenden, aber das ist nicht, was Sie nach so ich nicht die Mühe, die Auflistung bestimmter)
*Bitte beachten Sie: diese links sind nur das Ergebnis von ein paar Minuten googeln. Fühlen Sie sich frei zu Bearbeiten und entfernen/hinzufügen.
InformationsquelleAutor jozxyqk
Der einfachste Weg ist die Verwendung der stencil-Puffer. Überprüfen Sie heraus dieses Seite.
Die Grundidee ist:
Wenn Sie Spiegel, die Spiegel haben Sie zu tun, alle möglichen Kombinationen (erste render-mirror 1, dann Spiegel 2 Spiegel 1 nachdenken, dann machen Spiegel 2 in die original Szene, dann Spiegel 1 wird die Reflexion im Spiegel 2 wird die Reflexion, und so weiter...).
Können Sie nicht unendlich Lichtspiegelungen mit diesem Algorithmus (nur einen limitted Menge von Reflexionen). Nur die ray-tracing-kann das tun.
InformationsquelleAutor Sorin