Mit Hilfe der dritten Dimension erstellt man realistische Modelle, welche auch jenseits von Spielen sinnvoll eingesetzt werden können. Produktpräsentationen und Visualisierungen in Bildungs-, Wissenschaft- und Medizin- Applikationen sind nur einige Anwendungen. Mit RAD Studio werden 3D-Applikationen plattformübergreifend mit Hilfe des Designers erstellt. Lesen Sie, wie Sie 3D-Körper, Licht und Rotation in den Griff bekommen und beeindruckende visuelle 3D-Effekte erstellen und in Ihrer Applikation zum Leben erwecken.
3D-Grafikmodelle führen zu einem deutlich besseren Verständnis und einer höheren Vorstellungskraft beim Betrachter als zweidimensionale Abbildungen. In Bildungs-Applikationen oder bei Produktvisualisierungen können diese innerhalb eines Programms eingesetzt werden. Ein typisches Beispiel ist ein Programm zur Bestellung von Ersatzteilen von komplizierten Maschinen oder Fahrzeugen (Bild 1).
Bild 1: Ein Beispiel für ein 3D-Modell [1].
Die Basis für die Darstellung ist ein 3D-Koordinatensystem (Bild 2). Die geometrischen Objekte können über Punktkoordinaten beschrieben werden. Ein Würfel wird durch die Angabe der Koordinaten seiner acht Eckpunkte definiert und eine Kugel wird durch die Angabe ihres Mittelpunktes und dessen Radius eindeutig beschrieben.
Bild 2: Das 3D-Koordinatensystem
3D-Modelle mit FireMonkey und Delphi
Delphi bietet mit Hilfe des Grafikframeworks FireMonkey die Möglichkeit Applikationen mit einer 3D- Visualisierung zu erstellen. Einerseits kann man die 3D-Szenen in der Entwurfszeit in einem visuellen Modus simulieren, wie wir es auch mit 2D-Komponenten (Buttons, Labels, Textfelder, …) machen können. Andererseits kann die Manipulation von 3D-Objekten auf der Ebene des Programmcodes erfolgen. Das Hauptelement einer Anwendung, welche 3D-Grafiken verwendet, ist entweder eine 3D-Form oder der 3D-Viewport. Wenn das Formular selbst eine dreidimensionale Form hat, kann sich jedes Objekt an einer beliebigen Stelle in diesem Raum befinden. Befindet sich jedoch der rechteckige 3D-Viewport in einer regulären flachen Form (2D), dann erfolgt eine dreidimensionale Abbildung der Objekte in einer 2D-Form (Bild 3).
Bild 3: 3D-Viewport als Basis einer 3D-Applikation.
Erstellen Sie dazu eine neue Geräteübergreifende Applikation und wählen Sie den Applikationstyp Leere- Anwendung, denn wir betten das 3D-Modell in ein normales Fenster ein.
Bild 4: Eine neue Anwendung erstellen.
Die Basis für jedes 3D-Modell ist die Komponente ViewPort3D, welche Sie aus der Komponentenpalette auf das Formular ziehen. Das gesamte Modell, wird dann in dieser Komponente abgebildet. Weitere Komponenten können Sie wie gewohnt im Formular platzieren, zum Beispiel eine Toolbar und eine Statusleiste. Die ToolBar-Komponenten werden mit Align = “Top“ bzw. Align =“Bottom“ am oberen und unteren Rand ausgerichtet. Die TViewPort3D-Komponente nimmt mit Align = “Client“ den restlichen Platz ein. Suchen Sie als nächstes im Abschnitt 3D-Szene der Komponentenpalette den Eintrag TLight und platzieren Sie diese Komponente in der Viewport3D-Komponente (Bild 5). Die TLight-Komponente fungiert als „Lichtquelle“ für eine dreidimensionale Szene.
Bild 5: 3DViewPort als Basis für ein 3D-Modell in einem normalen Anwendungsfenster.
RAD Studio bietet eine umfassende Palette zur Gestaltung von 3D-Modellen.
Bild 6: 3D-Komponenten in RAD Studio.
Fügen wir nun visuelle 3D-Objekte hinzu. Wir simulieren Kisten bzw. Ladungsgüter mittels TCube-Objekte in einem Lagerraum. Damit wir alle Objekte gemeinsam in der Ansicht drehen können, fügen wir diese in ein übergeordnetes Objekt des Typs TDummy ein. Ein solches Objekt ist unsichtbar, kann jedoch als Vater-Objekt mehrere Kind-Objekte aufnehmen, welche dann einheitlich manipuliert werden. Jedes TCube-Objekt (Kiste) kann manuell oder programmgesteuert in seiner Größe über die Eigenschaften Width (Breite), Height (Höhe) und Depth (Tiefe) beeinflusst werden.
Über die MaterialSource-Eigenschaft kann jedem 3D-Objekt ein visuelles Design zugordnet werden. Dazu haben wir auf dem Formular mehrere ColorMaterialSource-Komponenten hinzugefügt und diese mit unterschiedlichen Farben konfiguriert (Bild 7).
Bild 7: Materialkomponenten für die Gestaltung der 3D-Objekte.
Alternativ gibt es zum Beispiel auch die TTextureMaterial-Komponente, um eine Bitmap als Material hinzuzufügen. Die Struktur des gesamten 3D-Modells und dessen Eingliederung in das Formular ergibt sich aus (Bild 8).
Bild 8: Die Struktur des 3D-Modells.
Weisen Sie den Objekten des Typs Cube unterschiedliche Größen (Breite, Länge, Tiefe) zu und ordnen Sie diese im 3D-Koordinatensystem durch Angabe der Position an. Achten Sie darauf, dass alle Objekte unterhalb des Dummy-Objektes angeordnet sind. Es sollte sich dann eine Ansicht gemäß Bild 9 ergeben.
Bild 9: Das komplette 3D-Modell in Delphi.
Die Applikation können Sie auf dem Wunsch-Zielsystem starten, das sind dank dem plattformübergreifenden Ansatz von FireMonkey Microsoft Windows, macOS, einige Linux-Distributionen und die mobilen Betriebssysteme Android und iOS. Das 3D-Modell wird im Fenster innerhalb der Komponente ViewPort3D eingeblendet. Es ist zunächst statisch.
Dynamik durch Transformation
Dynamik kommt in ein 3D-Modell durch so genannte Transformations-Operationen. Darunter versteht man die Manipulation von einem oder mehreren Objekten, durch Drehung (Rotation), Verschiebung (Translation) oder Größenänderung (Skalierung). Man kann ein Objekt, zum Beispiel Cube1, oder alle Objekte simultan verändern. In diesem Fall müsste die Operation auf das Dummy-Objekt angewendet werden. Ebenso können die Position des Lichts und/oder der Kamera angepasst werden.
Beispielhaft zeigen wir die Rotation der gesamten 3D-Szene. Dazu werden die Rotationswinkel des Objektes Dummy1, als nicht sichtbares Mutter-Objekt der untergeordneten Objekte, angepasst. Zur Anpassung der Winkel platzieren wir auf der Oberfläche drei Elemente des Typs TrackBar. Der Wertebereich wird jeweils auf einen Wert von 0 bis 360 [Grad] festgelegt. Ausgewertet wird jeweils das Change-Ereignis der TrackBar-Komponenten:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
procedure TForm1.TrackBarYChange(Sender: TObject); begin Dummy1.RotationAngle.Y := TrackBarY.Value; end; procedure TForm1.TrackBarZChange(Sender: TObject); begin Dummy1.RotationAngle.Z := TrackBarZ.Value; end; procedure TForm1.TrackBarXChange(Sender: TObject); begin Dummy1.RotationAngle.X := TrackBarX.Value; end; |
Verschiebt man jetzt die Regler, dann wird das 3D-Modell in die jeweilige Richtung (x, y, z) gedreht (Bild 10).
Bild 10: Zwei unterschiedliche Ansichten des 3D-Modells.
Es ist auch möglich das Modell interaktiv durch den Nutzer zu bearbeiten. Dazu kann man das OnClick-Ereignis der Objekte auswerten. Es wird beispielsweise für alle Cube-Objekte der folgende Quellcode im OnClick-Ereignis hinterlegt:
1 2 3 4 5 6 7 |
procedure TForm1.Cube1Click(Sender: TObject); var cube:TCube; begin cube:=Sender as TCube; LabelObject.Text:=cube.Name; end; |
Klickt man mit dem Mauszeiger auf ein Objekt, dann wird dieses identifiziert. Wir haben dessen Namen beispielhaft in der Statuszeile ausgegeben (Bild 11).
Bild 11: Nutzeridentifikation durch Mausklick im 3D-Modell.
3D-Objekte aus externen Quellen
Objekte können auf unterschiedliche Art und Weise in eine 3D-Szene eingefügt werden:
- Zur Entwurfszeit können Sie (wie im Beispiel) der Szene interaktiv über den Designer hinzugefügt und
über die Zuweisung von Werten zu den Eigenschaften konfiguriert werden. - Sie werden zur Laufzeit aus Daten – zum Beispiel das Ergebnis einer Berechnung – erstellt und über
Quellcode der Szene hinzugefügt. - Es wird ein bestehendes 3D-Objekt verwendet, welches aus einer externen Quelle stammt und mittels einer Datei importiert wird.
Für viele Anwendungszwecke existieren 3D-Objekte in standardisierten Datenformaten. RAD Studio kann solche fertigen Modelle direkt verwenden. Suchen Sie im Internet nach einer Datenbank für (kostenfreie) 3D-Objekte zum Experimentieren und Laden Sie die Beschreibung für ein Objekt im Format *.dae herunter (Bild 12).
Bild 12: Datenbanken für 3D-Modelle, zum Beispiel https://www.turbosquid.com/.
Erstellen Sie eine neue 3D-Szene (3DViewPort) und fügen Sie neben einer Komponente für das Licht auch ein 3D- Objekt des Typs Modell3D hinzu. Dieses Objekt dient zur Aufnahme einer extern vorliegenden Modellbeschreibung in einem 3D-Datensatzformat. Klicken Sie auf die Eigenschaft MeshCollection und importieren Sie die heruntergeladene Datei für das 3D-Objekt.
Bild 13: Import eines 3D-Objekts aus einer externen Datei.
Das 3D-Objekt wird nunmehr in der Szene angezeigt und kann danach – wie alle anderen Objekte auch – behandelt werden (Bild 14).
Bild 14: Importiertes Objekt in 3D-Szene.
Zusammenfassung und Ausblick
3D-Visualisierungen können auch jenseits von Spielen in modernen Applikationen eingesetzt werden. RAD Studio bietet mit FireMonkey hier einen leistungsfähigen Ansatz, welcher auf sehr einfache Art und Weise das Erstellen von 3D-Modellen erlaubt. Vielfältige Anwendungsmöglichkeiten ergeben sich, durch den Import von fertigen Objekten in die 3D-Szene.
Links
[1] https://www.hochschule-trier.de/hauptcampus/technik/labor-fuer-digitale-produktentwicklung-und-fertigung- ldpf/news-detail/aufbau-eines-cad-cam-verbunds-zur-offline-programmierung-und-virtuellen-absicherung-einer- laserschweissanlage-in-der-3d-business-plattform-3dexperience
[2] http://www.firemonkeyx.com/
[3] https://www.embarcadero.com/de/products/delphi
[4] Bender. Michael; Brill, Manfred: Computergrafik, Hanser-Verlag
Source
Als ZIP Download Source
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition
Gibt es dazu auch ein pdf ?
PDF? Datei | Drucken -> PDF
Oder was meinen Sie?
Wie kann Schatten erzeugt werden?
Siehe zB hier https://glooscapsoftware.blogspot.com/2021/03/firemonkey-3d-sun-earth-and-moon.html?m=1 oder hier https://www.delphipraxis.net/189193-firemonkey-3d-schatten.html