Frage

Ich habe eine Reihe von koplanaren, Dreiecke verbunden ist, das heißt, ein 2D-Gitter. Jetzt muss ich es extrudieren aus ein paar Einheiten in der z-Achse. Das Netz von einem Satz von Eckpunkten definiert, die der Renderer durch Abgleich gegen eine Reihe von Dreiecken sind sinnvoll, von.

Beispiel Mesh:

Vertices: (0,0,0), (10,0,0), (10,10,0), (0,10,0) <- (x, y, z) Dreiecke:. (1, 2, 3) und (3, 4, 1) <- hier Zahlen verweisen auf die Position eines Scheitels oberhalb

Hier haben wir also einen 2D-Platz. Jetzt muss ich zu dieser Liste mehr Ecken und Dreiecke hinzufügen, um eine extrudierte Form zu machen. Triangles muss im Uhrzeigersinn sein, sonst sind sie Backface-gekeult.

Gibt es einen einfachen Algorithmus für das? Danke.

War es hilfreich?

Lösung

Angenommen, Sie um einen Abstand z extrudieren wollen, müssen Sie die folgenden Schritte ausführen:

0) n sei die ursprüngliche Anzahl der Ecken (4 in Ihrem Beispiel)

1) Für jeden Scheitelpunkt in der Vertex-Array, addieren (0,0, Z), um es, und das Ergebnis an Ihrem Vertex-Array hinzuzufügen, für insgesamt 2 * n Ecken. Also, für Ihr Beispiel werden Sie die Ecken (0,0, z) hinzufügen, (10,0, z), (10,10, z), (0,10, z) zu Ihrem Vertex-Array, für insgesamt von 2 * 4 = 8 Ecken.

2) Erstellen Sie eine Liste der Grenze (wie für Ihre ursprüngliche Masche intern) Kanten gegenüber. Um dies zu tun, erstellen Sie eine Liste aller Dreieckskanten (3 Kanten für jedes Dreieck im Uhrzeigersinn zu gehen). Dann entfernen Paaren gleicher, aber entgegengesetzte Kanten (das sind die inneren Kanten). Für Ihr Beispiel werden Sie mit 6 Kanten beginnen, und am Ende mit 4 Kanten nach dem Kantenpaar zu entfernen (3,1) und (1,3).

3) für jedes Dreieck (a, b, c) in der Dreieck-Liste erstellen, ein entsprechendes Dreieck (a + n b + n c + n). Diese werden die extrudierten Flächen

4) Schließlich wollen Sie die Seiten der extrudierten Form erstellen. Für jede Kante (a, b) in der Grenzkantenliste in Schritt 2 erstellt wurde, fügen die Dreiecke (A, B, B + n) und (b + n a + n, a)

Das ist es. Unter der Annahme, keine Tippfehler meinerseits, und keine Fehler auf Ihrer Seite, sollten Sie jetzt die gewünschte Masche haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top