Triangle Intersection: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Florian (Diskussion | Beiträge)
Florian (Diskussion | Beiträge)
Zeile 241: Zeile 241:
Die <tt>MeshTriangleData</tt> Klasse basiert jeweils nur auf einem <tt>ModelMeshPart</tt>. Um Triangle Intersection für ein komplettes Modell zu ermöglichen muss man also für jedes <tt>ModelMeshPart</tt> des Modells eine eigene Instanz der <tt>MeshTriangleData</tt> Klasse erstellen. Wenn man sicher weiss dass das Modell nur aus einem <tt>ModelMesh</tt> und dieser wiederrum nur aus einem <tt>ModelMeshPart</tt> besteht kann man auf diese auch einfach über den Index 0 der <tt>ModelMeshCollection</tt> und der <tt>ModelMeshPartCollection</tt> der <tt>Model</tt> Klasse zugreifen (e.g. <tt>model.Meshes[0].MeshParts[0]</tt>). Hat man komplexere Modelle oder ist sich über deren Aufbau nicht sicher erstellt man am besten eine Zwischenklasse welche automatisch über alle <tt>ModelMeshes</tt> und <tt>ModelMeshParts</tt> des Modells iteriert und die entsprechende <tt>MeshTriangleData</tt> für jedes <tt>ModelMeshPart</tt> erzeugt, verwaltet und eine Schnittstelle für den Zugriff auf deren <tt>Intersect()</tt>-Methoden bereitstellt.
Die <tt>MeshTriangleData</tt> Klasse basiert jeweils nur auf einem <tt>ModelMeshPart</tt>. Um Triangle Intersection für ein komplettes Modell zu ermöglichen muss man also für jedes <tt>ModelMeshPart</tt> des Modells eine eigene Instanz der <tt>MeshTriangleData</tt> Klasse erstellen. Wenn man sicher weiss dass das Modell nur aus einem <tt>ModelMesh</tt> und dieser wiederrum nur aus einem <tt>ModelMeshPart</tt> besteht kann man auf diese auch einfach über den Index 0 der <tt>ModelMeshCollection</tt> und der <tt>ModelMeshPartCollection</tt> der <tt>Model</tt> Klasse zugreifen (e.g. <tt>model.Meshes[0].MeshParts[0]</tt>). Hat man komplexere Modelle oder ist sich über deren Aufbau nicht sicher erstellt man am besten eine Zwischenklasse welche automatisch über alle <tt>ModelMeshes</tt> und <tt>ModelMeshParts</tt> des Modells iteriert und die entsprechende <tt>MeshTriangleData</tt> für jedes <tt>ModelMeshPart</tt> erzeugt, verwaltet und eine Schnittstelle für den Zugriff auf deren <tt>Intersect()</tt>-Methoden bereitstellt.


=== Bekommen der AbsoluteBoneTransforms ===
=== Abfragen der absoluten Bone Transformationen ===


Der Konstruktor der <tt>MeshTriangleData</tt> Klasse benötigt ein Matrix-Array mit den absoluten Bone Transformationen des Modells, dieses kann man wie folgt aus der <tt>Model</tt> Klasse abfragen:
Der Konstruktor der <tt>MeshTriangleData</tt> Klasse benötigt ein Matrix-Array mit den absoluten Bone Transformationen des Modells, dieses kann man wie folgt aus der <tt>Model</tt> Klasse abfragen:
Zeile 252: Zeile 252:
model.CopyAbsoluteBoneTransformsTo(absoluteBoneTransforms);
model.CopyAbsoluteBoneTransformsTo(absoluteBoneTransforms);
</source>
</source>
=== Mesh Data befindet sich im ObjectSpace ===
==== Instantiierung pro Asset genügt ====
==== Transformation des Rays in den Object Space ====


[[Kategorie:Code-Beispiele]]
[[Kategorie:Code-Beispiele]]