Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi 3d-Darstellunf von array of array of array (https://www.delphipraxis.net/138145-3d-darstellunf-von-array-array-array.html)

violinenspieler1000 4. Aug 2009 11:32


3d-Darstellunf von array of array of array
 
Hallo,

ich habe ein array of array of array of boolean, also drei Dimensionen.
In diesem Array sollen Figuren gezeichnet werden, z.B. Ein Quader, eine Kugel, usw.

Ich möchte dieses Array nun grafisch als eine Art "dreidimensionale Matrix" darstellen (dabei soll bool=true als schwarz dargestellt werden und bool=false als weiß oder in anderen Farben).
Die Benutzerschnittstelle muss es ermöglichen eine Drehung durchzuführen, damit man das Objekt von alle Seiten betrachten kann.

Gibt es sowas in der Art schon als fertigen Code?
Wo kann man nachlesen, wie sich z.B. die Proportionen nach hinten hin verändern, damit es zu einem "3D-Effekt" kommt?

Thomas

FaTaLGuiLLoTiNe 4. Aug 2009 11:43

Re: 3d-Darstellung von array of array of array
 
Wenn du es wirklich selbst machen willst, könntest du mal nach Zentralprojektion oder Parallelprojektion googeln. Das sind Verfahren, die Objekte aus dem dreidimensionalen Raum auf eine Ebene abbilden können. Allerdings wirst du dich dann wahrscheinlich noch händisch um so Sachen wie verdeckte Pixel (Stichwort Z-Buffer) kümmern müssen.

Ich kenne mich mit der Materie nur oberflächlich und theoretisch aus, aber wenn mich nicht alles täuscht sollte es für sowas bereits fertige Bibliotheken geben, die dir eine Menge Arbeit abnehmen können. Allerdings glaube ich nicht, dass diese Bibliotheken mit Konstrukten wie 'array of array of array of Boolean' arbeiten. Du wirst also wahrscheinlich deine Objekte in dreidimensionale Matrizen oder sowas umrechnen müssen.

Namenloser 4. Aug 2009 11:45

Re: 3d-Darstellunf von array of array of array
 
Du könntest dir das hier mal angucken, ist zwar C#, aber die Formeln sollten sich daraus ableiten lassen: http://www.delphipraxis.net/internal...033957#1033957

himitsu 4. Aug 2009 11:54

Re: 3d-Darstellunf von array of array of array
 
dort war auch mal sowas ... vielleicht findet sich da ja was drin
http://www.delphipraxis.net/internal...t.php?t=144737

grizzly 4. Aug 2009 12:28

Re: 3d-Darstellunf von array of array of array
 
Wie groß sind denn die Arrays? Wenn es nicht übertrieben viel ist, dann geht vielleicht schon der simple Voxel-Ansatz, den ich vor längerer Zeit mal für ein Fraktal-Experiment gebastelt habe: 3D Fraktal als Voxel (inkl. Sourcecode). Basiert auf einem 256*256*256 großen Array. Läßt sich immerhin drehen (wenn auch nicht zoomen). Tiefeninformation allerdings wird lediglich über Helligkeit angedeutet. War eine Antwort auf einen Diskussion im Delphi-Treff.

Mit der Routine SetVox(X, Y, Z: integer; Value: byte) könntest Du das Voxel-Gebilde füllen. Nimmst halt Value=0 für false und Value=255 für true.
Die Routine CalcFractal() kannst Du Dir natürlich schenken.
Sind sogar Kommentare drin :mrgreen:

Gruß
Michael

Medium 4. Aug 2009 14:23

Re: 3d-Darstellunf von array of array of array
 
Edit: Hatte keinen Mehrwert, schuldigung.

grizzly 4. Aug 2009 14:42

Re: 3d-Darstellunf von array of array of array
 
Feuer hätt ich immer, nur keine Zeit zum Verbrennen ;)

Wenn ich mich recht erinnere, hatte der Thread-Ersteller (Dizzy) seinerzeit weitergemacht und u.A. auch den Marching Cube Algo verwendet. Wenn mich nicht alles täuscht ist er sogar recht weit damit gekommen - er hatte mir damals sein Projekt geschickt. Keine Ahnung, wie weit er mittlerweile damit gekommen ist.
Ich selbst hatte mich kurz eingelesen, aber das sah dann doch nach Arbeit aus.
Heb ich mir alles bis zur Rente auf...

Gruß, und danke für die Erinnerung!
Michael

PS.: Beruhigend, daß die C4D Exportdateien auch bei Dir solche Datenmonster wurden.
(Ups, roter Kasten. Ich schick's trotzdem ab. Und Mehrwert hatte es auch (zumindest für mich)...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf