AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein .NET-Framework (managed code) C# 3D-Objekt / Mantelfläche darstellen

3D-Objekt / Mantelfläche darstellen

Ein Thema von 4dk2 · begonnen am 1. Mär 2019 · letzter Beitrag vom 1. Mär 2019
Antwort Antwort
Seite 1 von 2  1 2   
4dk2

Registriert seit: 4. Sep 2007
175 Beiträge
 
#1

3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 09:11
Hallo zusammen,

ich versuche mich grad irgendwie durchs Thema 3D und Darstellung von Objekten durchzubeißen .
Aktuell versuch ich im OpenTK (also per OpenGL) nen 3D Objekt, von dem ich die Mantelfläche in
xyz Koordinaten habe, darzustellen.
Aber so ganz weis ich noch nicht was da nun die richtige Herangehensweise ist.

Ganz einfache Beispiel, nen 4-Eck.
besteht im Prinzip ja aus 8 Koordinaten.
Aber um es komplett darzustellen, also die Aussenflächen, muss man (4*4) 16 Koordinaten übergeben (wenn man als Quad zeichnet).

Bei nem Quadrat ist das ja noch recht simpel, aber wenn man nun nen kompliziertes Objekt hat, weiss ich nicht recht
wo ich da ansetzten soll.

ich vermute mal das man die "Roh-Daten" erstmal für 3D aufbereiten muss.
Wenn da jemand ne Idee hat(framework kennt, das das vereinfacht), bin für alles offen
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.303 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: 3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 09:40
Disclaimer: Ich kenne OpenTK nicht.

Du hast nur Eckpunkte (Vertices)? Dann fehlt dir ein Algorithmus zur Triangulation. Wenn ich meine Vorlesungen noch richtig im Kopf habe dann ist die Delaunay-Triangulierung ein Klassiker.

Hast du ganz sicher nur eine Punktwolke? Damit ist die Form ja noch keineswegs bestimmt. Die konvexe Hülle könntest du im 3D-Raum noch selbst bestimmen und darüber triangulieren, aber das ist nichts was man mal an zwei Tagen macht (zumindest ich nicht).
  Mit Zitat antworten Zitat
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#3

AW: 3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 09:53
Mein Favorit:
http://glscene.sourceforge.net/wikka/

Gruss, Jörn
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
175 Beiträge
 
#4

AW: 3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 11:15
hab ich bei Delphi auch immer benutzt, aber da in C#, fällt es flach.


Disclaimer: Ich kenne OpenTK nicht.

Du hast nur Eckpunkte (Vertices)? Dann fehlt dir ein Algorithmus zur Triangulation. Wenn ich meine Vorlesungen noch richtig im Kopf habe dann ist die Delaunay-Triangulierung ein Klassiker.

Hast du ganz sicher nur eine Punktwolke? Damit ist die Form ja noch keineswegs bestimmt. Die konvexe Hülle könntest du im 3D-Raum noch selbst bestimmen und darüber triangulieren, aber das ist nichts was man mal an zwei Tagen macht (zumindest ich nicht).

Delaunay-Triangulierung, hab ich vorhin auch aus zufall gefunden, und auch nen beispiel für den Algorithmus. Werd ich mir mal nächste Woche anschauen.
Ja im Prinzip hab ich nur ne "Punktwolke", ist ein Ergebnis aus ner Berechnung. Aber ich will die Berechnung nicht für die Darstellung anpassen, was ja theoretisch möglich ist.

Das mit der hülle hab ich mich aber auch gefragt, ob das dann mit Delaunay funktioniert, oder ob der dann wenn wir beim Quadrat bleiben,
auch innen die dreiecke berechnet...

Irgendwie find ich, findet man nicht allzuviel zu dem Thema. Dachte in zeiten von 3D Druckern und den dazugehörigen 3D Scannern, ist das schon Standart
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
598 Beiträge
 
#5

AW: 3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 13:11
Wenn Du aus einer Punktwolke 3D Objekte machen willst, ist das schon die etwas höhere Kunst. Das geht auch mit Delaunay (auch im 3D). Ist aber sehr aufwendig.
Was ist das für eine Punktwolke. Wo kommt die her und was soll daraus werden?

... habe gerade geguckt?
Zitat:
Ganz einfache Beispiel, nen 4-Eck.
besteht im Prinzip ja aus 8 Koordinaten.
Ein 4-Eck hat 8 Koordinaten?? Naja, eine Viereck hat 4 Koordinaten, oder?
Achtung: Bin kein Informatiker sondern komme vom Bau.

Geändert von Jens01 ( 1. Mär 2019 um 13:15 Uhr)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
598 Beiträge
 
#6

