PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Triangle Strips


Capt'N Coax
2003-08-27, 18:01:25
Yo hoi di doi,

Ich binnet. Wollte mal anfragen wie Ihr 3D Leute eure Meshes striped, sprich aus Vertexen Triangle Strips erstellt.
Gibts da ne Software, oder habt ihr eure eigenen Algos? Hab gehört soll ziemlich knifflig sein.

Da ich z.Z. aus Max meine Vertices exportiere liegen diese nicht optimiert vor. Also schick' ich den ganzen Kram zur Zeit noch doppelt und dreifach hoch.

Also, wie macht ihr das? Oder optimiert ihr eure Meshes ganz anders?

Kant
2003-08-27, 18:43:09
Original geschrieben von Capt'N Coax
Yo hoi di doi,

Ich binnet. Wollte mal anfragen wie Ihr 3D Leute eure Meshes striped, sprich aus Vertexen Triangle Strips erstellt.
Gibts da ne Software, oder habt ihr eure eigenen Algos? Hab gehört soll ziemlich knifflig sein.

Da ich z.Z. aus Max meine Vertices exportiere liegen diese nicht optimiert vor. Also schick' ich den ganzen Kram zur Zeit noch doppelt und dreifach hoch.

Also, wie macht ihr das? Oder optimiert ihr eure Meshes ganz anders?

Es gibt dazu bereits einsatzfähige Libs (zb NVTriStripper auf der nvidia Website).

Ich selbst bervorzuge aber das Rendern mit indizierter Geometrie. Die GraKa hat ja einen Cache für die zuletzt transformierten Verts (~10-20), so das die Performance fast auf tri-strip niveau liegt. Ein weiterer Vorteil ist der sinkende Overhead. Wenn ich ein Mesh in 35Tri-Strips zerlege, sind das 35Render-Calls. Wenn ich es als indizierte Geometrie schicke, nur einer.

Capt'N Coax
2003-08-27, 21:51:08
Könntest du das mit der indizierten G. näher erklären? Ich habe ehrlich gesagt auch keine große Lust auf Tri. Strips...

Index Buffer/Vertex Buffer?
Vertex Arrays OpenGL? Or wie? Or wat?

Ich hab keine Ahnung, brauch den Kram für Animationen, und weiss halt noch nicht genau, ob die Strips Optimierung da nicht eher hinderlich ist. Will ja nur die mehrfachVerarbeitung verhindern, die ja auftritt, wenn ich alle Verts einfach nur so durchballer.

Mir is das Prinzip noch nicht klar, ich würde jetz über Vert.- Arrays meine verts laden, und danach nur auf die entsprechenden zugreifen die ich benötige.
?

Kant
2003-08-27, 23:12:17
Mit indizierter Geometrie meine ich, das man die Vertex-Daten erst mal in ein großes Array packt. In einem 2. Array speicherst man dann die Eckpunkte als Index auf das erste (Also 4,5,6 für ein Face bestehend aus den Vertices 4,5 und 6 aus dem 1.Array).
Für das definieren der Buffer bietet sich unter OpenGL VBO an, GL_ARRAY_BUFFER_ARB Typ für das Vertex-Array und GL_ELEMENT_ARRAY_BUFFER_ARB für die Face-Indizies.
Die Spec mit Beispielen ist unter :
http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_buffer_object.txt

Damit lassen sich natürlich auch stripes rendern, aber selbst bei Verwendung von normalen GL_TRIANGLES kann die GraKa dank der indizierten Vertices meist eine doppelte Transformation verhindern. Ich habe zumindest bei meinen meshes (importiert aus .3ds) kaum Unterschiede zwischen Stripes und normalen Dreiecken feststellen können. Mal war das eine etwas schneller, mal das andere.

Capt'N Coax
2003-08-28, 10:25:21
Alles Klar, da schau ich mal rein. Das ich 2 Arrays brauche war mir klar, nur das WIE in OGL war so ne Sache.

THX!