Computergrafik

Spiegelungen

Brechungseffekte | | Postprocessing

Für Spiegelungen zeichnet man die Szene erst einmal in eine Textur aus Sicht der an der Spiegelfläche reflektierten Kamera:

http://khayyam.kaplinski.com/2011/09/reflective-water-with-glsl-part-i.html

Die Transformation der Kamera berechnet man über $M'_{camera} = M_{reflection} \cdot M_{camera}$

mit der Reflektionsmatrix der Spiegelfläche $N_x\cdot x + N_y\cdot y + N_z\cdot z + D = 0$ (N ist der Normalenvektor der Fläche):

$M_{reflection} = \left(\begin{array}{cccc}1-2N_x^2&-2N_xN_y&-2N_xN_z&-2N_xD\\-2N_xN_y&1-2N_y^2&-2N_yN_z&-2N_yD\\-2N_xN_z&-2N_yN_z&1-2N_z^2&-2N_zD\\0&0&0&1\end{array}\right)$

Anschließend zeichnet man die Szene regulär, wobei die Spiegelfläche mit der vorher gerenderten Textur belegt wird. Natürlich kann man die Texturkoordinaten wieder lokal verändern, um z.B. Wasser zu simulieren.

ReflectingWater


Brechungseffekte | | Postprocessing

Options: