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.