Programmieren mit Looking Glass 3D
Das Hauptprogramm
void main()
Die statische main()
-Methode erzeugt einfach ein PingPong
-Objekt. Mit setActive()
wird es im Speicher realisiert und stellt alle notwendigen Ressourcen her. setVisible()
macht die PingPong-Anwendung sichtbar.
public static void main(String[] args) { Frame3D app = new PingPong(); app.setActive(true); app.setVisible(true); }
Die Hauptklasse PingPong
Der Konstruktor
Der Konstruktor der Klasse PingPong
legt sämtliche 3D-Objekte an. Vorher setzt er den Namen des eigenen Frame3D
-Objekts.
public PingPong() { setName("LG3D PingPong");
Danach berechnet er die Größe des Tisches sowie des Netzes. Mit dem Aufruf von setSize()
gibt er dem SceneManager einen Hinweis seiner Größe. Dieser ist darauf angewiesen, um mehrere Anwendungen passend zu stapeln.
Vorbereiten und Berechnen
TableWidth = getScreenHeight() * 0.5f; TableHeight = TableWidth * 0.6f; TableDepth = TableWidth * 0.01f; NetHeight = TableWidth * 0.025f; setSize(TableWidth, TableHeight, TableDepth); // create the container of the total application Container3D top = new Container3D();
Wie in Tutorial1.java beschrieben, gibt es in der Welt von LG3D mehrere Klassen für 3D-Objekte. Grundlegend sind die Nachfolger von Shape3D
. Diese müssen dann in ein oder mehrere Component3D
eingefügt werden. Ein Component3D
kann man anschließend drehen oder verschieben. Mehrere Component3D
werden dann in einen Container3D
eingefügt. Component3D
und Container3D
können dann in die von Frame3D
abgeleitete Anwendung eingefügt werden. Dieses Einfügen geschieht in allen Fällen mit der Methode addChild()
. Wir werden diese Aufrufe noch mehrmals sehen.
Vorbereitend wird ein Objekt der Klasse Container3D
angelegt. Dieses dient zur Aufnahme aller weiteren 3D-Objekte.
Das erste 3D-Objekt
Danach wird der Tischtennis-Tisch erzeugt. Dazu wird die Klasse GlassyPanel
verwendet. Das ist ein Relikt aus Lg3dHelp
, denn hierfür könnte genausogut auch eine Box
-Klasse verwendet werden.
GlassyPanel Table = new GlassyPanel( TableWidth /* + decoWidth * 2*/, TableHeight /*+ decoWidth * 2*/, TableDepth, TableDepth * 0.1f, TableApp); // a 3D component which holds the Shape3D descendant GlassyPanel Component3D TableComp = new Component3D(); TableComp.addChild(Table); top.addChild(TableComp); // add to application container
Zuerst wird das Objekt Table
für den Tisch angelegt. Danach wird ein Component3D
-Objekt TableComp
angelegt. In dieses wird Table
eingefügt. Danach wird TableComp
in das Container3D
Objekt top
eingefügt.