Commit 2a617d94 by Kai Westerkamp

..

parent b54cbedc
Pipeline #125 skipped
...@@ -152,13 +152,30 @@ L(x,o) \approx H(r'_h) \int_{\Omega^T} G(r;r_h,\lambda_h,c_h)dr ...@@ -152,13 +152,30 @@ L(x,o) \approx H(r'_h) \int_{\Omega^T} G(r;r_h,\lambda_h,c_h)dr
\subsection{Integration über ein Sphärisches Dreieck} \subsection{Integration über ein Sphärisches Dreieck}
\todo{hier etwas herleitung vlt?}
Um die Gleichung \ref{recieverEQFinal} zu berechnen muss das Integral über die Dreiecke berechnet werden.
Heir ergibt sich nach einigen U
\begin{figure}
\begin{center}
\includegraphics[width=.7\textwidth]{Bilder/Dreieck.png}
\label{img:triangle}
\caption{ Intergation eines Sphärischen Dreiecks $\omega_T$ \cite{Wang09asia}}
\end{center}
\end{figure}
\todo{hier etwas herleitung vlt?}
Um die Gleichung \ref{recieverEQFinal}auszuwerten muss $\int_{\Omega^T} G(v;p,\lambda)dv$ berechnet werden.
Mit der Mittelachse P der SG ergibt sich aus dem Bild \ref{img:triangle} ergibt sich das sich $$\Omega_t = \Omega_{\triangle ABC} = \Omega_{\triangle PBC}-\Omega_{\triangle PAB}-\Omega_{\triangle PCA}$$.
Durch Integration über die Winkel und einigen Umformungen ergibt sich ein Integral über eine 1D Funktion \ref{1DFunction}, die durch eine stückweise definierte lineare Funktion angenähert werden kann.
\begin{equation}
\label{1DFunction}
f_{m,\lambda}(\phi)=exp \left[ \lambda(\frac{sin\phi}{\sqrt{m^2+sin^2\phi}}-1)\right]
\end{equation}
\begin{figure}
\begin{center}
\includegraphics[width=.7\textwidth]{Bilder/function.png}
\label{img:function}
\caption{Plot der Funktion $f_{m,\lambda}$, diese kann durch lineare Funktionen durch die roten Punkte angenähert werden. \cite{Wang09asia}}
\end{center}
\end{figure}
...@@ -166,8 +183,66 @@ Heir ergibt sich nach einigen U ...@@ -166,8 +183,66 @@ Heir ergibt sich nach einigen U
\chapter{Baumstruktur} \chapter{Baumstruktur}
\label{ch:Content4} \label{ch:Content4}
%% ============== %% ==============
einführen der Baumnstruktur zum effizienteren rendern (nicht über alle 3Ecke integrieren)\\ Um die indirekte Beleuchtung eines Oberflächenpunktes Auszuwerten muss die Formel aus dem vorherigen Kapitel für alle Dreiecke berechnet werden.
Bei Szenen mit wenigen Dreiecken ist das möglich, jedoch steigen die kosten linear mit der Anzahl der Dreiecke.
In diesem Kapitel wird eine Binäre Baumstruktur eingeführt, die die Effizienz bei vielen Dreiecken steigert.
Die Blätter des Baumes sind die Dreiekce der Szene und die einzelnen Knoten Referenzen und Mittelwerte der Kindern.
Der Baum wird von der Wurzel aufgebaut, und in jedem Schritt in 2 Kinder gesplittet.
Für eine Split wird eine Hauptkomponentenanalyse durchgeführt.
Im 6D Raum aus Dreiecksmittelpunkt und gewichteten Normale wird die Hauptachse berechnet und am Median gesplittet.
Dieses vorgehen garantiert das aufteilen eines Knotens entlang der größten Varianz in 2 gleichgroße Kinder.
In den Knoten wird der durchschnittliche Mittelpunkt, die Durchschnitts Normale, die Bounding Box und der Normalen Kegel, und die absolute Dreiecksfläche gespeichert.
Bei Texturtieren Dreiecken wird zusätzlich der Durchschnitts Farbwert und die maximal und minimal Farbe gespeichert.
Aus diesen Daten lässt sich das reflektierte Licht zu einem Empfänger approximieren \ref{ch:Content4:sec:Section1}, und eine Abschätzung des Fehlers errechnen\ref{ch:Content4:sec:Section1}.
Beim rendern wird zunächst Schnitt durch den Baum bestimmt.
Angefangen wird mit der Wurzelknoten und es wird immer der Knoten mit dem größten Fehler durch seine beiden Kinder ersetzt.
Dieser Vorgang wird solange wiederholt bis 1000 Knoten im Schnitt enthalten sind oder der Fehler kleiner ist als 1\% des Reflektierten Lichts.
Wenn Blätter im Schnitt enthalten sind kann das reflektierte Licht wie in Kapitel \ref{ch:Content3} berechnet werden.
Jedoch funktioniert der Algorithmus nur bei Dreiecken mit einheitlicher BRDF.
Bei Texturtieren Dreiecken wird deshalb der Mittelwert der Farbe bestimmt und nehmen ihn als uniforme BRDF.
Sollte der Fehler durch diese Annäherung zu groß werden wird das Dreieck in kleinere unterteilt und dann ausgewertet.
Für die Knoten im Baum wird im folgenden Abschnitt beschreiben wie die Reflektion abgeschätzt werden kann.
\section{Abschätzung der Reflektion eines Knoten}
\label{ch:Content4:sec:Section1}
Um das Reflektierte Licht auszurechnen ändern wir Gleichung \ref{recieverEQFinal} geringfügig ab.
Für einen Knoten N sei $I_N$ der Mittelpunktn, $n_N$ die durchschnittliche Normaleund $t_N$ die Durchschnittsfarbe.
Wir ändern den Integrationsbereich von einem einzelnen Dreieck $\Omega_T$ zu der sphärischen Projektion aller Dreiecke des Knotens $\Omega_N$.
\begin{equation}
\label{recieverNodel}
L(x,o) \approx t_N \cdot H(r'_h) \int_{\Omega^N} G(r;r_h,\lambda_h,c_h)dr
\end{equation}
Da sich $\Omega_N$ nicht bekannt ist, integrieren wir über die komplette Hemisphäre und ersetzen $\Omega_N$ durch eine Binäre Maske $V_{\Omega_N}(r)$.
$$\int_{\Omega^N} G(r;r_h,\lambda_h,c_h)dr = \int_{\Omega} G(r;r_h,\lambda_h,c_h)V_{\Omega_N}(r)dr$$
Diese Binärmaske lässt sich wiederum durch eine SG approximierbar $V_{\Omega_N}(r) \approx G(r;r_N,\lambda_N,c_N) = G_N(r)$.
Hierbei ist $r_N$die Richtung von $I_N$ zu X und die Sharpness errechnet aus der Varianz und Dreiecksfläche des Knotens.
Damit erhalten wir ein Integral über 2 SG, dass wie oben beschrieben einen analytische Lösung hat.
\section{Abschätzung des Fehlers}
\label{ch:Content4:sec:Section2}
Bei der Abschätzung der Funktion $V_{\Omega_N}(r)$ kann zu großen Fehlern führen.
\begin{figure}
\begin{center}
\includegraphics[width=.7\textwidth]{Bilder/tree.png}
\label{img:tree}
\caption{a) Der Binärbaum der Dreiecke mit Bounding Box und normal cone. b) ein Beispiel Reflectorcut, c) Direction cone, d) die Berechnung eines Central Cones\cite{Wang09asia}}
\end{center}
\end{figure}
%% ============== %% ==============
\chapter{Sichtbarkeitsproblem} \chapter{Sichtbarkeitsproblem}
......
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