Commit 3d6a6acc by Kai Westerkamp

Merge branch 'master' of ssh://git.breab.org:2223/kai/CG-Seminar

# Conflicts: # Ausarbeitung/content.tex
parents 243d12de c5fab255
Pipeline #152 passed with stage
...@@ -9,12 +9,12 @@ ...@@ -9,12 +9,12 @@
\begin{center} \begin{center}
\includegraphics[width=1\textwidth]{Bilder/Beispiele.png} \includegraphics[width=1\textwidth]{Bilder/Beispiele.png}
\label{img:beispiel} \label{img:beispiel}
\caption{Einige Beispielbilder: a) Kaustiken mit unterschiedlichen Ring-BRDFs, b) indirekte Highlights c) diffuse Reflexion d) glossy Reflexionen e) eine Punktlichtquelle f) Umgebungslicht \cite{Wang09asia}} \caption{Einige Beispielbilder: (a) Kaustiken mit unterschiedlichen Ring-BRDFs, (b) indirekte Highlights, (c) diffuse Reflexion, (d) glossy Reflexionen, (e) eine Punktlichtquelle, (f) Umgebungslicht \cite{Wang09asia}}
\end{center} \end{center}
\end{figure} \end{figure}
Die korrekte Beleuchtungsberechnung ist ein zentraler Bestandteil der Computergrafik. Die korrekte Beleuchtungsberechnung ist eine zentrale Aufgabenstellung der Computergrafik.
Hierbei ist die indirekte Beleuchtung ein langjähriges Problem. Hierbei ist die indirekte Beleuchtung ein langjähriges hartnäckiges Problem.
Besonders bei Szenen mit vielen unterschiedlichen Materialien stellt dieses eine große Herausforderung dar. Besonders bei Szenen mit vielen unterschiedlichen Materialien stellt dieses eine große Herausforderung dar.
Es gibt einige Algorithmen, die sich für bestimmte Materialien gut eignen, aber bei anderen keine guten Resultate liefern. Es gibt einige Algorithmen, die sich für bestimmte Materialien gut eignen, aber bei anderen keine guten Resultate liefern.
...@@ -27,15 +27,15 @@ Die Berechnungsdauer für diese Bilder liegt zwischen fast interaktiv und ein pa ...@@ -27,15 +27,15 @@ Die Berechnungsdauer für diese Bilder liegt zwischen fast interaktiv und ein pa
\chapter{Ähnliche Arbeiten} \chapter{Ähnliche Arbeiten}
\label{ch:Content1} \label{ch:Content1}
%% ============== %% ==============
In diesme Kapitel werden kurz eineige Algorithmen vorgestellt die versuchend das Problem der indirekten Beleuchtung zu lösen In diesem Kapitel werden kurz einige Algorithmen vorgestellt, die versuchen das Problem der indirekten Beleuchtung zu lösen.
%% =========================== %% ===========================
\section{Virtual Point Lights} \section{Virtual Point Lights}
\label{ch:Content1:sec:Section1} \label{ch:Content1:sec:Section1}
%% =========================== %% ===========================
Eine effiziente Lösung für Indirekte Beleuchtung sind Virtual Point Lights (VPL). Eine effiziente Lösung für indirekte Beleuchtung sind Virtual Point Lights (VPL).
Zuerst vorgestellt in dem Paper Instant Radiosity \cite{VPL} werden durch Pfade von der Lichtquelle viele VPLs in der Szene verteilt. Diese wurde zuerst in dem Paper Instant Radiosity \cite{VPL} vorgestellt. Dabei werden viele VPLs durch Pfade von der Lichtquelle in der Szene verteilt.
Beim Rendern wird mit Shadowmaps die Einfluss aller VPLS auf einen Oberflächenpunkt bestimmt. Beim Rendern wird mit Shadow Maps der Einfluss aller VPLs auf einen Oberflächenpunkt bestimmt.
Der Aufwand für diesen Vorgang steigt linear mit Anzahl der VPLs. Der Aufwand für diesen Vorgang steigt linear mit Anzahl der VPLs.
Es gibt einige Verbesserungen für diesen Algorithmus, jedoch eignet er sich wenig für spekulare Materialien. Es gibt einige Verbesserungen für diesen Algorithmus, jedoch eignet er sich wenig für spekulare Materialien.
Die indirekte Beleuchtung wird bei diesem Vorgehen in einige Punkte zusammengefasst. Die indirekte Beleuchtung wird bei diesem Vorgehen in einige Punkte zusammengefasst.
...@@ -45,11 +45,11 @@ Diese werden bei diesen Materialien durch Glanzlichter sichtbar wie in Abbildung ...@@ -45,11 +45,11 @@ Diese werden bei diesen Materialien durch Glanzlichter sichtbar wie in Abbildung
\section{Photon Mapping} \section{Photon Mapping}
\label{ch:Content1:sec:Section2} \label{ch:Content1:sec:Section2}
%% =========================== %% ===========================
Bei Photon Mapping \cite{Jensen:2001:RIS:500844} wird Photonen von der Lichtquelle ausgesendet, in der Szene verteilt und in einer Photon Map gespeichert. Beim Photon Mapping \cite{Jensen:2001:RIS:500844} werden Photonen von der Lichtquelle ausgesendet, in der Szene verteilt und in einer Photon Map gespeichert.
Im zweiten Durchlauf wird mit Raytracing Methoden die Photon Map ausgewertet. Im zweiten Durchlauf wird die Photon Map mit Raytracing Methoden ausgewertet.
\section{Precomputed Radiance Transfer} \section{Precomputed Radiance Transfer}
Bei Precomputed Radiance Transfer \cite{Sloan:2002:PRT:566654.566612} wird indirektes Licht in Echtzeit erreicht, indem der Lichttransport in statischen Szenen vorberechnet und gespeichert wird. Beim Precomputed Radiance Transfer \cite{Sloan:2002:PRT:566654.566612} wird die Darstellung von indirektem Licht in Echtzeit erreicht, indem der Lichttransport in statischen Szenen vorberechnet und gespeichert wird.
Zum Speichern wird hierbei eine effiziente Methode benötigt, wie zum Beispiel Spherical Harmonics. Zum Speichern wird hierbei eine effiziente Methode benötigt, wie zum Beispiel Spherical Harmonics.
...@@ -58,7 +58,7 @@ Zum Speichern wird hierbei eine effiziente Methode benötigt, wie zum Beispiel S ...@@ -58,7 +58,7 @@ Zum Speichern wird hierbei eine effiziente Methode benötigt, wie zum Beispiel S
\chapter{BRDF und Spherical Gaussians} \chapter{BRDF und Spherical Gaussians}
\label{ch:Content2} \label{ch:Content2}
%% ============== %% ==============
In diesem Kapitel werden die Grundlagen des Lichttransports und Sphericla Gaussians eingeführt. In diesem Kapitel werden die Grundlagen des Lichttransports und Spherical Gaussians eingeführt.
Zur physikalischen Beleuchtungsberechnung muss hierzu die Rendergleichung \cite{Kajiya:1986:RE:15886.15902} berechnet werden. Zur physikalischen Beleuchtungsberechnung muss hierzu die Rendergleichung \cite{Kajiya:1986:RE:15886.15902} berechnet werden.
\begin{equation} \begin{equation}
...@@ -70,21 +70,21 @@ $ L_e(x,o)$ ist das von dem Oberflächenpunkt emittierte Licht, und das Integral ...@@ -70,21 +70,21 @@ $ L_e(x,o)$ ist das von dem Oberflächenpunkt emittierte Licht, und das Integral
Das reflektierte Licht wird bestimmt durch das Integral über die positive Hemisphäre, wobei $ L_i(x,i)$ das einfallende Licht aus der Richtung $i$ (incoming) und Das reflektierte Licht wird bestimmt durch das Integral über die positive Hemisphäre, wobei $ L_i(x,i)$ das einfallende Licht aus der Richtung $i$ (incoming) und
$max(0,i\cdot n)$ der Kosinus zwischen der Oberflächennormalen $n$ und $i$ ist. $max(0,i\cdot n)$ der Kosinus zwischen der Oberflächennormalen $n$ und $i$ ist.
$f_r(i,x,o)$ (kurz $f_r(i,o)$) ist die \textit{Bidirectional Reflectance Distribution Function} (BRDF). $f_r(i,x,o)$ (kurz $f_r(i,o)$) ist die \textit{Bidirectional Reflectance Distribution Function} (BRDF).
Die BRDF ist vom Material abhängig und gibt an einem Oberflächenpunkt x an, wie viel Licht vom Einfallswinkel $i$ in die Ausfallrichtung $o$ reflektiert wird. Die BRDF ist vom Material abhängig und gibt an einem Oberflächenpunkt $x$ an, wie viel Licht vom Einfallswinkel $i$ in die Ausfallrichtung $o$ reflektiert wird.
In der Rendergleichung \ref{renderingGleichung} kann $L_i(x,i) = L(y,-i) $ mit $y = ray(x,i)$ geschrieben werden. In der Rendergleichung \ref{renderingGleichung} kann $L_i(x,i) = L(y,-i) $ mit $y = ray(x,i)$ geschrieben werden.
Somit erhält man eine rekursive Darstellung. Somit erhält man eine rekursive Darstellung.
Diese zu lösen ist eine komplexe Aufgabe und wird häufig durch Approximationen angenähert und vorberechnet, um Beleuchtung in Echtzeit zu berechnen. Diese zu lösen ist eine komplexe Aufgabe und wird häufig approximiert und vorberechnet, um Beleuchtung in Echtzeit berechnen zu können.
Z.B. ignoriert man alle indirekte Beleuchtung und betrachtet nur alle Oberflächen, bei denen $L_e > 0$ ist. Z.B. ignoriert man indirekte Beleuchtung vollständig und betrachtet nur alle Oberflächen, bei denen $L_e > 0$ ist.
In Raytracing Methoden wird die Rendergleichung versucht durch Monte Carlo Intagration und geschicktes Sampling der BRDF anzunähern. In Raytracing Methoden wird versucht, die Rendergleichung durch Monte Carlo Integration und geschicktes Sampling der BRDF anzunähern. \todo{ich habe Integration geschrieben. hoffentlich war das gemeint}
In dieser Ausarbeitung wird ein Algorithmus vorgestellt der die Gleichung mit einer indirekten Reflektion auswertet. In dieser Ausarbeitung wird ein Algorithmus vorgestellt, der die Gleichung mit einer indirekten Reflexion auswertet.
\begin{figure} \begin{figure}
\begin{center} \begin{center}
\label{img:Phong} \label{img:Phong}
\includegraphics[width=.6\textwidth]{Bilder/Phong.png} \includegraphics[width=.6\textwidth]{Bilder/Phong.png}
\caption{Richtungen im Phong Beleuchtungsmodel. N ist die Oberflächennormale, V der Viewvektor, L der Lichtvektor und R die Reflektion von L an N (Vorlesung Fotorealistische Bildsynthese 02\_BRDF)} \caption{Richtungen im Phong Beleuchtungsmodel. N ist die Oberflächennormale, V der Viewvektor, L der Lichtvektor und R die Reflexion von L an N (Vorlesung Fotorealistische Bildsynthese 02\_BRDF)}
\end{center} \end{center}
\end{figure} \end{figure}
Eine einfache BRDF ist durch das Phong Beleuchtungsmodell gegeben. Eine einfache BRDF ist durch das Phong Beleuchtungsmodell gegeben.
...@@ -100,7 +100,7 @@ Hierbei ist $I_L$ die einfallende Lichtintensität, $k_d$ und $k_s$ materialabhà ...@@ -100,7 +100,7 @@ Hierbei ist $I_L$ die einfallende Lichtintensität, $k_d$ und $k_s$ materialabhÃ
\begin{minipage}[b]{0.24\linewidth} \begin{minipage}[b]{0.24\linewidth}
\centering \centering
\includegraphics[width=\linewidth]{Bilder/glossy.png}\\ \includegraphics[width=\linewidth]{Bilder/glossy.png}\\
a) Spekulare Reflektion a) Spekulare Reflexion
\end{minipage}\hfill% \end{minipage}\hfill%
\begin{minipage}[b]{0.24\linewidth} \begin{minipage}[b]{0.24\linewidth}
\centering \centering
...@@ -117,26 +117,27 @@ Hierbei ist $I_L$ die einfallende Lichtintensität, $k_d$ und $k_s$ materialabhà ...@@ -117,26 +117,27 @@ Hierbei ist $I_L$ die einfallende Lichtintensität, $k_d$ und $k_s$ materialabhÃ
\includegraphics[width=\linewidth]{Bilder/SG3.jpg}\\ \includegraphics[width=\linewidth]{Bilder/SG3.jpg}\\
d) Mehrere SG d) Mehrere SG
\end{minipage} \end{minipage}
\caption{a) Spekulare Reflexion im Phong Beleuchtungsmodell b-d) Überlagerung von mehreren SG's \cite{Glossy} \cite{Wang09asia}} \caption{a) Spekulare Reflexion im Phong Beleuchtungsmodell b) bis d) Überlagerung von mehreren SG's \cite{Glossy} \cite{Wang09asia}}
\label{fig:SG} \label{fig:SG}
\end{figure} \end{figure}
\todo{cite Images} \todo{cite Images}
Eine Möglichkeit BRDF's zu approximieren, bieten Spherical Gaussians (SG) \ref{fig:SG}. Eine Möglichkeit BRDF's zu approximieren, bieten Spherical Gaussians (SG) \ref{fig:SG}.
Spherical Gaussians sind definiert als Spherical Gaussians sind definiert durch folgende Darstellung:
$$G(v;p,\lambda,c) = c\cdot e{^{\lambda(v \cdot p-1)}}$$ $$G(v;p,\lambda,c) = c\cdot e{^{\lambda(v \cdot p-1)}}$$
mit $p$ als Mittelachse, $\lambda$ als sharpness und $c$ als Skalar. mit $p$ als Mittelachse, $\lambda$ als sharpness und $c$ als Skalar.
Als kurze Schreibweise ist $G_l(v)=G(v;p_l,\lambda_l) = G(v;p_l,\lambda_l,1)$ Folgende kurze Schreibweisen werden häufig verwendet $G_l(v)=G(v;p_l,\lambda_l) = G(v;p_l,\lambda_l,1)$.
BRDFs können in eine Summe aus einem diffusen und einem spekularen Anteil zerlegt werden: BRDFs können in eine Summe aus einem diffusen und einem spekularen Anteil zerlegt werden:
$$f_r(i,o) = k_d+k_sf_s(i,o)$$ $$f_r(i,o) = k_d+k_sf_s(i,o)$$
In Wang et al.\cite{Wang09asia} wird beschreiben, wie die spekulare Komponente als Summe von SGs dargestellt werden kann: In Wang et al.\cite{Wang09asia} wird beschreiben, wie die spekulare Komponente als Summe von SGs dargestellt werden kann:
$$K_sf_r(i,o) \approx \sum \limits_{j=1}^n G(i,o^j,\lambda^j,c^j)$$ $$k_sf_r(i,o) \approx \sum \limits_{j=1}^n G(i;o^j,\lambda^j,c^j)$$
mit $o^j$, $\lambda^j$, $c^j$ als Zentrum, sharpness und Koeffizient der $j$ SG. mit den Zentren $o^j$, den sharpnesses $\lambda^j$ und den Koeffizienten $c^j$.
Die diffuse Komponente kann als SG mit 0 sharpness dargestellt werden. Die diffuse Komponente kann als SG mit einer sharpness von $0$ dargestellt werden.
$$ kd = G(i;2(o\cdot n)n-o,0,k_d)$$ $$ k_d = G(i;2(o\cdot n)n-o,0,k_d)$$
Es kann somit die BRDF als Summe von SGs dargestellt werden. In \cite{Wang09asia} lassen sich hierfür Beispiele finden, z.B. für Bling-Phong und Cook-Torrance. Somit kann die BRDF als Summe von SGs dargestellt werden. In \cite{Wang09asia} lassen sich hierfür Beispiele finden, z.B. für Bling-Phong und Cook-Torrance.
Des Weiteren können Lichtquellen auch als SGs ($G_l(i)$) dargestellt werden und somit kann eine einheitliche Darstellung als Summe von SGs erzielt werden. Des Weiteren können Lichtquellen auch als SGs ($G_l(i)$) dargestellt werden. Dadurch kann eine einheitliche Darstellung als Summe von SGs erzielt werden.
\todo{ich habe die Formeln verbessert (oder verschlechtert). Bitte genau prüfen. Unklar ist mir noch die letzte Formel in diesem Absatz. Hier taucht kd nun auf BEIDEN Seiten auf. Ist das ok? }
%% ============== %% ==============
...@@ -341,7 +342,7 @@ So erhält man eine nicht ganz akkurate Prioritätenliste, aber eine ausreichend ...@@ -341,7 +342,7 @@ So erhält man eine nicht ganz akkurate Prioritätenliste, aber eine ausreichend
In diesem Kapitel wird der vorgestellete Algorithmus mit anderen verglichen. Außerdem wird die Wahl der Punktlichter und des Fehler Grenzwertes betrachtet. In diesem Kapitel wird der vorgestellete Algorithmus mit anderen verglichen. Außerdem wird die Wahl der Punktlichter und des Fehler Grenzwertes betrachtet.
\section{Genauigkeit des Algorithmus} \section{Genauigkeit des Algorithmus}
In Abbildung \ref{img:Compare} wird die Indirekte Reflektion eines Dreiecks mit unterschiedlichen BRDF's. In Abbildung \ref{img:Compare} wird die indirekte Reflexion eines Dreiecks mit unterschiedlichen BRDF's.
In der Szene steht das Reflektor Dreieck senkrecht auf eine Ebene und ein Licht im 45 Grad Winkel zur Ebene. In der Szene steht das Reflektor Dreieck senkrecht auf eine Ebene und ein Licht im 45 Grad Winkel zur Ebene.
Die Ebene hat eine Lambert BRDF und das Dreieck hat pro Reihe eine unterschiedliche Glossiness. Die Ebene hat eine Lambert BRDF und das Dreieck hat pro Reihe eine unterschiedliche Glossiness.
Der vorgestellte Algorithmus hat bereits bei eine 3 geteilten Approximation der Funktion \ref{1DFunction} sehr starke Ähnlichkeiten zur Referenz. Der vorgestellte Algorithmus hat bereits bei eine 3 geteilten Approximation der Funktion \ref{1DFunction} sehr starke Ähnlichkeiten zur Referenz.
...@@ -355,17 +356,17 @@ Auch die Wahl von 200 Virtual Pointlights zur Bestimmung der Sichtbarkeit wurde ...@@ -355,17 +356,17 @@ Auch die Wahl von 200 Virtual Pointlights zur Bestimmung der Sichtbarkeit wurde
Weniger Lichter führt zu sichtbaren Fehlern und ab 200 sind die Bilder sehr ähnlich zur Referenz. Weniger Lichter führt zu sichtbaren Fehlern und ab 200 sind die Bilder sehr ähnlich zur Referenz.
\section{Vergleiche und Fazit} \section{Vergleiche und Fazit}
In Abbildung \ref{img:Compare} sind Vergleichsbilder mit VPL gegeben. Hier kann man erkennen, das VPLs für diffuse Materialien gut funktionieren. In Abbildung \ref{img:Compare} sind Vergleichsbilder mit VPL gegeben. Hier kann man erkennen, dass VPLs für diffuse Materialien gut funktionieren.
Bei spekularen Materialien werden jedoch sehr schnell Artefakte sichtbar. Bei spekularen Materialien werden jedoch sehr schnell Artefakte sichtbar.
In Vergleich zu Photon Mapping in ähnlicher Zeit produziert der Algorithmus weniger rauschen. In Vergleich zu Photon Mapping produziert der Algorithmus in ähnlicher Zeit weniger Rauschen.
Mit vieler mehr Photonen lassen sich bessere Ergebnisse erzielen, jedoch ist es dann nicht mehr fest interaktiv. Mit viel mehr Photonen lassen sich bessere Ergebnisse erzielen, jedoch ist es dann nicht mehr fest interaktiv. \todo{fest oder fast?}
Bei einfachen Szenen mit verschiedensten Materialien werden gute Bilder errechnet (siehe Abbildung \ref{img:Glossiness}. Bei einfachen Szenen mit verschiedenen Materialien werden gute Bilder errechnet (siehe Abbildung \ref{img:Glossiness}.
Auch für komplexere, texturierte Szenen überzeugt der Algorithmus und kann sogar überzeugende Kaustiken berechnen (siehe Abbildung \ref{img:beispiel}). Auch für komplexere, texturierte Szenen überzeugt der Algorithmus und kann sogar überzeugende Kaustiken berechnen (siehe Abbildung \ref{img:beispiel}).
Die Performance auf einer NVIDIA Geforce GTX690 Grafikkarte reichen von 0,03 fps bei 720p für sehr komplexe Szenen bis zu 1,4 fps bei einfachen Szenen (Magic cube). Die Performance auf einer NVIDIA Geforce GTX690 Grafikkarte reicht von 0,03 fps bei 720p für sehr komplexe Szenen bis zu 1,4 fps bei einfachen Szenen (Magic cube).
Der Algorithmus erreicht also gute Ergebnisse für Szenen mit vielen unterschiedlichen Materialien und ist dabei fast Interaktiv. Der Algorithmus erreicht also gute Ergebnisse für Szenen mit vielen unterschiedlichen Materialien und ist dabei fast interaktiv.
Die Grenze liegt jedoch bei indirekter Beleuchtung mit einer Reflektion. Die Grenze liegt jedoch bei indirekter Beleuchtung mit maximal einer Reflexion.
Indirektes Licht über mehrere Reflexionen werden nicht betrachtet. Indirektes Licht über mehrere Reflexionen wird nicht betrachtet.
Prinzipiell könnte man den Algorithmus so anpassen das auch 2 Reflexionen betrachtet werden, jedoch liegt der Aufwand bei $O(N^2)$ mit N Dreiecken. Prinzipiell könnte man den Algorithmus so anpassen, dass auch 2 Reflexionen betrachtet werden, jedoch liegt der Aufwand bei $O(N^2)$ mit $N$ Dreiecken.
Jede mögliche Kombination zwischen Reflektor 1 und 2 müsste betrachtet werden. Jede mögliche Kombination zwischen Reflektor 1 und 2 müsste betrachtet werden.
\begin{figure} \begin{figure}
...@@ -380,8 +381,8 @@ Jede mögliche Kombination zwischen Reflektor 1 und 2 müsste betrachtet werden. ...@@ -380,8 +381,8 @@ Jede mögliche Kombination zwischen Reflektor 1 und 2 müsste betrachtet werden.
\begin{center} \begin{center}
\includegraphics[width=1\textwidth]{Bilder/Compare.png} \includegraphics[width=1\textwidth]{Bilder/Compare.png}
\label{img:Compare} \label{img:Compare}
\caption{Vergleich der Indirekten Reflektion mit unterscheidlich Spekulraren Materialien. Reihe 1 ist eine diffuser Reflektor und Reihe 2-5 jeweisl Blinn-Ohong mit Shininess 10,100,1000 und 10000. \caption{Vergleich der indirekten Reflexion mit unterschiedlich spekularen Materialien. Reihe 1 ist ein diffuser Reflektor und Reihen 2 bis 5 jeweils Blinn-Ohong mit Shininess 10, 100, 1000 und 10000.
Spalte a)-c) sind mit dem vorgestellten Algorithmus bestimmt mit untescheidlich vielen linearen Stücken der Funktion \ref{1DFunction} d) ist mit 265 VPL erstellt und e) eine path-traced Referenz \cite{Wang09asia} } Spalte (a) bis (c) sind mit dem vorgestellten Algorithmus mit unterschiedlich vielen linearen Stücken der Funktion \ref{1DFunction} bestimmt, (d) ist mit 265 VPL erstellt und (e) eine path-traced Referenz \cite{Wang09asia} }
\end{center} \end{center}
\end{figure} \end{figure}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment