Konstuktion eines 3D-Modells aus 2D-Modellen

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Antworten
gartenkralle
Beiträge: 2
Registriert: 28.04.2011, 16:17

Konstuktion eines 3D-Modells aus 2D-Modellen

Beitrag von gartenkralle »

Ich schreibe gerade ein Programm das aus einer Seiten-, Vorder- und Draufsicht (2D) ein 3D-Modell erstellen soll (z.B. ein T-Träger).

Bisher bin ich so vorgegangen:
- die fehlende Koordinate aus der Vorderansicht (nur x,y) habe ich mir aus der Draufsich bzw. Seitenansicht geholt.
- dann habe ich das vorderste und dass hinterste Polygon gezeichnet
- und da das vordere und das hintere Polygon jeweils gleichviele Vertices haben, konnte ich die Verbindungspolygone auch ganz einfach konstruieren.
(vorn unten -> hinten unten -> hinten oben -> vorn oben)

Wie kann ich aber Vorgehen, wenn das vordere und das hintere Polygon unterschiedlich viele Vertices haben? Oder wenn zwischen dem vorderen und hinteren Polygon zusätzliche Vertices sind, die zum Objekt gehören?

Hat jemand ne Idee.

Gibt es ein bewährtes Vorgehen für so etwas?
joeydee
Establishment
Beiträge: 1056
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Konstuktion eines 3D-Modells aus 2D-Modellen

Beitrag von joeydee »

Das ist nicht trivial. Das Verbinden zweier Polygone selbst mit gleicher Vertexzahl kann schon zu Problemen führen, wenn die Vertices nicht gleich verteilt sind (bei A sind die meisten Vertices oben, bei B die meisten unten - und dann?), eine Lösung kann man aber durch das Vergleichen der projizierten Lage von Streckenstücken und das geschickte Bilden von Dreiecken oder Einfügen von Punkten finden. Einen bewährten Algorithmus mit Namen kann ich jetzt leider nicht nennen.
Ein ähnliches 2D-Problem wäre das Morphing zweier 2D-Vektorformen wie es manche Zeichenprogramme unterstützen (z.B. Illustrator: "Angleichen").

Beim Erstellen beliebiger 3D-Formen auf die beschriebene Weise entwickeln sich die Probleme bzw. "Nicht-Eindeutigkeiten" leider exponentiell.
Die brachiale Lösung wäre eine "Shadowbox": Nimm einen Quader und stanze per CSG aus jeder Richtung das entsprechend extrudierte Polygon aus (Schnittmenge).
Oder alternativ (damit kannst du auch SW-Bitmaps als Vorlage benutzen): Nimm ein Voxelvolumen, stanze aus jeder Richtung die entsprechende Form aus und lasse einen Oberflächenalgorithmus wie Marching Cubes drüberlaufen. Das wird aber sicher kein "sauberes" Lowpoly-Modell mehr, auch nicht mit Optimierungsalgorithmen über das Finale Mesh.
Beide Vorgehen erlauben zwar nur ein Polygon je Achse, nämlich den projizierten Schatten des Objekts aus dieser Richtung, das könntest du aber mit einem Algorithmus wie ganz oben beschrieben aufbrechen.
gartenkralle
Beiträge: 2
Registriert: 28.04.2011, 16:17

Re: Konstuktion eines 3D-Modells aus 2D-Modellen

Beitrag von gartenkralle »

Danke für deine Ausführungen

Im Grunde kann ich ein paar Einschränkungen treffen. Es sieht genau so aus wie hier http://www.deutscherstahlbau.de/asp/hid ... sp?voe=228 auf Seite 9. Ich habe also die 4 Ansichten + den Querschnitt (der jedoch Konkav sein kann! ) Leider ist ja so das ich, wenn ich den y-Wert in der Vordernsicht im Querschnitt nachlage, mehrere z-Werte bekomme. Da muss ich doch was cleveres machen können.

Das mit dem CSG klingt erstmal vielversprechend. Ist das CSG-Verfahren auf konkave Körper anwendbar? Oder gibt es aufgrund der o. g. Einschränkungen doch eine einfachere Möglichkeit?
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4262
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Konstuktion eines 3D-Modells aus 2D-Modellen

Beitrag von Chromanoid »

Der Ordnung halber bitte möglichst immer Crossposts verlinken.
http://www.spieleprogrammierer.de/index ... adID=15654
Antworten