PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie baut man ein 3D Objekt zur Laufzeit?


WhiteVelvet
2006-08-01, 10:26:26
Das ist noch die einfache Frage, aber das Problem hier ist komplizierter, vielleicht hat ja doch jemand eine Idee.

Was sind die Eingangsdaten meiner Software? Es sind 3D Bilder von einer speziellen Kamera. Es gibt 64x16 Pixel, jeder Pixel hat einen z-Wert. Ich möchte daraus ein Mesh bilden (innerhalb meiner C++ Software), aber ich filtere mehrere Objekte aus dem Bild heraus, so dass ich am Ende mehrere Objekte habe. Jedes Objekt soll die Vertices und Faces speichern.

Und da liegt nun das Problem. In welcher Reihenfolge müssen die Vertices darein, damit es später ohne Probleme gezeichnet werden kann? Oben links im Bild kann ich nicht anfangen zu suchen, wenn grosse Lücken im Objekt sind, versucht er später diese Lücken zu schliessen, weil das Dreieck nicht komplett ist und er sich den nächsten freien Vertex aussucht.

Ich hoffe, das Problem ist irgendwie klar geworden. Zur Zeit sehe ich keine Idee, wie ich alle Objekte sauber in der richtigen Reihenfolge zeichnen kann. Ich meine, statische Normale Objekte fangen ja auch irgendwo mit einem Face-Index 0 an und hangeln sich durch ein kompliziertes Objekt zum letzten Face.

Beispiel: Wie macht man das bei einer 3D Person? Fängt man unten bei den Beinen an, arbeitet sich hoch und wo und wie entscheidet man dann, welcher Arm zuerst abgehandelt wird? Da muss es doch Algorithmen für geben oder? Andere Software, die Objekte in Vertex- und Facelisten unterteilt, kann das ja auch.

Vielen Dank für Eure Ideen!

tokugawa
2006-08-02, 04:04:41
So wie ich das verstanden habe, ist das sowas ähnliches wie ein Heightfield zu tracen.

Du kannst irgendwo anfangen, das macht für's Aufbauen an sich keinen Unterschied. Wahrscheinlich ist ein regular Grid am einfachsten.


Nachher, wenn es das Mesh gibt, gibt's verschiedene Möglichkeiten, das zu optimieren (sortieren für den Vertex Cache, Stripifizieren, stitchen, usw.).