Ray Tracing: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Florian (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Florian (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 26: Zeile 26:


Wie bereits erwähnt wurde ist es auch möglich in XNA ein Ray Tracing auf Genauigkeit der Triangles der Modelle zu implementieren. Da der Schnittpunkt Test eines Strahls mit einem Dreieck relativ langsam ist und ein Modell für gewöhnlich aus relativ vielen Triangles besteht ist hierbei die Verwendung eines Object Partitionings in Form einer Bounding Volume Hierarchie, bei der sich die Triangles der Modelle erst auf der untersten Hierarchiestufe befinden, zwingend erforderlich. Der Artikel [[Automatisierte BVH Erzeugung]] zeigt wie man entsprechende Bounding Volume Hierarchien automatisiert für seine Modelle erzeugen kann.
Wie bereits erwähnt wurde ist es auch möglich in XNA ein Ray Tracing auf Genauigkeit der Triangles der Modelle zu implementieren. Da der Schnittpunkt Test eines Strahls mit einem Dreieck relativ langsam ist und ein Modell für gewöhnlich aus relativ vielen Triangles besteht ist hierbei die Verwendung eines Object Partitionings in Form einer Bounding Volume Hierarchie, bei der sich die Triangles der Modelle erst auf der untersten Hierarchiestufe befinden, zwingend erforderlich. Der Artikel [[Automatisierte BVH Erzeugung]] zeigt wie man entsprechende Bounding Volume Hierarchien automatisiert für seine Modelle erzeugen kann.
=== Wichtige Hinweise zum Umgang mit Beschleunigungsstrukturen ===
Weiterhin nützlich ist, dass sich die beschriebenen Optimierungen mittels Spatial und Object Partitioning auch miteinander kombinieren lassen. Man kann seine Objekte also problemlos z.B. mittels eines [[OcTree]]s räumlich unterteilen um nur relevante Objekte beim Ray Tracing überprüfen zu müssen und gleichzeitig können die Objekte selbst über Bounding Volume Hierarchien verfügen um den getroffenen Teil eines Modells sehr genau mit möglichst wenigen Schnittpunkttests bestimmen zu können.
Trotzdem sollte man sich genau überlegen welche Arten von Optimierungen und welcher Detailgrad für die Partitionierungen im eigenen Spiel überhaupt sinnvoll sind. Die Datenstrukturen für die Partitionierungen benötigen schließlich zusätzlichen Speicherplatz und bedeuten auch einen gewissen Overhead an Schnitttests die allein zum Traversieren der Beschleunigungsstrukturen benötigt werden. Die Kunst besteht hierbei also den optimalen Kompromiss zu finden um das Raytracing bei möglichst geringem Speicheraufwand möglichst schnell und vor allem schnell genug für eine Echtzeitanwendung zu machen.


[[Kategorie:Begriffe]]
[[Kategorie:Begriffe]]