3D Modell in Schichten zerlegen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

blink-182

Betreff: 3D Modell in Schichten zerlegen

BeitragFr, Aug 12, 2005 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich brauche eine Möglichkeit ein gewöhnliches 3D modell in sehr Dünne Schichten zu Zerlegen. Im Klartext will ich eine 3D Datei einlesen können und anschließend sozusagen einige tausend MAsken erhalten. Man kann sich das so vorstellen, wie wenn man mit einer ebene das Modell von unten nach oben abfährt und überall, wo das Modell die Ebene Schneidet soll dann z.B. in einer Bilddatei ein schwarzes und ansonsten ein weißes Pixel gezeichnet werden. Ich hoffe ihr wisst, was ich meine Als kleines einfaches beispiel wären es bei einer Kugel z.B. zunächst eine weiße Bilddatei, in den nächsten Bildern ein wachsender ausgefüllter Kreis und zum schluss noch ein kleiner Punkt bzw. eine weiße Bilddatei. Natürlich muss dieses Problem nicht mit einer Ebene gelöst werden. Satt dessen habe ich mich gefragt, ob man dieses problem mit der Blitz Collission lösen kann. außerdem sollen auch wirklich die echten Konturen erfasst werden. Also z.B. bei einem Hohlem Zilinder ein unausgefüllter Kreis etc...

Schonmal Danke für eure Hilfe.

ciao FLO

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Aug 12, 2005 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Was willst du denn dann damit machen? Auf Pappe ausdrucken, ausschneiden und zusammen kleben um die Spielhelden von Half-Life, Doom, Quake etc. sich dann ins Zimmer zu stellen? Smile

Ich könnte mir folgendes vorstellen:

Man nehme eine winzig kleine Kugel (Sphere) und bewege sie nun zunächst auf Höhe 0 rasterförmig in X und Z mit jeweils einer Schleife und überprüft dessen Kollision. Wenn Kollision, dann wird in einer Bitmap ein Punkt eingezeichnet.

X in 3D währe X in 2D
Z in 3D währe Y in 2D

Wenn die Höhe in 3D abgeschlossen ist, wird die Bitmap gespeichert und auf nächster Höhe weiter gemacht.
 

blink-182

BeitragSa, Aug 13, 2005 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
genauso habei ch mir das auch überlegt und auch schon angefangen zu Programmieren. Mit deinem auf Pappe Drucken hattest du sogar fast recht! Nur das das ganze Teil eines Jugend Forscht Projektes ist: Entwicklung eines farbigen 3D Druckers. Aber dazu werde ich euch später noch mehr erzählen. Auf jeden fall mal Danke für eure Hilfe! Falls noch jemandem eine bessere möglichkeit einfällt kann er diese gerne anbringen.

ciao FLO

Vertex

BeitragSo, Aug 14, 2005 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Idee hätte ich, die schneller geht, weiß aber nicht ob sie funktioniert...

Dein Meshl darf kein Lighting besitzen, und Backfaceculling muss ebenfalls abgeschalten sein. Jetzt setzt du Wireframe auf True.

Dann brauchst du eine Kamera mit orthogonalen Rendering. CameraRange muss möglichst klein sein. Die Differenz zwischen Far und Nearclippingplane der Kamera ist ja praktisch die dicke deiner Scheibe.

Dann fährst du die Kamera von oben nach unten. Dabei erfasst sie jede Schicht deines Meshs. Aber eben nur im Bereich zwischen Far und Near.

Das ist aber keine genaue oder gute Methode. Die beste wäre, die Schnittpunkte mit der Plane selber zu berechnen.

mfg olli
vertex.dreamfall.at | GitHub
 

blink-182

BeitragSo, Aug 14, 2005 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, Danke für die coole Idee Very Happy hast du vlt. noch einen ansatz für die Berechnung der Schnittpunkte mit einer Ebene.. habs Mathestudium leider noch nich begonnen Razz

Also vlt nur en grundgedanken.. den Kopf zerbrech ich mir dann schon selber Wink

danke FLO

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Aug 16, 2005 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
@Vertex,
die Idee hatte ich auch mal ausprobiert. Es gibt allerdings ein Problem wenn die Fläche des Meshes annährend der Kamera zugewand ist. Dann wird diese garnicht oder nur mit ein paar Pixel dargestellt. Der Körper erscheint dann auch mit der Farbe des Hintergrunds. Somit kann man einige Stellen nicht als Körper identifizieren. Leider...
 

blink-182

BeitragDi, Aug 16, 2005 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt genau. Leider erscheinen in diesem Fall wenn überhaupt nur wenige Pixel, aus denen mann leider so ghut wie keine Informationen gewinnen kann.

Am besten wäre tatsächlich eine genaue Berechnung der Schnittpunkte, da ich so auch nicht umbedingt an blitz3D gebunden wäre. Schließlich muss ich die erhaltenen Daten anschließend entweder über den Druckerport oder USB Port ausgeben, und dafür eignen sich andere Sprachen vlt. doch besser.

Interessant wäre zunächst mal zu wissen, wie die 3D Objekte in den verschiedenen Formaten gespeichert sind. Anschließend könnte man jedes der "Dreiecke" zerlegen, sodass man nur ncoh linien hat. Dann geht man zunächst linie für Linie druch und speichert die absolute höhe, sodass man im nächsten schritt nicht jedes mal alle "Linien" auf eine Kollision mit der ebene prüfen muss. Danach setzt man die eben unten an und überprüft alle Linien, die in diesem Höhenbereich sind. Die schnittpunke sollten relativ leicht zu errechnen sein.

Was haltet Ihr von diesem Grundkonzept? eventuell Verbesserungsvorschläge?

Ciao FLO
Was haltet ihr von diesem Grund

Markus2

BeitragDi, Aug 16, 2005 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiermit kann man ein solides 3D Objekt z.B. mit nem flachen Cube
in Scheiben schneiden , das dann wieder Orthogonal rendern
und das Bild speichern .

http://www.blitzbasic.com/code...p?code=560

http://home.kamp.net/home/r155...2003_1.jpg
 

blink-182

BeitragDi, Aug 16, 2005 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Gute Nachrichten! Nach längerer Suche habe ich nun ein Format gefunden, dass sich für meine Zwecke perfekt eignet! Das 3D Modell wird in Layern, also Schichten gespeichert, von denen die Dicke bekannt ist. außerdem ist für jede Schicht eine Kontur angegeben. Also DAS Format für meine Zwecke. Jetzt brauche ich nur noch ein Programm finden, mit dem ich in dieses Format extrahieren kann und schon wäre mir sehr viel Erbeit erspart. Achja.. Ihr wollt bestimmt wissen, wie es heißt Wink

.SLC

Ciao FLO

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group