Also generell kann jede Software nur 2D Anzeigen, denn das ist die Limitierung der Hardware.
Wenn Du keine Software nutzen willst, die diese Transition von 3D auf 2D macht, dann kannst Du das dir auch selbst überlegen.
Das Prinzip kann man sich erst einmal überlegen, in dem man sich eine Transition von 2D zu 1D überlegt. Also sowas wie ein Querschnitt durch eine Szene.
Da kann man sich dann einen Zettel nehmen und darauf Malen.
Es gibt z.B. ein 4 Eck auf der rechten Seite - das sei ein Schnitt durch einen Würfel.
Dann hast du links irgendwo ein Punkt. Das ist dann sozusagen die Kamera.. damit kann man erste Linien einzeichnen von der Kamera hin zu den einzelnen Punkten.
Der Bildschirm ist dann ein Strich zwischen Kamera und dem Objekt. Und da kann man dann Schnittpunkte der Linien sehen. Das wären dann die dargestellten Punkte.
Man kann also jetzt berechnen aus den Koordinaten der Kamera und des 2D Objektes, ob und wo die Linie des Bildschirms gekreuzt wird. Und damit kommt man zu einer Bildschirmkoordinate.
Das ist die reine Theorie der Transition. Das, was man da aufbaut, das muss man bei 3D zu 2D halt für x und y machen.
Das ist aber alles noch nicht komplett. Du brauchst auch Berechnungen über den Rand hinaus, denn du willst ja Objekte malen, die nur teilweise sichtbar sind. Das ist aber einfach - wenn ein Objekt sichtbar ist, dann berechnest du alle Koordinaten aller Punkte - auch wenn sie außerhalb sind. Das Graphics2D Objekt kann damit umgehen/
Aber wichtiger ist: du hast Punkte, die nicht sichtbar sind. Du musst also in dem Beispiel prüfen, ob die Linie der Sicht eine Verbindungslinie kreuzt. Dann wäre es nicht sichtbar. Da müsste man aber schauen, ab wo etwas sichtbar wird. Das ist schwierig, daher ist hier der Ansatz, dass du alles Malst aber in einer Reihenfolge von hinten nach vorne. Du prüfst also den Abstand der Punkte von der Kamera und fängst mit den Verbindungslinien an, dessen Punkte am weitesten entfernt sind (also das einen Punkt hat, der am weitesten weg ist).
Das ist ein erster Anfang,. Damit hast du dir die Möglichkeit geschaffen, 3D Objekte in 2D darzustellen. Aber bisher hast du Flächen nur gefüllt. Du hast da also noch nichts mit Farbverläufen und so.
Dazu kann man dann hingehen und sich überlegen, wie denn eine rechteckige Fläche sich verzerrt um dann Bilder entsprechend verzerrt dazustellen.
An der Stelle sind wir aber immer noch nicht fertig. Bei so einem Bild kommt noch mehr hinzu:
- Kugeln - da kann man sich überlegen, wie man das handhaben will.
- Licht - das ist eigentlich das Vorgehen der Kamera noch einmal: Du hast einen Punkt, Licht ausstrahlt und das dann die 3D Objekte trifft. So kann man dann Helligkeitswerte bestimmen die dann die Darstellung beeinflussen.
Damit könntest du dann so eine Library selbst schreiben: dazu finden sich bestimmt auch Bücher und Blogs, die sowas beschreiben. Und es gibt fertige Libraries, die genau sowas machen.
Das ist halt jetzt nur ein sehr kleiner Auszug aus dem, wie sowas ablaufen kann.