AW: 3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 13:21
Zitat:
Ganz einfache Beispiel, nen 4-Eck.
besteht im Prinzip ja aus 8 Koordinaten.
Aber um es komplett darzustellen, also die Aussenflächen, muss man (4*4) 16 Koordinaten übergeben (wenn man als Quad zeichnet).
Ich vermute, Du meinst einen Quader oder Würfel. Die haben 6 Seitenflächen. Jede Seite besteht aus 2 Dreiecken. Jedes Dreieck aus 3 Koordinaten.
=> 6 Seiten x 2 Dreiecke x 3 Koordinaten = 36 Koordinaten
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
175 Beiträge
 
#7

AW: 3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 13:41
Wenn Du aus einer Punktwolke 3D Objekte machen willst, ist das schon die etwas höhere Kunst. Das geht auch mit Delaunay (auch im 3D). Ist aber sehr aufwendig.
Was ist das für eine Punktwolke. Wo kommt die her und was soll daraus werden?

... habe gerade geguckt?
Zitat:
Ganz einfache Beispiel, nen 4-Eck.
besteht im Prinzip ja aus 8 Koordinaten.
Ein 4-Eck hat 8 Koordinaten?? Naja, eine Viereck hat 4 Koordinaten, oder?
jaaa ein würfel , und ja wenn man den trigonometrisch definiert sind es 36, weiss nicht was da oben bei mir los war

Das ist im Prinzip ne Berechnung von nem Gegenstand.
Die Berechnung liefert die komplette Aussenhülle des Körpers.

Ich könnte funktional dran gehen und die Darstellung holt sich per x,z dann y oder so.
Sowas hab ich schonmal per "Heightfield" in Opengl gemacht:
https://blogs.igalia.com/itoral/2016...-terrain-mesh/
Aber, wie bekommt man dann das zu nem geschlossenen körper , deswegen hab ich das auch erstmal verworfen.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
598 Beiträge
 
#8

AW: 3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 14:16
Zitat:
Aber, wie bekommt man dann das zu nem geschlossenen körper , deswegen hab ich das auch erstmal verworfen.
Du setzt alle Dreiecke entsprechend aneinander und schon ist es ein geschlossener Körper.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
175 Beiträge
 
#9

AW: 3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 14:19
Zitat:
Aber, wie bekommt man dann das zu nem geschlossenen körper , deswegen hab ich das auch erstmal verworfen.
Du setzt alle Dreiecke entsprechend aneinander und schon ist es ein geschlossener Körper.
ich meine das heightfield
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.602 Beiträge
 
Delphi 2007 Enterprise
 
#10

AW: 3D-Objekt / Mantelfläche darstellen

  Alt 1. Mär 2019, 15:56
Heightfields werden üblicherweise einfach über eine Ebene "verkörpert", die entsprechend fein unterteilt ist, und von der man die Lage im Raum vorab schon weiß. Da muss man dann einfach nur noch die Y-Koordinaten dem Heightfield anpassen. (Genau genommen muss man die Punkte entlang ihrer Normalen um einen Betrag verschieben, den das Heightfield vorgibt. Bei einer XZ-Ebene vereinfacht sich das zu "Y-Koordinaten ändern".)

Problem bei Heightmaps: Du kannst nur in eine Richtung konkav sein, und es gibt kein "unten" in dem Sinne. Wenn du also komplexe und beliebige Körper hast, kommst du um eine Triangulierung nicht herum. Selbst mit Delaunay kann es dabei aber noch Stellen geben, die ggf. nicht das gewünschte Ergebnis liefern. (Insbesondere sind dünne Regionen kritisch, bei denen die Punktabstände "durch das Volumen" kleiner sind als die entlang der eigentlichen Oberfläche.) Genau genommen ist eigentlich kein Verfahren wirklich 100%, und welches sich besser eignet hängt stark von der Art der Punktwolke ab. Ein Körper ist durch eine Wolke schlicht nicht ausreichend definiert, und man kann nicht viel mehr machen als versuchen die fehlenden Daten (Kanteninformationen) hinzu zu dichten.
Das ist wie beim Vergrößern von Bitmaps: Man kommt bis zu einem gewissen Grad ganz gut klar, muss den Algo aber auch hier passend zum Bildinhalt wählen für das beste Ergebnis, und ein 100%iges Ergebnis wird man nie erreichen - erst recht nicht im verallgemeinerten Fall.


Wenn deine Berechnung, die zu der Wolke führt, auf einem parametrischen Volumen basiert hast du allerdings noch eine ganz brauchbare Alternative, da hier zumindest für jeden Punkt im Raum ganz klar bestimmt werden kann, ob er Teil des Volumens ist oder nicht. (Ich hatte das mal für Quaternion-Fraktale gemacht, auf die trifft das z.B. zu.) Das naive Verfahren dazu nennt sich "Marching Cubes".
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf