Commit 3b2d9dbb by Werner Westerkamp

Kapitel 5 Anfang

parent 59c3d4c6
Pipeline #141 passed with stage
......@@ -195,23 +195,23 @@ Dieses Vorgehen garantiert das Aufteilen eines Knotens entlang der größten Var
In den Knoten wird der durchschnittliche Mittelpunkt, die Durchschnittsnormale, die Bounding Box, der Normalenkegel, und die absolute Dreiecksfläche gespeichert.
Bei texturtieren Dreiecken wird zusätzlich der Durchschnittsfarbwert und die Maximal- und Minimalfarbe 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}.
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 der Schnitt durch den Baum bestimmt.
Angefangen wird mit dem 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.
Dieser Vorgang wird solange wiederholt bis 1.000 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.
Bei texturtieren Dreiecken wird deshalb der Mittelwert der Farbe bestimmt und wir 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 Reflexion abgeschätzt werden kann.
\section{Abschätzung der Reflektion eines Knoten}
\section{Abschätzung der Reflexion eines Knotens}
\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.
Um das reflektierte Licht auszurechnen, ändern wir Gleichung \ref{recieverEQFinal} geringfügig ab.
Für einen Knoten N sei $I_N$ der Mittelpunkt, $n_N$ die durchschnittliche Normale und $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}
......@@ -219,23 +219,23 @@ Wir ändern den Integrationsbereich von einem einzelnen Dreieck $\Omega_T$ zu de
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)$.
Da $\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)$.
\begin{equation}
\label{recieverNode}
\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
\end{equation}
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)$.
Diese Binärmaske ist 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.
Damit erhalten wir ein Integral über zwei SGs, das, 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.
Ist der Fehler eines Knoten zu groß so wird er in die beiden Kinderknoten aufgesplittet.
Um die Obergrenze des Fehlers in Gelchung \ref{recieverNode} abzuschätzen, berechnen wir die größten und kleinsten Werte der SG $g_{min}$ \& $g_{max}$, der Winkel $\Omega_N$ $||\Omega_N ||_{min}$ $||\Omega_N ||_{max}$ und der Texturwerte $t_{min}$ $t_{max}$.
Bei der Abschätzung der Funktion $V_{\Omega_N}(r)$ kann zu großen Fehlern kommen.
Ist der Fehler eines Knoten 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}$ \& $g_{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.
Die Texturewerte werden in dem jeweiligen Knoten gespeichert und die restlichen Werte können aus der Bounding Box und der Normaleinverteilung des Knotens errechnet werden.
......
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