@@ -53,7 +53,7 @@ Für die Implementeirung wurde immer die quadratische Textur bestimmt, die genug
...
@@ -53,7 +53,7 @@ Für die Implementeirung wurde immer die quadratische Textur bestimmt, die genug
\section{Rendering}
\section{Rendering}
In der Unreal Engine ist das Rendern von Punktwolken nicht vorgesehen.
In der Unreal Engine ist das Rendern von Punktwolken nicht vorgesehen.
Als Basis für den Renderingprozess wurde deshalb eine Quadchain verwendet (Siehe Abbilduung \ref{img:quadchain})
Als Basis für den Renderingprozess wurde deshalb eine Quadchain verwendet (Siehe \fref{img:quadchain})
Diese Quadchain besteht aus $2^{20}$ einzelnen Quadraten entlang der Z Achse.
Diese Quadchain besteht aus $2^{20}$ einzelnen Quadraten entlang der Z Achse.
Jedes Quad ist dabei an einer ganzzahligen Z Position und die Ecken sind bei 1 und -1.
Jedes Quad ist dabei an einer ganzzahligen Z Position und die Ecken sind bei 1 und -1.
Durch diese Anordnung hat jedes Quadrat einen Index, die Z Position.
Durch diese Anordnung hat jedes Quadrat einen Index, die Z Position.
...
@@ -75,7 +75,7 @@ Aus der Größe der quadratischen Textur und dem Index können die Texturkoordin
...
@@ -75,7 +75,7 @@ Aus der Größe der quadratischen Textur und dem Index können die Texturkoordin
Mit den Texturkoordinaten kann die Position und die Farbe des Punktes ausgelesen werden.
Mit den Texturkoordinaten kann die Position und die Farbe des Punktes ausgelesen werden.
Bevor die Position verwendet werden kann, muss diese aus dem Einheitswürfel in die wirklichen Koordinaten zurück transformiert werden.
Bevor die Position verwendet werden kann, muss diese aus dem Einheitswürfel in die wirklichen Koordinaten zurück transformiert werden.
Die in der Vorberitung errechnete Größe udn das Minimum können verwendet werden um die Gleichung \ref{eq:Bounding} umzukehren.n
Die in der Vorberitung errechnete Größe udn das Minimum können verwendet werden um die \fref{eq:Bounding} umzukehren.n
Anschließend fehlt nur noch die Translation und Rotation der Punktwolke in der Welt.
Anschließend fehlt nur noch die Translation und Rotation der Punktwolke in der Welt.
Auch hier lässt die Unreal Engine nicht zu, das direkt eine Matrix als Parameter für das Material übergeben werden kann, aber durch eine Postion und eine Rotation lässt sich die Transformation im Material ausrechnen.
Auch hier lässt die Unreal Engine nicht zu, das direkt eine Matrix als Parameter für das Material übergeben werden kann, aber durch eine Postion und eine Rotation lässt sich die Transformation im Material ausrechnen.
Die berechnete Endpostion wird als WorldPositionOffset an die Grafikkarte weitergegeben, die damit den Punkt an die richtige Weltposition setzt.
Die berechnete Endpostion wird als WorldPositionOffset an die Grafikkarte weitergegeben, die damit den Punkt an die richtige Weltposition setzt.
...
@@ -92,7 +92,7 @@ Die resultierenden Punktwolken funktionieren für den Anwendungsfall und die in
...
@@ -92,7 +92,7 @@ Die resultierenden Punktwolken funktionieren für den Anwendungsfall und die in
Außer dem Deaktivieren von Schattenberechnungen wurden keine Performance Optimierungen vorgenommen.
Außer dem Deaktivieren von Schattenberechnungen wurden keine Performance Optimierungen vorgenommen.
Die Beispielwerte wurden mit einem i7 6700 und eine GTX 1070 aufgenommen. Eine genaue Analyse ist nicht erfolgt.
Die Beispielwerte wurden mit einem i7 6700 und eine GTX 1070 aufgenommen. Eine genaue Analyse ist nicht erfolgt.
\todo{punktwolkengröße}
\todo{punktwolkengröße}
Eine Punktwolke mit 1596685 einzelnen Punkten erreicht ca 60fps (siehe Bild \ref{img:Pnts1}. Hierbei ist zu bedenken, das die ganze Quadchain von $2^20$ Punkten gerendert wird und überflüssige Geometrie erst im Shader/Material verworfen wird.
Eine Punktwolke mit 1596685 einzelnen Punkten erreicht ca 60fps (siehe Bild \fref{img:Pnts1}. Hierbei ist zu bedenken, das die ganze Quadchain von $2^20$ Punkten gerendert wird und überflüssige Geometrie erst im Shader/Material verworfen wird.
Bei 4 einzelnen Punktwolken mit 443175 Punkten ( 110369, 115991, 110377, 106438; 4 Instanzen der Quadchain) erreicht dieses vorgehen ca 44 fps.
Bei 4 einzelnen Punktwolken mit 443175 Punkten ( 110369, 115991, 110377, 106438; 4 Instanzen der Quadchain) erreicht dieses vorgehen ca 44 fps.
Für eine große Punktwolke mit 1797690 Punkten gesplittet in 2 Instanzen sind es ebenfalls 44 fps.
Für eine große Punktwolke mit 1797690 Punkten gesplittet in 2 Instanzen sind es ebenfalls 44 fps.