Commit 6202d58b by Kai Westerkamp

+

parent 00cdb9ef
Pipeline #147 passed with stage
...@@ -51,3 +51,46 @@ address = {New York, NY, USA} ...@@ -51,3 +51,46 @@ address = {New York, NY, USA}
number = 5, number = 5,
year = {2008} year = {2008}
} }
@inproceedings{VPL,
author = {Keller, Alexander},
title = {Instant Radiosity},
booktitle = {Proceedings of the 24th Annual Conference on Computer Graphics and Interactive Techniques},
series = {SIGGRAPH '97},
year = {1997},
isbn = {0-89791-896-7},
pages = {49--56},
numpages = {8},
url = {http://dx.doi.org/10.1145/258734.258769},
doi = {10.1145/258734.258769},
acmid = {258769},
publisher = {ACM Press/Addison-Wesley Publishing Co.},
address = {New York, NY, USA},
keywords = {Monte Carlo integration, accumulation buffer, hardware, jittered low discrepany sampling, photorealism, quasi-Monte Carlo integration, quasi-random walk, radiance equation, radiosity, realtime rendering algorithms, shading},
}
@misc{Glossy,
title = {Blurred Glossy Reflections},
howpublished = {\url{http://blog.yiningkarlli.com/2012/12/blurred-glossy-reflections.html}},
note = {Accessed: 2016-05-30}
}
@article{Kajiya:1986:RE:15886.15902,
author = {Kajiya, James T.},
title = {The Rendering Equation},
journal = {SIGGRAPH Comput. Graph.},
issue_date = {Aug. 1986},
volume = {20},
number = {4},
month = aug,
year = {1986},
issn = {0097-8930},
pages = {143--150},
numpages = {8},
url = {http://doi.acm.org/10.1145/15886.15902},
doi = {10.1145/15886.15902},
acmid = {15902},
publisher = {ACM},
address = {New York, NY, USA},
}
...@@ -14,13 +14,13 @@ ...@@ -14,13 +14,13 @@
\end{figure} \end{figure}
Die korrekte Beleuchtungsberechnung ist ein zentraler Bestandteil der Computergrafik. Die korrekte Beleuchtungsberechnung ist ein zentraler Bestandteil der Computergrafik.
Hierbei ist die indirekte Beleuchtung eines der langjährigsten Probleme. Hierbei ist die indirekte Beleuchtung eines der langjährigen Probleme.
Besonders bei Szenen mit vielen unterschiedlichen Materialien stellt dies eine große Herausforderung dar. Besonders bei Szenen mit vielen unterschiedlichen Materialien stellt dies 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.
In dieser Arbeit wir ein Algorithmus vorgestellt der auf Spherical Gaussians basiert und ein Breites spektrum an Materialeigenschaften abdeckt. In dieser Arbeit wir ein Algorithmus vorgestellt der auf Spherical Gaussians basiert und ein Breites Spektrum an Materialeigenschaften abdeckt.
Mit diesem Algorithmus lässt sich indirektes Licht mit einer Reflektion darstellen. Mit diesem Algorithmus lässt sich indirektes Licht mit einer Reflektion darstellen.
In Abbildung \ref{img:beispiel} sidn eineige Beispielbilder, die mit dem Algorithmus erstellt wurden. In Abbildung \ref{img:beispiel} sind einige Beispielbilder, die mit dem Algorithmus erstellt wurden.
Die Berechnungsdauer für diese Bilder liegt zwischen fast interaktiv und ein paar Sekunden pro Frame. Die Berechnungsdauer für diese Bilder liegt zwischen fast interaktiv und ein paar Sekunden pro Frame.
%% ============== %% ==============
...@@ -33,24 +33,28 @@ In diesme Kapitel werden eineige Algorithmen vorgestellt die versuchend das Prob ...@@ -33,24 +33,28 @@ In diesme Kapitel werden eineige Algorithmen vorgestellt die versuchend das Prob
\section{Virtual Point Lights} \section{Virtual Point Lights}
\label{ch:Content1:sec:Section1} \label{ch:Content1:sec:Section1}
%% =========================== %% ===========================
Virtual Point Lights (VPL \cite{VPL}) Eine effiziente Lösung für Indirekte Beleuchtung sind Virtual Point Lights (VPL).
Auf jeden Fall, die kommen nacher noch bei Sichtbarkeit Zuerst vorgestellt in dem Paper Instant Radiosity \cite{VPL} werden durch Pfade von der Lichtquelle viele VPLs in der Szene verteilt.
Beim Rendern wird mit Shadowmaps die Einfluss aller VPLS auf einen Oberflächenpunkt bestimmt.
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.
Die indirekte Beleuchtung wird bei diesem Vorgehen in einige Punkte zusammengefasst.
Diese werden bei diesen Materialien durch Glanzlichter sichtbar wie in Abbildung \ref{img:Compare} gut erkennbar.
%% =========================== %% ===========================
\section{Photon Mapping}+ \section{Photon Mapping}+
\label{ch:Content1:sec:Section2} \label{ch:Content1:sec:Section2}
%% =========================== %% ===========================
\dots
s
%% ============== %% ==============
\chapter{BRDF und Spherical Gaussians} \chapter{BRDF und Spherical Gaussians}
\label{ch:Content2} \label{ch:Content2}
%% ============== %% ==============
\todo{Einleitung} In diesem Kapitel werden die Grundlagen des Lichttransports und Sphericla Gaussians eingeführt.
Zur physikalischen Beleuchtungsberechnung muss hierzu die Rendergleichung berechnet werden. Zur physikalischen Beleuchtungsberechnung muss hierzu die Rendergleichung \cite{Kajiya:1986:RE:15886.15902} berechnet werden.
\begin{equation} \begin{equation}
\label{renderingGleichung} \label{renderingGleichung}
L(x,o) = L_e(x,o) + L_r(x,o) = L_e(x,o) + \int_{\Omega^+}f_r(i,x,o)L_i(x,i)max(0,i\cdot n)di L(x,o) = L_e(x,o) + L_r(x,o) = L_e(x,o) + \int_{\Omega^+}f_r(i,x,o)L_i(x,i)max(0,i\cdot n)di
...@@ -60,7 +64,7 @@ $ L_e(x,o)$ ist das von dem Oberflächenpunkt emittierte Licht, und das Integral ...@@ -60,7 +64,7 @@ $ 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, wieviel 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.
...@@ -77,24 +81,52 @@ In dieser Ausarbeitung wird ein Algorithmus vorgestellt der die Gleichung mit ei ...@@ -77,24 +81,52 @@ In dieser Ausarbeitung wird ein Algorithmus vorgestellt der die Gleichung mit ei
\end{figure} \end{figure}
Eine einfache BRDF ist durch das Phong Beleuchtungsmodell gegeben. Eine einfache BRDF ist durch das Phong Beleuchtungsmodell gegeben.
Die Beleuchtung wird in eine diffuse und spekulare Komponente getrennt. Die Beleuchtung wird in eine diffuse und spekulare Komponente getrennt.
Der diffuse Anteil wird berechnet durch $k_d*I_L*(N\cdot L)$ und der spekulrare Anteil durch $k_s*I_L* (R\cdot V)^n$ (siehe Abbildung \ref{img:Phong}). Der diffuse Anteil wird berechnet durch $k_d\cdot I_L\cdot (N\cdot L)$ und der spekulrare Anteil durch $k_s\cdot I_L\cdot (R\cdot V)^n$ (siehe Abbildung \ref{img:Phong}).
Hierbei ist $I_L$ die einfallende Lichtintensität, $k_d$ und $k_s$ materialabhängige Konstanten und $n$ der Phong Exponent, der die Größe der spekularen Glanzlichter beeinflusst. Hierbei ist $I_L$ die einfallende Lichtintensität, $k_d$ und $k_s$ materialabhängige Konstanten und $n$ der Phong Exponent, der die Größe der spekularen Glanzlichter beeinflusst.
\section{Spherical Gaussians} \section{Spherical Gaussians}
\label{ch:Content2:sec:Section1} \label{ch:Content2:sec:Section1}
Eine Möglichkeit BRDF's zu approximieren, bieten Spherical Gaussians (SG). \begin{figure}
\hspace{-4mm}
\begin{minipage}[b]{0.24\linewidth}
\centering
\includegraphics[width=\linewidth]{Bilder/glossy.png}\\
a) Spekulare Reflektion
\end{minipage}\hfill%
\begin{minipage}[b]{0.24\linewidth}
\centering
\includegraphics[width=\linewidth]{Bilder/SG1.jpg}\\
b) Eine SG
\end{minipage}\hfill%
\begin{minipage}[b]{0.24\linewidth}
\centering
\includegraphics[width=\linewidth]{Bilder/SG2.jpg}\\
c) Zwei SG
\end{minipage}\hfill%
\begin{minipage}[b]{0.24\linewidth}
\centering
\includegraphics[width=\linewidth]{Bilder/SG3.jpg}\\
d) Mehrere SG
\end{minipage}
\caption{a) Spekulare Reflexion im Phong Beleuchtungsmodell b-d) Überlagerung von mehreren SG's \cite{Glossy} \cite{Wang09asia}}
\label{fig:SG}
\end{figure}
\todo{cite Images}
Eine Möglichkeit BRDF's zu approximieren, bieten Spherical Gaussians (SG) \ref{fig:SG}.
Spherical Gaussians sind definiert als Spherical Gaussians sind definiert als
$$G(v;p,\lambda,c) = c*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)$ Als kurze Schreibweise ist $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 $o^j$, $\lambda^j$, $c^j$ als Zentrum, sharpness und Koeffizient der $j$ SG.
Die diffuse Komponente kann als SG mit 0 sharpness dargestellt werden. Die diffuse Komponente kann als SG mit 0 sharpness dargestellt werden.
$$ kd = G(i;2(o*n)n-o,0,k_d)$$ $$ kd = 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. 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.
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 und somit kann eine einheitliche Darstellung als Summe von SGs erzielt werden.
...@@ -245,9 +277,9 @@ Damit erhalten wir ein Integral über zwei SGs, das, wie oben beschrieben, einen ...@@ -245,9 +277,9 @@ Damit erhalten wir ein Integral über zwei SGs, das, wie oben beschrieben, einen
\label{ch:Content4:sec:Section2} \label{ch:Content4:sec:Section2}
Bei der Abschätzung der Funktion $V_{\Omega_N}(r)$ kann zu großen Fehlern kommen. Bei der Abschätzung der Funktion $V_{\Omega_N}(r)$ kann zu großen Fehlern kommen.
Ist der Fehler eines Knotens zu groß, so wird er in die beiden Kinderknoten aufgesplittet. Ist der Fehler eines Knotens zu groß, so wird er in die beiden Kinderknoten aufgesplittet.
Um die Obergrenze des Fehlers in Geichung \ref{recieverNode} abzuschätzen, berechnen wir die größten und kleinsten Werte der SG $g_{min}$ und $g_{max}$, Um die Obergrenze des Fehlers in Gleichung \ref{recieverNode} abzuschätzen, berechnen wir die größten und kleinsten Werte der SG $g_{min}$ und $g_{max}$,
der Winkel $\Omega_N$, $||\Omega_N ||_{min}$, $||\Omega_N ||_{max}$ und der Texturwerte $t_{min}$, $t_{max}$. der Winkel $\Omega_N$, $||\Omega_N ||_{min}$, $||\Omega_N ||_{max}$ und der Texturwerte $t_{min}$, $t_{max}$.
Der Fehler lässt sich dann mit $H(r'_h)*(t_{max}*g_{max}*||\Omega_N ||_{max} -t_{min}*g_{min}*||\Omega_N ||_{min})$ berechnen. Der Fehler lässt sich dann mit $H(r'_h)\cdot (t_{max}\cdot g_{max}\cdot ||\Omega_N ||_{max} -t_{min}\cdot g_{min}\cdot ||\Omega_N ||_{min})$ berechnen.
Die Texturwerte werden in dem jeweiligen Knoten gespeichert und die restlichen Werte können aus der Bounding Box und dem Normalenkegel des Knotens errechnet werden. Die Texturwerte werden in dem jeweiligen Knoten gespeichert und die restlichen Werte können aus der Bounding Box und dem Normalenkegel des Knotens errechnet werden.
\begin{figure} \begin{figure}
...@@ -301,15 +333,15 @@ So erhält man eine nicht ganz akkurate Prioritätenliste, aber eine ausreichend ...@@ -301,15 +333,15 @@ 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 Dreeicks mit unterscheidlichen BRDF's. In Abbildung \ref{img:Compare} wird die Indirekte Reflektion eines Dreeicks mit unterschiedlichen BRDF's.
In der Szene steht das Reflektor Dreiekc 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 Ebende hat eine Lambert BRDF und das Dreieck hat pro Reihe eine unterscheidliche Glossiness. Die Ebene hat eine Lambert BRDF und das Dreieck hat pro Reihe eine unterschiedliche Glossiness.
Der vorgestellte Algorythmus hat bereits bei eine 3 geiteilten 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.
Der Vergleich zu VPL zeigt, das diese bei spekularen Materialien starke Artefakte produzieren. Der Vergleich zu VPL zeigt, das diese bei spekularen Materialien starke Artefakte produzieren.
In Abbildung \ref{img:Glossiness} wird zusätzlich die BRDF der Ebene verändert und mit einer Path-Tracer Referenz verglichen. In Abbildung \ref{img:Glossiness} wird zusätzlich die BRDF der Ebene verändert und mit einer Path-Tracer Referenz verglichen.
Beim erstellen des Schnittes wurde die Größe des Fehlers von 1\% experimentell bestimmt. Beim erstellen des Schnittes wurde die Größe des Fehlers von 1\% experimentell bestimmt.
Größere Fehler wie 5\% ergeben eine bessere Performance produziern aber sichtbare Fehler. Größere Fehler wie 5\% ergeben eine bessere Performance produzieren aber sichtbare Fehler.
Auch die Wahl von 200 Virtual Pointlights zur Bestimmung der Sichtbarkeit wurde getestet. Auch die Wahl von 200 Virtual Pointlights zur Bestimmung der Sichtbarkeit wurde getestet.
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.
......
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