Ich habe mich nur gefragt, wie man einen Spiegel in einem 3D-Spiel erstellt. Mein Vorschlag ist / war, Strahlen zu verfolgen, das "Spiegel" -Objekt zu treffen und dann ein Bild einer zweiten Kamera auf das "Spiegel" -Objekt zu zeichnen, das sich am Spiegel "Punkt" der Originalkamera befindet, indem die Trefferseite des Spiegelobjekts als verwendet wird Spiegelung der Ebene.
Wir müssten den einen Strahl verwenden, der aus der Mitte der Originalkamera kommt, um den Punkt zu bestimmen, an dem sich der Mittelpunkt der Sicht auf der Spiegelebene befindet.
graphics-programming
daemonfire300
quelle
quelle
Antworten:
Wenn Sie OpenGL verwenden, erfahren Sie in den OpenGL-FAQs in Abschnitt 9: Transformationen genau, wie Sie dies tun. Und nein, es handelt sich nicht um Raytracing, da dies verständlicherweise eine sehr ineffiziente (aber qualitativ hochwertige) Methode ist, um dies zu erreichen.
9.170 Wie rendere ich einen Spiegel?
Hier ist im Wesentlichen, was der FAQ-Eintrag sagt, und der Beispielcode zeigt:
Offensichtlich gibt es viel Raum für Optimierungen. Wenn Sie die reflektierte Szene rendern, sollten Sie wahrscheinlich so viel wie möglich aussortieren, da die Spiegel normalerweise klein sind und das standardmäßige Aussortieren nicht auf die Geometrie zutrifft, die auf dem Bildschirm angezeigt wird, aber nicht durch den Spiegel gesehen wird. Sie können auch nur eine vereinfachte Version der Szene über den Spiegel rendern. Um Effekte zu erzielen und den Benutzer davon abzuhalten, die verminderte Qualität zu bemerken, können Sie beim Rendern mit Spiegeln einen Shader (z. B. Unschärfe oder Hell / Verwaschen) anwenden.
Ich stelle mir vor, wenn Sie DirectX verwenden, wäre das Verfahren ähnlich.
quelle