Triangle Intersection: Unterschied zwischen den Versionen
Aus Das Sopra Wiki
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
{{Stub}} | {{Stub}} | ||
Gerade für [[Picking]] kann es sehr interessant sein beim Raytracing direkt die Triangles eines Modells für den Schnittpunkttest zu verwenden um | __TOC__ | ||
Gerade für [[Picking]] kann es sehr interessant sein beim Raytracing direkt die Triangles eines Modells für den Schnittpunkttest zu verwenden um das Picking sehr genau zu machen. Wenn man lediglich eine <tt>BoundingBox</tt> verwendet pickt man komplexere Modelle auch wenn man sie eigentlich garnicht anklickt. | |||
== Schnittberechnung Strahl - Triangle == | == Schnittberechnung Strahl - Triangle == | ||
Die Berechnung der Schnittpunkte eines Strahls mit verschiedenen Bounding Volumes ist in XNA in den entsprechenden [[Struct]]s bereits implementiert. Die Schnittberechnung eines Strahls mit den Triangles eines Model Meshes muss man manuell implementieren. Die folgende Helfer-Klasse bietet dafür eine Methode. Diese Methode wird auch in den weiteren Code Samples zum Berechnen der Schnittpunkte verwendet. | Die Berechnung der Schnittpunkte eines Strahls mit verschiedenen Bounding Volumes ist in XNA in den entsprechenden [[Struct]]s bereits implementiert. Die Schnittberechnung eines Strahls mit den Triangles eines Model Meshes muss man dagegen manuell implementieren. Die folgende Helfer-Klasse bietet dafür eine Methode. Diese Methode wird auch in den weiteren Code Samples zum Berechnen der Schnittpunkte verwendet. | ||
<source lang="csharp"> | <source lang="csharp"> | ||
| Zeile 109: | Zeile 111: | ||
== Auslesen des Meshs eines Models == | == Auslesen des Meshs eines Models == | ||
Die einzige Möglichkeit bei XNA an die Triangles eines Modells zu gelangen ist die | Die einzige Möglichkeit bei XNA an die Triangles eines Modells zu gelangen ist die <tt>VertexBuffer</tt> und <tt>IndexBuffer</tt> der einzelnen Modelmeshes auszulesen. Die folgende Klasse liest diese beiden für ein Model-Mesh aus und speichert sie in Member-Variablen zwischen. Zusätzlich bietet sie Methoden um eine <tt>BoundingBox</tt> oder <tt>BoundingSphere</tt> für die Triangles zu erstellen. Ebenfalls implementiert ist eine <tt>Intersect()</tt>-Methode um den Schnittpunkt eines Strahls mit den Triangles berechnen zu können. Diese funktioniert genauso wie die <tt>Intersect()</tt>-Methoden der Bounding Volume und <tt>Ray</tt> Structs. | ||
<source lang="csharp"> | <source lang="csharp"> | ||
| Zeile 230: | Zeile 232: | ||
} | } | ||
</source> | </source> | ||
== Verwendung der <tt>MeshTriangleData</tt> Klasse == | |||
blubb | |||
[[Kategorie:Code-Beispiele]] | [[Kategorie:Code-Beispiele]] | ||
