Entwickeln von Java 3D Anwen

Transcription

Entwickeln von Java 3D Anwen
Entwickeln von Java 3D Anwendungen in Eclipse
Ersteinrichtung und Benutzung der Entwicklungsplattform
für das CGA Praktikum im Maya-Pool von Raum A0504a
Daniel Klein, Dipl.-Inform. Wolfgang Moser
10. Oktober 2006
1. Einführung
Willkommen in der ersten Stunde Ihres CGA-Praktikums!
Ihre heutige Aufgabe besteht darin, dieses Dokument sorgfältig durchzuarbeiten
und alle Vorgänge und Aufgaben praktisch durchzuführen. Mit Hilfe dieses Dokuments erhalten Sie eine Einführung in die Benutzung von Eclipse. Sie werden Schritt für
Schritt Grundeinstellungen vornehmen und ein Projekt für eine Java 3D Anwendung anlegen.
Im Anschluss sollen Sie dann zeigen, dass Sie das erzeugen eines Projekts beherrschen
und das gelernte Wissen auf eine andere Beispielanwendung anwenden können.
Versuchen Sie die hier aufgeführten Schritte und Aufgaben eigenständig, jede Person
einzeln, also heute noch nicht in Gruppen, auszuführen. Alleine mit Hilfe dieses Textes
sollten Sie in der Lage sein die nötigen Aufgaben zu lösen. Sollten Sie dennoch nicht weiter wissen, so fragen Sie bitte einen der anwesenden Betreuer.
Viel Erfolg und viel Spaß beim CGA Praktikum.
2. Grundeinrichtung von Eclipse
Den Eintrag zum Start von Eclipse finden Sie direkt im Hauptbereich
des Startmenüs. (Abbildung 1)
Dieser Eintrag ist für die Arbeit im Maya-Pool so vorkonfiguriert, dass
Ihre Projektdaten (Quellcode und projektabhängige Einstellungen) in
dem folgenden Ordner in Ihrem Homeverzeichnis abgelegt werden:
Z:\Eclipse\workspace
Dieser Ordner wird beim ersten Start von Eclipse automatisch angelegt.
Verwenden Sie also immer diesen Startmenüeintrag um Eclipse
zu starten. Ansonsten müssen Sie selber darauf achten, wohin Eclipse Ihre Projektdaten speichert. Beachten Sie aber, dass Daten die auf
einem lokalen System abgelegt worden sind, jederzeit aus Administrationsgründen gelöscht werden können, und von anderen Systemen
aus nicht zu erreichen sind. Stellen Sie deshalb am besten immer sicher, dass Sie ihre Projekte im zentralen Speichersystem auf Laufwerk Z abzulegen.
Zusätzlich zu den Projektdaten benötigt Eclipse ein weiteres Verzeichnis zur Ablage von Dateien für interne Vorgänge. Der in AbbilAbbildung 1
dung 1 gezeigte Startmenüeintrag ist so eingerichtet, dass diese Dateien in Ihrem lokalen Profilverzeichnis gespeichert werden. Dies wurde
so eingerichtet, um Speicherplatz auf dem zentralen Speichersystem zu sparen, da diese
Daten recht umfangreich werden können. Sollten Sie jedoch den Rechner wechseln, oder
die Daten lokal aus Platzgründen gelöscht werden müssen, so können diese von Eclipse
jedoch jederzeit und ohne Verluste neu erstellt werden.
3. Konfigurieren der verwendeten Java Runtime
Wenn Sie Eclipse das erste mal starten, so sucht sich Eclipse selbstständig die neueste
Java Runtime (JRE), und verwendete diese fortan für sich selber und für das Ausführen
von Programmen aus Eclipse heraus. Durch den Updatemechanismus der JREs kann es
jedoch vorkommen, dass neuere JREs automatisch auf dem System installiert worden
sind. Prinzipiell ist der Updatemechanismus eine feine Sache, nur leider hat er einen kleinen Haken: Hat man Erweiterungsbibliotheken (wie Java 3D) installiert, welche eine native
Bibliothekskomponente benutzen, so lassen sich nicht einfach nur die JAR Dateien zum
Classpath des Projekts hinzufügen, weil die neuere JRE dann die nativen Bibliotheken
nicht finden kann, welche sie nur in einem speziellen Unterverzeichnis des JRE-Installationsverzeichnisses vermutet. Dieses Problem lässt sich am einfachsten umgehen, indem
in den globalen Eclipse-Einstellungen einmalig die passende JRE-Version ausgewählt
wird, bei der auf den Systemen im Maya-Pool die Java 3D Bibliotheken installiert worden
sind.
Um dies zu tun gehen Sie folgendermaßen vor:
1. In Eclipse wählen Sie folgende Einstellungen:
Window -> Preferences -> Java -> Installed JREs
2. Dort wählen Sie "Add..." und in dem erscheinenden Fenster "Browse...". Hier wählen
Sie die Java Runtime in folgendem Verzeichnis
K:\Programme\Java\jdk1.5.0_04\jre
und Bestätigen Sie mit "OK".
Abbildung 2
3. Geben Sie nun der Java Runtime unter "JRE name" einen passenden Namen (Abbildung 2) und bestätigen Sie wieder mit "OK".
4. Machen Sie die gerade eingerichtete Java Runtime nun zur Standard Java Runtime,
indem Sie das Häkchen an dieser setzen. (Abbildung 3) Zum Abschluss bestätigen Sie
diesen Dialog ebenfalls mit "OK".
Abbildung 3
4. Einrichten eines Java 3D-Projekts
Dieser Abschnitt beschreibt die Einrichtung und Konfiguration eines neuen Java 3D-Projekts. Zur Demonstration wird auf eine Beispielanwendung zurückgegriffen, die im Beispielprogrammpaket von Java 3D enthalten ist.
Sollten Sie momentan einen „Welcome“ Hinweis angezeigt bekommen, so schließen Sie
diesen zuerst, indem Sie das ‚x‘ auf dem entsprechenden Reiter über dem Hinweis anklicken.
Wählen Sie nun
File -> New -> Project
Es öffnet sich ein Wizard, mit dem alle projektabhängigen Parameter für die Einrichtung
eines neuen Projekts eingestellt werden können (Abbildung 4).
Abbildung 4
1. Lassen Sie den vorausgewählten Eintrag „Java Project“ angewählt und klicken Sie auf
„Next“
2. Geben Sie auf der folgenden Konfigurationsseite „Create a Java project“ einen neuen
Namen für Ihr Projekt ein.
• Wählen Sie als Namen für das jetzt zu erzeugende Beispielprojekt den Namen
„3DUniverse“.
• Lassen Sie die Option „Contents“ bzw. „Location“ möglichst auf der Auswahl „Create
project in workspace“ stehen, damit Sie alle Java-Eclipse-Projekte gesammelt an einem Ort wiederfinden können.
• Für das Optionsfeld „Project layout“ ist anzuraten, dass Sie die Option „Create separate source and output folders“ auswählen, damit erzeugte Class-Dateien nicht mit
Quellcode vermischt werden (Abbildung 5).
Abbildung 5
3. Schließen Sie die Projekterstellung nun mit „Finish“ ab.
4. Sollte im folgenden ein „Confirm Perspective Switch“ Hinweisdialog erscheinen, so bestätigen Sie diesen mit „Yes“ um in die für die Java-Entwicklung geeignete Perspektive
zu wechseln.
5. Im „Package-Explorer“ im linken Teil des Eclipse-Fensters können Sie nun die Übersicht des neu erzeugten Projekts mit dem Namen „3DUniverse“ sehen. Klappen Sie
dieses Projekt durch Anklicken des „+“-Zeichens auf und wählen Sie das Ordnersymbol „src“ mit der rechten Maustaste aus. Aus dem Kontextmenü wählen Sie den Eintrag
„Import“.
6. Im folgenden Dialog wählen Sie den Punkt „File system“ und bestätigen mit „Next“.
(Abbildung 6)
Abbildung 6
7. Abbildung 7 zeigt den folgenden Benutzerdialog, in dem Sie nun Angaben zu den zu
importierenden Dateien machen müssen. Da Sie den Beispielcode des HelloUniverseBeispiels importieren sollen, wählen Sie das Verzeichnis
K:\Programme\Java\jdk1.5.0_04\demo\java3d\HelloUniverse\
Im rechten Feld wählen Sie die Datei „HelloUniverse.java“. (Lassen Sie die beiden Optionen „Into folder“ und „Options“ auf den vorgegebenen Einstellungen „3DUniverse/
src“ und „Create selected folders only“ unverändert.)
8. Beenden Sie den „File System“-Dialog mit „Finish“.
Abbildung 7
Sie können sich den importierten Quelltext nun anschauen, indem Sie im Package-Explorer auf der linken Seite den Baum im Ordner „src“ so weit öffnen, bis Sie die Datei
„HelloUniverse.java“ sehen. Ein Doppleklick auf diese öffnet sie in der Editoransicht von
Eclipse.
Zum Ausführen der Anwendung führen Sie folgende Schritte aus:
• Wählen Sie aus der Werkzeugleiste das Symbol mit dem grün hinterlegten Pfeil aus und
klicken Sie auf das nach unten zeigende Dreieck rechts daneben. (Abbildung 8)
Abbildung 8
• Wählen Sie aus dem Kontextmenü den Eintrag „Run As“ aus und aus dem Untermenü
den Punkt „Java Application“. Bei zukünftigen Starts der gleichen Anwendung brauchen Sie nur noch auf den grün hinterlegten Pfeil zu klicken, da Eclipse sich den
einmal festgelegten Anwendungstyp (Java Application) und die auszuführende Anwendung (Klasse mit main()-Methode) merkt. Lediglich wenn Sie die gleiche Anwendung als
einen anderen Ausführungstyp starten wollen (z.B. um die Anwendbarkeit des Projektes
als Java-Applet zu testen), müssen Sie wiederum den oben beschriebenen Weg wählen.
Nach dem Start der Anwendung sollten Sie das in Abbildung 9 dargestellte Fenster sehen
können. Falls nicht, kontrollieren Sie, ob Ihre Einstellungen alle korrekt sind, und schauen
Sie sich die eventuell aufgetretene Fehlermeldung an. (Java Exceptions werden in Eclipse
im Ausgabebereich an der Unterseite des Fensters der Entwicklungsumgebung ausgegeben.) Sie gibt meistens einen ziemlich eindeutigen Hinweis auf das bestehende Problem.
Abbildung 9
5. Aufgabenstellung zur Abgabe am ersten Praktikumstermin
Sie sollten sich nach dem Durcharbeiten der ersten Abschnitte dieser Beschreibung so
weit in die Benutzung von Eclipse eingearbeitet haben, dass Sie in der Lage sein dürften,
ein etwas komplexeres Java 3D-Projekt in Eclipse zu importieren und zum Laufen zu bringen. Sobald Sie das unten angegebene Java 3D Projekt erfolgreich umgesetzt haben,
melden Sie sich bitte noch während des ersten Praktikumstermins bei einem der anwesenden Betreuer. Erläutern Sie ihm die von Ihnen durchgeführten Schritte, mit denen Sie
das Programm übersetzt und zur Ausführung gebracht haben. Gehen Sie insbesondere
auf die Details ein, die sich von obiger Beschreibung (Import der Demo-Anwendung
HelloUniverse) unterscheiden.
Die erfolgreiche Abgabe der Aufgabe noch während des ersten Praktikumstermins ist Voraussetzung zur Teilnahme am CGA-Praktikum. Es dient den Betreuern des Praktikums
als Entscheidungsgrundlage, ob Ihre allgemeinen Kenntnisse im Umgang mit Java-Anwendungen und -Projekten (z.B. „package“- und „import“-Anweisungen), und der Umgang
mit Eclipse ausreichend sind, um eine erfolgreiche Teilnahme am Praktikum gewährleisten
zu können.
5.1. CGA-Praktikum, Aufgabe 1
Nutzen Sie den Webbrowser Firefox um die Webseite zum CGA-Praktikum aufzurufen:
http://www.gm.fh-koeln.de/~hstl/CGA/06-07/
Dort finden Sie neben anderen Organisationsmaterialen zum CGA-Praktikum auch JavaQuellcodes für ein Java 3D-Beispiel namens „CGA-Stuhl“.
Die Quellen sind in einem ZIP-Archiv zusammengefasst. Laden Sie dieses herunter und
entpacken Sie es auf einem temporären Laufwerk (P:\Temp) um die Dateien für den Import in Eclipse hinein vorzubereiten.
Legen Sie nun in Eclipse ein neues Projekt mit einem passenden Namen an. Importieren
Sie die soeben ausgepackten Dateien und bringen Sie die Anwendung zum laufen.
Beachten Sie, dass die zu importierenden Dateien „package“-Anweisungen enthalten.
Versuchen Sie möglichst, das entstehende Import-Problem in Eclipse „sauber“ zu lösen,
indem Sie entweder im „Package Explorer“ zunächst einen korrespondierenden PackagePfad definieren oder diesen gleich beim Import der Dateien berücksichtigen. Löschen Sie
nicht einfach das Package-Statement im Code!
Unter Umständen benötigen Sie mehrere Versuche, um die korrekte Vorgehensweise zu
ermitteln.
6. Details zu Beispielanwendungen und Framework
Im folgenden noch ein paar Erläuterungen zu dem Code, den Sie teilweise schon genutzt
haben, und den Sie für die zukünftigen Aufgaben nutzen oder Anwendungsbeispiele einsehen sollen.
6.1. Details zur Beispanwendung aus Praktikumsaufgabe 1
Die für Aufgabe 1 verwendete Beispielanwendung stellt eine nicht vollständige Musterlösung aus Praktika der vergangenen Jahre dar. Es zeigt insbesondere die Möglichkeiten
einer sauberen Strukturierung des Quellcode mit Mitteln der Objektorierentierung, wie sie
sich für Implementierung von zusammengesetzten 3D-Modellen anbietet. Sie möchten
sich vielleicht intensiver mit diesem Beispiel beschäftigen, um für die Praktikumsaufgaben
4, 5 und 6 Ideen für Ihre eigenen Implementierungen zu sammeln. Es ist jedoch nicht
empfehlenswert, diese Beispielanwendung als Grundlage für Ihre eigenen 3D Aufgaben
zu benutzen, da wir mit einer sehr einfachen Anwendung beginnen, und die weiteren Aufgaben jeweils auf der vorigen aufbauen lassen werden. Besser für den Anfang der eignen
Lösung geeignet ist das weiter oben verwendete „HelloUniverse“-Beispiel.
6.2. Details zum Framework für die 2D Praktika
In den folgenden Praktikumsterminen sollen Sie einfache 2D-Anwendungen erstellen. Auf
der Webseite des CGA-Praktikums finden Sie ein 2D Framework, welches Sie für diese
Aufgaben als Basis benutzen sollen.
Das Framework implementiert bereits die nötige Funktionalität um Animationen mit fester
Bildwiederholrate in einem Fenster darzustellen, und um Feedback in Form von Mauseingaben zu verarbeiten.
Die Klasse AnimatedWindow implementiert die vorgegebene Funktionalität und braucht
nicht weiter beachtet zu werden. (Außer Sie interessieren sich dafür wie das Framework
realisiert ist.) Die Klasse AnimationListener stellt ein Interface dar, welches die Schnittstelle zum Framework darstellt. Die Referenz auf eine Klasse, welche dieses Interface implementiert, muss der Instanz von AnimatedWindow beim Aufruf des Konstruktors übergeben
werden. AnimatedWindow ruft die im Interface definierten Methoden dann als so genannte
Callback-Funktionen auf um den nächsten Frame einer Animation zu erhalten, oder um
eine Mauseingabe mitzuteilen. Die Klasse MyAnimation implementiert eine kleine Demoanwendung, bei der Sie sich anschauen können, wie das Framework konkret benutzt wird.
Für die zu lösenden 2D Aufgaben sollen Sie die Klasse MyAnimation entsprechend der
Aufgabenstellung ändern. Den Rest des Frameworks ändern Sie bitte nicht.
7. Installation von Java 3D zu Hause
Möchten Sie Java 3D zu Hause installieren, so finden Sie auf
https://java3d.dev.java.net/binary-builds.html
alle üblichen Versionen zum Download.
7.1. PC Windows und Linux
Der letzte „Stable“ Build ist die Version 1.4, die letzte Beta ist Version 1.5. Beachten Sie
jedoch bitte, dass wir im Praktikum die schon etwas älteren Java 3D Versionen 1.3.1 bzw.
1.3.2 einsetzen. Achten Sie also darauf, dass Ihre Anwendungen immer mit den älteren
1.3.1/1.3.2 Versionen laufen müssen, damit Sie diese auf den Rechnern im Maya-Pool
auch demonstrieren können.
Den Quellcode der Demoanwendung „HelloUniverse“ finden Sie in dem auf der oben genannten Dowload-Seite separat erhältlichen Beispielpaket. Eben so ist es empfehlenswert
zusätzlich das Dokumentationspaket zu installieren.
7.2. Macintosh
Mac Nutzer mit Mac OS X 10.4 benötigen keine zusätzlich Software, da das Betriebssystem bereits Java 3D in Version 1.3.1 mitbringt. Sie müssen es eventuell lediglich noch zu
den von Ihrem Projekt benutzten Bibliotheken hinzufügen. Die JAR-Dateien finden Sie unter
HD -> System -> Library -> Java -> Extensions
Die aktuelle Version 1.4 gibt es leider bisher nicht für den Mac, die aktuellen Betaversionen von Version 1.5 stehen jedoch auch für den Mac wieder zu Verfügung, benötigen allerdings die Installation von JOGL. Bitte beachten Sie jedoch auch hier, dass auf den
Rechnern im Maya-Pool nur Version 1.3.1/1.3.2 verfügbar ist. Stellen Sie also immer sicher, dass Ihre Anwendungen auch unter Version 1.3.1/1.3.2 laufen, damit Sie diese auf
den Rechnern im Maya-Pool auch demonstrieren können.
Die „HelloUniverse“ Beispielanwendung finden Sie bei installierten Developer Tools (verfügbar auf der Mac OS X Installations-CD oder unter http://developer.apple.com) unter
HD -> Developer -> Examples -> Java -> Java 3D -> HelloUniverse
Die Dokumentation ist leider nicht vorinstalliert. Da es in der Dokumentation aber ja keine
systemspezifischen Unterschiede gibt, können Sie sich die Dokumentation unter dem oben angegebenen java.net-Link ebenfalls herunter laden.