Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.04.2011, 19:30

Modellierung mit OpenGL

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.

Geht weniger um OpenGL als vielmehr um das Vorgehen.

(Link)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

28.04.2011, 19:42

Wo genau liegt dein Problem? Auf jeden Vertex der Seite mit weniger Vertices kommen eben mehr als ein Vertex von der andren Seite...

Im Prinzip kannst du deine Indices einfach mit einem Bresenham-Algorithmus bestimmen, so mach ich das zumindest ;)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (28.04.2011, 19:49)


3

28.04.2011, 21:28

Wo genau liegt dein Problem? Auf jeden Vertex der Seite mit weniger Vertices kommen eben mehr als ein Vertex von der andren Seite...
Ähm...was meinst du jetzt mit Seite?

Im Prinzip kannst du deine Indices einfach mit einem Bresenham-Algorithmus bestimmen, so mach ich das zumindest ;)
Was hat Bresenham damit zu tun...das verwirrt mich jetzt vollends! :(

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

28.04.2011, 21:50

Ok, vergiss das mit Bresenham erstmal, das funktioniert natürlich nur unter der Voraussetzung dass deine Vertices schön gleichverteilt sind, was bei mir der Fall war...

Wenn ich dich richtig verstanden hab willst du im Prinzip einfach einen Körper extrudieren. D.h. du hast zwei Flächen und willst die Kanten an den Rändern dieser Flächen mit Dreiecken verbinden. Ganz allgemein wird das gar nicht so einfach zu lösen sein, aber wenn du ein paar Annahmen treffen kannst wirds einfacher. Es wird z.B. mal hilfreich sein wenn die Vertices der Flächen z.B. im Uhrzeigersinn vorliegen und wenn wir von zusammenhängenden Flächen reden können, im Idealfall vielleicht sogar noch konvex. Du musst dann eben einfach deine Kanten durchlaufen und feststellen mit welcher Kante der anderen Fläche du verbinden musst. Z.B. indem du dir einen brauchbaren Punkt suchst (bei konkaven Flächen wird das im allgemeinen schwer werden) und die Winkel zwischen dem Vektor von diesem Punkt zum Vertex und einer Achse vergleichst oder sonstwas, da muss man sich eben was überlegen...

5

29.04.2011, 09:04

Danke für deine Ausführungen :)

Im Grunde kann ich schon ein paar Einschränkungen treffen. Es sieht genau so aus wie hier http://www.deutscherstahlbau.de/asp/hidebiblio.asp?voe=228 auf Seite 9. Ich habe also die 4 Ansichten + den Querschnitt (der jedoch Konkav sein kann! :cursing: ) 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. ?(

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

29.04.2011, 09:21

So wie ich das sehe brauchst Du nur den Querschnitt zu einem Polygon formen und dieses dann entlang der Achse extrudieren. Oder nicht?
Vom Prinzip her muss Dein Programm doch nur genau den gleichen Algorithmus durchlaufen, den ein Mensch beim Konstruieren der dargestellten Körper auch anwenden würde.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

7

29.04.2011, 10:04

Extrudieren klingt erstmal gut aber was mach ich bei folgendem, wo sich die höhe des Profils nach hinten hin ändert:

http://www7.pic-upload.de/29.04.11/juek7rq46zb1.jpg

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

29.04.2011, 10:09

Na dann willkommen im komplexen Themengebiet der Herstellung von 3D-Geometrie aus 2D-Ansichten :D
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

9

29.04.2011, 10:17

Haha Danke ;)

Ich könnte es mit einem CSG-Verfahren lösen...

Kann man CSG auf konkave Körper anwenden?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

29.04.2011, 10:39

Natürlich.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige