93
Einführung in Einführung in Java3D Java3D Dipl. Dipl.- Inform Inform. Paul Grimm . Paul Grimm Professur Graphische Datenverarbeitung Professur Graphische Datenverarbeitung

Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

Einführung inEinführung inJava3DJava3D

Dipl.Dipl.--InformInform. Paul Grimm. Paul GrimmProfessur Graphische DatenverarbeitungProfessur Graphische Datenverarbeitung

Page 2: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 2/93

Ziele des SeminarsZiele des Seminars

nn Wie kann ich Java3D benutzen?Wie kann ich Java3D benutzen?

nn Wo kann ich Informationen finden?Wo kann ich Informationen finden?

nn Wo finde ich Beispiele?Wo finde ich Beispiele?

nn Welche Konzepte setzt Java3D um?Welche Konzepte setzt Java3D um?

Page 3: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 3/93

ÜberblickÜberblick

nn Einführung in Java 3DEinführung in Java 3Dnn BenutzungBenutzungnn DokumentationDokumentationnn AufbauAufbau

–– SzenengraphSzenengraph–– AnimationenAnimationen–– InteraktionInteraktion

nn AusblickAusblick

Page 4: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 4/93

Einführung Einführung -- Was ist Java3D?Was ist Java3D?

nn Java Java PackagePackage für interaktive 3D Graphikfür interaktive 3D Graphik

nn HighHigh--levellevel 3D Graphik API3D Graphik API

nn Programmieren von interaktiven Programmieren von interaktiven

Anwendungen mit 3D InhaltenAnwendungen mit 3D Inhalten

nn Nahtlose Integration in JavaNahtlose Integration in Java

nn Kein Browser nötig und AppletKein Browser nötig und Applet--fähigfähig

Page 5: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 5/93

Was macht Java3D?Was macht Java3D?

nn Übernahme der Bilderzeugung:Übernahme der Bilderzeugung:–– SzenenmanagementSzenenmanagement–– VerdeckungsrechnungVerdeckungsrechnung

nn Übernahme der BenutzerinteraktionÜbernahme der Benutzerinteraktion

nn PlattformunabhängigesPlattformunabhängiges APIAPI

nn Implementierung für verschiedene Implementierung für verschiedene LowLow--Level Level APIsAPIs (Open GL, Direct3D) (Open GL, Direct3D)

Page 6: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 6/93

Was macht Java3D?Was macht Java3D?

nn Durchführung von OptimierungenDurchführung von Optimierungen

–– Paralleles Paralleles RendernRendern

–– Nutzung von HardwarebeschleunigungNutzung von Hardwarebeschleunigung

–– Reorganisation des SzenengraphenReorganisation des Szenengraphen

(=> Zusatzinformationen können (=> Zusatzinformationen können

angegeben werden, die bei der angegeben werden, die bei der

Optimierung ausgewertet werden)Optimierung ausgewertet werden)

Page 7: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 7/93

Was macht Java3D?Was macht Java3D?

nn Bereitstellung einer KlassenbibliothekBereitstellung einer Klassenbibliothek–– Beschreibung des Beschreibung des attributiertenattributierten

SzenengraphenSzenengraphen–– AnimationAnimation–– Virtuelle KameraVirtuelle Kamera–– BenutzerinteraktionBenutzerinteraktion–– ......

Page 8: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 8/93

AnwendungsbeispieleAnwendungsbeispiele

Page 9: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 9/93

AnwendungsbeispieleAnwendungsbeispiele

Page 10: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 10/93

AnwendungsbeispieleAnwendungsbeispiele

Page 11: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 11/93

AnwendungsbeispieleAnwendungsbeispiele

Page 12: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 12/93

Starten einerStarten einer Java3D Anwendung?Java3D Anwendung?

nn StandaloneStandalone–– Starten wie jede andere Java ApplikationStarten wie jede andere Java Applikation

nn AppletApplet–– Java Java PluginPlugin wird benötigt, dies installiert wird benötigt, dies installiert

ggf. auch Java3Dggf. auch Java3D–– Applet in eine WWWApplet in eine WWW--Seite einbindenSeite einbinden

Page 13: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 13/93

Nutzung Nutzung von Javavon Java

nn Nutzung des JavaNutzung des Java--InterpretersInterpretersjava myprogramjava myprogram

nn Nutzung des JavaNutzung des Java--AppletviewersAppletviewersappletviewer myprogappletviewer myprog.html.html

nn Nutzung des JavaNutzung des Java--Compilers:Compilers:javac myprogramjavac myprogram..javajava

Page 14: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 14/93

BeispielanwendungenBeispielanwendungen

nn Mitgelieferte Mitgelieferte Demo Demo sind im Verzeichnissind im Verzeichnis

… … // jdk1.2/jdk1.2/demosdemos/java3d/java3d

nn BeispieleBeispiele: : AppearanceTestAppearanceTestFourByFourFourByFour

Page 15: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 15/93

Java3D in Web und Java3D in Web und LiteraturLiteratur

nn SUNs SUNs Java3D Java3D Homepage Homepage http://http://javajava..sunsun..comcom//productsproducts//javajava--media/3Dmedia/3D

–– DownloadDownload

–– Java3D TutorialJava3D Tutorial

–– Java3D API Java3D API SpezifikationSpezifikation

Page 16: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 16/93

Java3D in Web und Java3D in Web und LiteraturLiteratur

nn J3D.orgJ3D.orghttp://http://wwwwww.j3d..j3d.org org

–– FAQsFAQs

–– Loader fLoader für ür unterschiedliche 3Dunterschiedliche 3D--FormateFormate

–– TutorialTutorial

Page 17: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 17/93

Java3D VRML Java3D VRML ViewerViewer

nn VRML Library VRML Library forfor Java3DJava3D

http://http://wwwwww.j3d..j3d.orgorg//utilitiesutilities//loadersloaders//vrmlvrml/web3d./web3d.htmlhtml

–– VRML VRML ViewerViewer–– VRML VRML LoaderLoader

nn Entstanden durch X3D Entstanden durch X3D WorkinggroupWorkinggroup

Page 18: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 18/93

Java Java ResourcenResourcen

nn Offizielle Offizielle Java HomepageJava Homepagehttp://java.sun.comhttp://java.sun.com

nn Downloads Downloads unter unter http://java.sun.com/products/http://java.sun.com/products/

nn Java TutorialJava Tutorialhttp://http://developerdeveloper..javajava..sunsun..comcom//developerdeveloper//infodocsinfodocs//

Page 19: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 19/93

Fragen und AnmerkungenFragen und Anmerkungen

Page 20: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 20/93

GrundlagenGrundlagen

nn GraphiksystemeGraphiksysteme

nn KoordinatensystemKoordinatensystem

nn SzenengraphSzenengraph

Page 21: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 21/93

GraphiksystemeGraphiksysteme

Page 22: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 22/93

VersionenVersionen

nn 1998:1998: Java3D Version 1.0 Java3D Version 1.0

nn 1999:1999: Java3D Version 1.1.3Java3D Version 1.1.3

nn 2000:2000: Java3D Version 1.2Java3D Version 1.2

nn 2001:2001: Java3D Version 1.2.1Java3D Version 1.2.1

Page 23: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 23/93

Das KoordinatensystemDas Koordinatensystem

nn Java3D benutzt ein rechthändiges Java3D benutzt ein rechthändiges KoordinatensystemKoordinatensystem

nn 3D 3D -- KoordinatenKoordinaten, z.B. , z.B. (2.0, 1.5, 7.21)(2.0, 1.5, 7.21)

x

y

z

Page 24: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 24/93

Globale und lokale Globale und lokale KoordinatensystemeKoordinatensysteme

nn HierarchieHierarchie vonvon KoordinatensystemenKoordinatensystemen–– BspBsp. Gabel. Gabel eines Gabelstaplerseines Gabelstaplers

»» Koordinaten derKoordinaten der GabelGabel bzglbzgl. Stapler. Stapler»» KoordinatenKoordinaten des Staplersdes Staplers bzglbzgl.. derder WeltWelt

nn Spitze der HierarchieSpitze der Hierarchie:: WeltkoordinatenWeltkoordinaten

Page 25: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 25/93

Der SzenengraphDer Szenengraph

nn StrukturStruktur der Szenenhierarchieder Szenenhierarchienn KantenKanten:: AbhängigkeitsrelationAbhängigkeitsrelationnn KnotenKnoten (( englengl. . Nodes Nodes ):):

–– GeometrienGeometrien–– TransformationenTransformationen–– MaterialeigenschaftenMaterialeigenschaften–– ......

Page 26: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 26/93

Szenengraphen in Java3D (1)Szenengraphen in Java3D (1)

nn Java3D wertet Szenengraph Java3D wertet Szenengraph Beschreibung in separaten, Beschreibung in separaten, asynchronen asynchronen ThreadsThreads ausaus–– RenderingRendering von Graphikvon Graphik–– „„RenderingRendering“ von Sound“ von Sound–– AnimationAnimation–– Management der EingabegeräteManagement der Eingabegeräte–– EventEvent Erzeugung (z.B. bei Kollisionen)Erzeugung (z.B. bei Kollisionen)

Page 27: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 27/93

RoadmapRoadmap

nn Aufbau einer einfachen Java3DAufbau einer einfachen Java3D--Anwendung mit einzelnen ObjektenAnwendung mit einzelnen Objekten

nn Gruppierung und TransformationGruppierung und Transformation

nn Aufbau einer komplexen Szene mit Aufbau einer komplexen Szene mit mehreren Objekten und mit mehreren Objekten und mit AnimationenAnimationen

Page 28: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 28/93

Eine Applikation in KürzeEine Applikation in Kürze

nn Konstruktion einer virtuellen Welt, in der alle Konstruktion einer virtuellen Welt, in der alle 3D Daten enthalten sind3D Daten enthalten sind

nn Auswahl einer Kamera, um die 3D Daten zu Auswahl einer Kamera, um die 3D Daten zu betrachtenbetrachten

nn Einfügen der 3D Inhalte in die SzeneEinfügen der 3D Inhalte in die Szene–– Hierarchische Anordnung der Objekte in einem Hierarchische Anordnung der Objekte in einem

SzenengraphenSzenengraphen–– Beschreibung der InteraktionenBeschreibung der Interaktionen

nn Einbetten in eine Java Einbetten in eine Java -- AnwendungAnwendung

Page 29: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 29/93

Aufbau eines SzenengraphenAufbau eines Szenengraphen

nn Erzeugen von KnotenErzeugen von KnotenShape3D myShape1 = Shape3D myShape1 = newnew Box();Box();Shape3D myShape2 = Shape3D myShape2 = newnew ConeCone();();

nn Gruppieren von KnotenGruppieren von KnotenBranchGroup myGroupBranchGroup myGroup = =

new BranchGroupnew BranchGroup( );( );myGroupmyGroup..addChildaddChild( ( myShapemyShape ););

Page 30: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 30/93

Utility KlassenUtility Klassen

nn UtilitityUtilitity Klassen bauen auf Java3D aufKlassen bauen auf Java3D aufnn Vereinfachen oft auftretende Vereinfachen oft auftretende

Operationen:Operationen:–– Aufbau einer virtuellen WeltAufbau einer virtuellen Welt–– Setzen der KameraSetzen der Kamera

SimpleUniverse mySimpleSimpleUniverse mySimple = = new SimpleUniversenew SimpleUniverse( ( myCanvasmyCanvas ););

mySimplemySimple..addBranchGraphaddBranchGraph((myBranchmyBranch););

Page 31: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 31/93

Simple Simple UniverseUniverse

Page 32: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 32/93

ViewingViewing--Modell in Java3DModell in Java3D

nn Die meisten Die meisten APIsAPIs transformieren die transformieren die SzeneSzene

nn Java3D transformiert das AugeJava3D transformiert das Augenn Der Inhalts Zweig der Szene wird nicht Der Inhalts Zweig der Szene wird nicht

verändert wenn sich der Betrachter verändert wenn sich der Betrachter bewegtbewegt

nn Saubere Trennung von physikalischer Saubere Trennung von physikalischer und virtueller Weltund virtueller Welt

Page 33: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 33/93

Terminologie (1)Terminologie (1)nn Virtual universeVirtual universe

–– Menge von SzenengraphenMenge von Szenengraphen–– Ein Universum pro ApplikationEin Universum pro Applikation

nn LocaleLocale–– Position im Universum, an der Position im Universum, an der

Szenengraph eingefügt wirdSzenengraph eingefügt wird

nn BranchgraphBranchgraph–– Ein Szenengraph im Ein Szenengraph im LocaleLocale

Page 34: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 34/93

Terminologie (2)Terminologie (2)

nn BranchgraphBranchgraph wird unterteilt inwird unterteilt in

–– Content branchContent branchz.B. Geometrien, z.B. Geometrien, Beleuchtung, ...Beleuchtung, ...

–– View branchView branchvirtuelle Kamera, virtuelle Kamera, i.d.R. eine Kamera i.d.R. eine Kamera pro Universum pro Universum

Page 35: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 35/93

Eine Applikation in Kürze IIEine Applikation in Kürze II

nn Konstruiere ein Konstruiere ein VirtualVirtual UniverseUniverse, das alle 3D , das alle 3D Daten enthalten wirdDaten enthalten wird

nn Wähle ein Wähle ein ViewView, um zu beschreiben wie die , um zu beschreiben wie die 3D Daten betrachtet werden3D Daten betrachtet werden

nn Konstruiere einen Konstruiere einen Content BranchContent Branch um die um die 3D Inhalte der Szene zu beschreiben3D Inhalte der Szene zu beschreiben–– Plaziere diesen Zweig an ein Plaziere diesen Zweig an ein LocaleLocale–– Mehrere Zweige an verschiedenen Mehrere Zweige an verschiedenen LocalesLocales sind sind

möglichmöglich

Page 36: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 36/93

Einbetten in eine Java Einbetten in eine Java Anwendung IAnwendung I

nn Folgende Schritte sind notwendig:Folgende Schritte sind notwendig:

1.1. Erzeugen eines Java AWT Erzeugen eines Java AWT FramesFrames

2.2. Setzen eine Java AWT LayoutsSetzen eine Java AWT Layouts

3.3. Erzeugen eines Canvas3DErzeugen eines Canvas3D

4.4. Einfügen des Canvas3DEinfügen des Canvas3D

Page 37: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 37/93

Einbetten in eine Java Einbetten in eine Java AnwendungAnwendung

public static void mainpublic static void main( String[] ( String[] argsargs ) {) {Frame Frame frameframe = = newnew Frame( );Frame( );frameframe..setSizesetSize( 640, 480 );( 640, 480 );frameframe..setLayoutsetLayout( ( new BorderLayoutnew BorderLayout( ) );( ) );Canvas3D Canvas3D canvascanvas = = newnew Canvas3D( null );Canvas3D( null );frameframe..addadd( "Center", ( "Center", canvascanvas ););SimpleUniverse univSimpleUniverse univ = =

new SimpleUniversenew SimpleUniverse( ( canvascanvas ););BranchGroup sceneBranchGroup scene = = createSceneGraphcreateSceneGraph();();scenescene..compilecompile( );( );univuniv..addBranchGraphaddBranchGraph( ( scenescene ););

frameframe..showshow( );( );}}

Page 38: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 38/93

Benötigte Java Benötigte Java PackagesPackages

nn Java Java PackagesPackagesimport javaimport java..awtawt.*;.*;

nn Java3D Java3D PackagesPackagesimport javaximport javax.media.j3d.*;.media.j3d.*;import javaximport javax..vecmathvecmath.*;.*;

nn Java3D Utility Java3D Utility PackagesPackagesimport comimport com..sunsun.j3d..j3d.utilsutils..universeuniverse.*;.*;import comimport com..sunsun.j3d..j3d.utilsutils..geometrygeometry.*;.*;

Page 39: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 39/93

RückblickRückblick

nn Darstellung von Graphik PrimitivenDarstellung von Graphik Primitiven–– Beispiel 1: Beispiel 1: BoxBox–– Beispiel 2: Beispiel 2: ConeCone

nn Einbettung in eine JavaEinbettung in eine Java--ApplikationApplikation

Page 40: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 40/93

3D3D--ModelleModelle

nn Modelle sind Beschreibungen von ObjektenModelle sind Beschreibungen von Objektennn Ein Shape3D Ein Shape3D -- Knoten besteht ausKnoten besteht aus

–– GeometrieGeometrie

–– AppearanceAppearance (Erscheinen)(Erscheinen)Shape3D( Shape3D( Geometry geometryGeometry geometry, ,

Appearance appearanceAppearance appearance ))

nn Geometrie kann aus mehreren Teilen Geometrie kann aus mehreren Teilen bestehenbestehen

nn AppearanceAppearance enthält verschiedene Attribute, enthält verschiedene Attribute, die beschreiben wie die Geometrie gezeichnet die beschreiben wie die Geometrie gezeichnet wirdwird

Page 41: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 41/93

Elemente einer GeometrieElemente einer Geometrie

nn KoordinatenKoordinaten: : Position der Knoten im RaumPosition der Knoten im Raum

nn NormalenNormalen: : Nach außen orientierte Normale pro KnotenNach außen orientierte Normale pro Knoten

nn FarbenFarben: : Farbe pro KnotenFarbe pro Knoten

nn TexturTextur--KoordinatenKoordinaten: : TexelTexel Position im KnotenPosition im Knoten

Page 42: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 42/93

GeometryArrayGeometryArray

nn GeometryArrayGeometryArray erbt von erbt von GeometryGeometrynn Ein Ein GeometryArrayGeometryArray Objekt hat vier Objekt hat vier

BasistypenBasistypen–– PunktePunkte–– LinienLinien–– DreieckeDreiecke–– ViereckeVierecke

nn GeometryArrayGeometryArray bietet bietet setset und und getgetMethodenMethoden

nn Es gibt IndexEs gibt Index-- und “Strip”und “Strip”--VersionenVersionen

Page 43: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 43/93

GeometryArrayGeometryArray

nn GeometryArrayGeometryArray ist eine Basisklasse, ist eine Basisklasse,

konkrete Ausführungenkonkrete Ausführungen

–– LineArrayLineArray, , PointArrayPointArray, , QuadArrayQuadArray, ,

TriangleArrayTriangleArray

nn GeometryStripArrayGeometryStripArray (mit Erben (mit Erben

TriangleStripArrayTriangleStripArray, etc.), etc.)

nn IndexedGeometryArrayIndexedGeometryArray (mit Erben (mit Erben

IndexedTriangleArrayIndexedTriangleArray, etc.), etc.)

Page 44: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 44/93

Modelle sind facettiertModelle sind facettiert

nn Ideale Dreiecke und ViereckeIdeale Dreiecke und Vierecke

nn Einseitige PrimitiveEinseitige Primitivenn Reihenfolge der Eckpunkte bestimmt Reihenfolge der Eckpunkte bestimmt

die Flächennormaledie Flächennormalenn Gegen den Uhrzeigersinn => nach Gegen den Uhrzeigersinn => nach

außen gerichtetaußen gerichtet(Beachtung der rechten Hand)(Beachtung der rechten Hand)

Page 45: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 45/93

Beispiel eines WürfelsBeispiel eines Würfels

class class mymyCube extendsCube extends QuadArrayQuadArray { { private float[]private float[] vertsverts = {= { ... ... }; }; private float[] private float[] normalsnormals = { ... };= { ... };private float[]private float[] colorscolors = {= { ... ... };};myCubemyCube() {() {

super(super( 2424,,QuadArrayQuadArray.COORDINATES |.COORDINATES |QuadArrayQuadArray.NORMALS |.NORMALS |QuadArrayQuadArray.COLOR_3);.COLOR_3);

setCoordinatessetCoordinates(0,(0, vertsverts););setsetNormalsNormals(0,(0, vertsverts););setColorssetColors(0,(0, colorscolors); );

}}

Page 46: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 46/93

Beispiel eines Beispiel eines WüfelsWüfels

private float[]private float[] vertsverts = = {{

// front face// front face1.0f, 1.0f, --1.0f, 1.0f1.0f, 1.0f,,1.0f, 1.0f, 1.0f,1.0f, 1.0f, 1.0f,--1.0f, 1.0f, 1.0f,1.0f, 1.0f, 1.0f,--1.0f, 1.0f, --1.0f, 1.0f,1.0f, 1.0f,......

}}

Page 47: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 47/93

Normalen eines WürfelsNormalen eines Würfels

private float[] private float[] normalsnormals = = {{

// Front Face// Front Face0.0f, 0.0f, 1.0f,0.0f, 0.0f, 1.0f,0.0f, 0.0f, 1.0f,0.0f, 0.0f, 1.0f,0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f,0.0f, 1.0f,......

}}

Page 48: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 48/93

Beispiel eines WürfelsBeispiel eines Würfels

class class mymyCube extendsCube extends QuadArrayQuadArray { { private float[]private float[] vertsverts = {= { ... ... }; }; private float[] private float[] normalsnormals = { ... };= { ... };private float[]private float[] colorscolors = {= { ... ... };};myCubemyCube() {() {

super(super( 2424,,QuadArrayQuadArray.COORDINATES |.COORDINATES |QuadArrayQuadArray.NORMALS |.NORMALS |QuadArrayQuadArray.COLOR_3);.COLOR_3);

setCoordinatessetCoordinates(0,(0, vertsverts););setsetNormalsNormals(0,(0, vertsverts););setColorssetColors(0,(0, colorscolors); );

}}

Page 49: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 49/93

AppearanceAppearance

nn Kontrolle über den Kontrolle über den RenderingRendering--ProzeßProzeß–– FarbeFarbe–– TransparenzTransparenz–– BeleuchtungsmodellBeleuchtungsmodell–– LinieneigenschaftenLinieneigenschaften–– Und viele andere!Und viele andere!

nn Alle Eigenschaften sind in der Alle Eigenschaften sind in der AppearanceAppearance--Klasse und ihren Klasse und ihren Komponenten enthaltenKomponenten enthalten

Page 50: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 50/93

Beispiel für verschiedene Beispiel für verschiedene AppearanceAppearance

Page 51: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 51/93

FarbattributeFarbattribute

nn Ein Ein ColoringAttributColoringAttribut node componentnode componentObjekt regeltObjekt regelt–– Farbe (wenn kein Beleuchtungsmodell Farbe (wenn kein Beleuchtungsmodell

verwendet wird)verwendet wird)–– BeleuchtungsmodellBeleuchtungsmodell

nn Farbattribute werden verwendet wenn kein Farbattribute werden verwendet wenn kein Beleuchtungsmodell verwendet wirdBeleuchtungsmodell verwendet wird–– Emittierende Punkte, Linien, Polygone, etc.Emittierende Punkte, Linien, Polygone, etc.

Page 52: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 52/93

FarbattributeFarbattribute

nn Konstruktor Konstruktor der Klasse der Klasse

public public ColoringAttributesColoringAttributes((float red,float red, float green,float green,float blue,float blue, int shadeModelint shadeModel))

nn Über Über setsetColoringAttributesColoringAttributes und und ggetetColoringAttributesColoringAttributes der Klasse der Klasse AppearanceAppearance werden die Farbattribute werden die Farbattribute gesetzt.gesetzt.

Page 53: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 53/93

MaterialeigenschaftenMaterialeigenschaften

nn Ein Ein MaterialMaterial node componentnode component Objekt Objekt regeltregelt–– Ambiente, emittierte, diffuse und Ambiente, emittierte, diffuse und spekulärespekuläre

FarbenFarben–– GlanzlichtGlanzlicht--FaktorFaktor

nn Materialeigenschaften werden verwendet, Materialeigenschaften werden verwendet, wenn das Modell beleuchtet istwenn das Modell beleuchtet ist–– Die meisten SzenenDie meisten Szenen--ModelleModelle–– Gilt vor den FarbattributenGilt vor den Farbattributen

Page 54: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 54/93

MaterialMaterial

nn KonstruktorKonstruktor der Klasse der Klasse MaterialMaterial::

Material( Color3f Material( Color3f ambientColorambientColor, , Color3f Color3f emissiveColoremissiveColor,,Color3f Color3f diffuseColordiffuseColor,,Color3f Color3f specularColorspecularColor,,float float shininessshininess))

nn Über die Methoden Über die Methoden setMaterialsetMaterial und und getMaterialgetMaterial der der AppearanceAppearance werden die werden die Materialeigenschaften gesetztMaterialeigenschaften gesetzt

Page 55: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 55/93

Andere EigenschaftenAndere Eigenschaften

nn Das Das TransparencyAttributesTransparencyAttributesObjekt steuert die Objekt steuert die TranzparenzTranzparenz (0.0(0.0--1.0)1.0)

nn PointAttributesPointAttributes und und LineAttributesLineAttributesenthalten Punktgröße und Liniendickeenthalten Punktgröße und Liniendicke

nn PolygonAttributesPolygonAttributes regeln „regeln „cullingculling“ und “ und Fülleigenschaften (Punkt, Linien, Fläche)Fülleigenschaften (Punkt, Linien, Fläche)

nn RenderingAttributesRenderingAttributes steuern im steuern im DepthDepth--und Alphaund Alpha--BufferBuffer

Page 56: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 56/93

TexturenTexturen

nn Java 3D hat zwei Typen von TexturenJava 3D hat zwei Typen von Texturen–– Texture2D für BilderTexture2D für Bilder–– Texture3D für VolumentexturenTexture3D für Volumentexturen

nn Beide Typen beinhaltenBeide Typen beinhalten–– TexturdatenTexturdaten–– FiltermodiFiltermodi–– WrappingmodiWrappingmodi–– Berandungsfarbe Berandungsfarbe

Page 57: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 57/93

TexturenTexturen

TextureLoaderTextureLoader loader = new loader = new TextureLoaderTextureLoader("stripe.("stripe.jpgjpg", this);", this);

ImageComponent2D image =ImageComponent2D image =loader.loader.getImagegetImage();();

Texture2D texture = new Texture2D();Texture2D texture = new Texture2D();texture.texture.setImagesetImage(0, image);(0, image);Appearance appear = new Appearance();Appearance appear = new Appearance();appear.appear.setTexturesetTexture(texture);(texture);

Page 58: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 58/93

Weiteres VorgehenWeiteres Vorgehen

nn Bis jetzt:Bis jetzt:Aufbau einzelner 3D Objekte Aufbau einzelner 3D Objekte

nn Ab jetzt:Ab jetzt:Integration mehrerer 3D Integration mehrerer 3D ObjekteObjekte–– Gruppierung von ObjektenGruppierung von Objekten–– Transformation von ObjektenTransformation von Objekten–– Bewegung von ObjektenBewegung von Objekten–– LichtquellenLichtquellen

Page 59: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 59/93

Live Live NodesNodes

nn Branch graphBranch graph, der einem , der einem LocaleLocalehinzugefügt wird heißt hinzugefügt wird heißt livelive, d.h. er , d.h. er kann dargestellt werdenkann dargestellt werden

BranchGroup myBranchBranchGroup myBranch = = new new BranchGroupBranchGroup( );( );myBranchmyBranch..addChildaddChild( ( myShapemyShape ););myLocalemyLocale..addBranchGraphaddBranchGraph( ( myBranchmyBranch ););

nn boolean isLiveboolean isLive()()

Page 60: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 60/93

Compiled NodesCompiled Nodes

nn BranchGroupBranchGroup kann kompiliert werdenkann kompiliert werdenvoid compilevoid compile();();

nn Beachte: Beachte: compilecompile bevor livebevor live

nn CapabilitiesCapabilities geben an, was in einem geben an, was in einem Szenengraph noch gelesen und verändert Szenengraph noch gelesen und verändert werden darf, nachdem der Szenengraph werden darf, nachdem der Szenengraph compiledcompiled oder live istoder live ist

nn CapabilitiesCapabilities wirken auf Optimierung wirken auf Optimierung

Page 61: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 61/93

CapabilitiesCapabilities (1)(1)

nn Methoden für Methoden für SceneGraphObjectSceneGraphObjectvoid setCapabilityvoid setCapability( ( int bitint bit ) ) void clearCapabilityvoid clearCapability( ( int bitint bit ) ) boolean getCapabilityboolean getCapability( ( int bitint bit ) )

nn CapabilitiesCapabilities gibt es für jeden Knotengibt es für jeden Knoten

nn In jedem Knoten gibt es In jedem Knoten gibt es CapabilitiesCapabilities für die für die AttributeAttribute

nn Knoten erben die Knoten erben die CapabilitiesCapabilities der Vaterklasseder Vaterklasse

Page 62: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 62/93

CapabilitiesCapabilities (2)(2)

nn Beispiele von Shape3D:Beispiele von Shape3D:–– ALLOW_APPEARANCE_READ ALLOW_APPEARANCE_READ –– ALLOW_APPEARANCE_WRITE ALLOW_APPEARANCE_WRITE –– ALLOW_GEOMETRY_READ ALLOW_GEOMETRY_READ –– ALLOW_GEOMETRY_WRITE ALLOW_GEOMETRY_WRITE

myShapemyShape..setCapabilitysetCapability( ( Shape3D.ALLOW_APPEARANCE_WRITE );Shape3D.ALLOW_APPEARANCE_WRITE );

Page 63: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 63/93

Gruppen in Java 3DGruppen in Java 3D

nn Unterschiedliche TypenUnterschiedliche Typen–– GroupGroup–– BranchGroupBranchGroup–– OrderedGroupOrderedGroup / / DecalGroupDecalGroup–– SharedGroupSharedGroup–– SwitchSwitch–– TransformGroupTransformGroup

nn Alle Gruppen haben KinderAlle Gruppen haben Kinder–– Modelle, Lichtquellen, Geräusche, VerhaltenModelle, Lichtquellen, Geräusche, Verhalten

Page 64: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 64/93

GroupGroup

nn Die Die GroupGroup Klasse ist der allgemeinste Klasse ist der allgemeinste der Gruppen Knotender Gruppen Knoten–– Hat Genau einen VaterHat Genau einen Vater–– Beliebig viele KinderBeliebig viele Kinder

nn Man Kinder anfügen, einfügen, Man Kinder anfügen, einfügen, löschen und auslesenlöschen und auslesen

nn Die Die RenderingRendering--Reihenfolge wird Reihenfolge wird normalerweise von Java3D bestimmtnormalerweise von Java3D bestimmt

Page 65: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 65/93

BranchGroupBranchGroup

nn Ein Ein BranchGroupBranchGroup Objekt ist ein Objekt ist ein Teilbaum des SzenengraphenTeilbaum des Szenengraphen–– Kann an ein Kann an ein LocaleLocale angehängt werdenangehängt werden–– Kann Kann compiledcompiled werdenwerden–– Kann als Kind einer anderen Gruppe Kann als Kind einer anderen Gruppe

verwendet werdenverwendet werden–– Kann zur Laufzeit verschoben oder Kann zur Laufzeit verschoben oder

gelöscht werdengelöscht werden

Page 66: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 66/93

OrderedOrdered / / DecalGroupDecalGroup

nn Ein Ein OrderedGroupOrderedGroup Objekt garantiert, Objekt garantiert, daßdaß die Kinder in der vorgegebenen die Kinder in der vorgegebenen Reihenfolge bearbeitet werdenReihenfolge bearbeitet werden

nn Ein Ein DecalGroupDecalGroup Objekt ist für den Objekt ist für den speziellen Fall von Objekten auf einem speziellen Fall von Objekten auf einem Hintergrund gedachtHintergrund gedacht–– Das HintergrundDas Hintergrund--Objekt ist Objekt ist

vorgeschriebenvorgeschrieben

Page 67: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 67/93

SwitchSwitch

nn Ein Ein SwitchSwitch Objekt erlaubt die Objekt erlaubt die Auswahl der zu bearbeitenden KinderAuswahl der zu bearbeitenden Kinder

nn Es wird keine Reihenfolge vorgegebenEs wird keine Reihenfolge vorgegeben

Page 68: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 68/93

TransformationTransformation

nn Alle Modelle werden bezüglich der Alle Modelle werden bezüglich der Weltkoordinaten Weltkoordinaten plaziertplaziert

nn Ein Ein TransformGroupTransformGroup Objekt erlaubt Objekt erlaubt die Verwendung eines neuen die Verwendung eines neuen KoordinatenKoordinaten--systems relativ zum Vatersystems relativ zum Vater

nn Verändert man die Verändert man die TransformGroupTransformGroup, so bewegen sich , so bewegen sich auch die Modelle in der Gruppeauch die Modelle in der Gruppe

Page 69: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 69/93

TransformGroupTransformGroup

nn Transformationen sind Transformationen sind TranslationTranslation, , Rotation und SkalierungRotation und Skalierung

nn Transformationen akkumulieren sich Transformationen akkumulieren sich bei der bei der TraversierungTraversierung des des SzenengraphenSzenengraphen

nn Das ergibt die Das ergibt die Composite Modelling Composite Modelling TransformTransform (CMT)(CMT)

nn Die Transformationen tiefer im Graph Die Transformationen tiefer im Graph werden zuerst ausgeführtwerden zuerst ausgeführt

Page 70: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 70/93

Transform3DTransform3D

nn Ein Transform3D Objekt beschreibt die Ein Transform3D Objekt beschreibt die Transformation einer Transformation einer TTransformGroupransformGroup

nn Dargestellt als 4x4 Double MatrixDargestellt als 4x4 Double Matrixnn MußMuß allerdings affin sein (keine allerdings affin sein (keine

perspektivischen Transformationen)perspektivischen Transformationen)

nn Beispiel:Beispiel:Transform3D t = Transform3D t = newnew Transform3D();Transform3D();t.t.setset((scalescale, , newnew Vector3d(Vector3d(xposxpos, , yposypos, ,

0.0));0.0));

Page 71: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 71/93

SharedGroupsSharedGroups

nn Ein Ein SharedGroupSharedGroup Objekt dient zur Objekt dient zur Wiederverwendung von Teilen des Wiederverwendung von Teilen des Szenengraphen an mehreren StellenSzenengraphen an mehreren Stellen–– Wird nie direkt in den Szenengraph Wird nie direkt in den Szenengraph

eingefügteingefügt–– Wird über den Link Knoten Wird über den Link Knoten referenziertreferenziert

nn Veränderungen der Veränderungen der SharedGroupSharedGroupverändern alle Referenzenverändern alle Referenzen

nn Kann Kann compiledcompiled werdenwerden

Page 72: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 72/93

Beispiel eines SzenengraphBeispiel eines Szenengraph

Page 73: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 73/93

VerhaltenVerhalten

nn ProgrammierbarkeitProgrammierbarkeit–– Verhalten sind JavaVerhalten sind Java--MethodenMethoden

nn EffizienzEffizienz–– Java 3D führt Verhalten nur aus wenn nötigJava 3D führt Verhalten nur aus wenn nötig

nn KompositionKomposition–– Verhalten werden mir Objekten verbundenVerhalten werden mir Objekten verbunden–– Verhalten können nebeneinander existieren und Verhalten können nebeneinander existieren und

dynamisch verändert werdendynamisch verändert werden

Page 74: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 74/93

VerhaltenVerhalten

nn Jedes Verhalten enthält:Jedes Verhalten enthält:–– Code zur Ausführung in einer Code zur Ausführung in einer processStimulusprocessStimulus MethodeMethode

–– „„WakeupWakeup“ Bedingungen, um zu steuern “ Bedingungen, um zu steuern

wann der Code durchgeführt wirdwann der Code durchgeführt wird

–– BoundingBounding Information für die AusführungInformation für die Ausführung

Page 75: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 75/93

Verhalten Verhalten -- BoundsBounds

nn Verhalten werden nur durchgeführt, wenn Verhalten werden nur durchgeführt, wenn sich Sichtradius vom Betrachter und sich Sichtradius vom Betrachter und BoundingBounding--Objekt des Verhaltens schneidenObjekt des Verhaltens schneiden

nn BoundingBounding--ObjektObjekt–– Kugel, Würfel, Kugel, Würfel, PolyederPolyeder, etc, etc–– Default: Kein Default: Kein BoundingBounding Objekt (deswegen auch Objekt (deswegen auch

keine Durchführung des Verhaltens)keine Durchführung des Verhaltens)–– Die Position des Verhaltens im Szenengraph Die Position des Verhaltens im Szenengraph

bestimmt den Ursprung des bestimmt den Ursprung des BoundingBounding--ObjektsObjekts

Page 76: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 76/93

Verhalten Verhalten -- WakeupWakeup

nn Ein Verhalten wird nur durchgeführt, Ein Verhalten wird nur durchgeführt, wenn die wenn die WakeupWakeup--Kriterien erfüllt sindKriterien erfüllt sind

–– Ein gewisse Zeit ist verstrichenEin gewisse Zeit ist verstrichen–– Ein Ein EventEvent wird generiertwird generiert–– Transformation wird durchgeführtTransformation wird durchgeführt–– Kollision oder NäheKollision oder Nähe

nn Kriterien können durch logische Kriterien können durch logische Operationen verbunden werdenOperationen verbunden werden

Page 77: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 77/93

Beispiel eines Beispiel eines BehaviorsBehaviorspublic classpublic class MorphingBehaviorMorphingBehavior extendsextends BehaviorBehavior{{WakeupOnElapsedFramesWakeupOnElapsedFrames w = w =

newnew WakeupOnElapsedFramesWakeupOnElapsedFrames(0); (0);

public voidpublic void initializeinitialize() {() {alpha.alpha.setStartTimesetStartTime((

System.System.currentTimeMilliscurrentTimeMillis());());wakeupOnwakeupOn(w); (w);

} }

public voidpublic void processStimulusprocessStimulus(Enumeration (Enumeration criteria) {} criteria) {} public public MorphingBehaviorMorphingBehavior(Alpha a, Morph m) {}(Alpha a, Morph m) {}

}}

Page 78: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 78/93

Rotation Rotation InterpolatorInterpolator

Alpha Alpha spinAlphaspinAlpha = = newnew Alpha( Alpha( --1,4000 );1,4000 );

RotationInterpolator spinnerRotationInterpolator spinner ==new RotationInterpolatornew RotationInterpolator( (

spinAlphaspinAlpha, , transtrans ););spinnerspinner..setSchedulingBoundssetSchedulingBounds((

new BoundingSpherenew BoundingSphere( ( newnew Point3d( ), 1000.0 ) );Point3d( ), 1000.0 ) );

transtrans..addChildaddChild( ( spinnerspinner ););

Page 79: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 79/93

Vorgefertigte VerhaltenVorgefertigte Verhalten

nn InterpolatorenInterpolatoren–– AlphaAlpha–– RotationRotation–– PositionPosition–– PfadPfad

nn BillboardsBillboardsnn Level of Detail KnotenLevel of Detail Knotennn MousebehaviorMousebehavior

Page 80: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 80/93

MouseBehaviorMouseBehavior

TransformGroup objTransTransformGroup objTrans = = new TransformGroupnew TransformGroup();();

MouseRotate behaviorMouseRotate behavior = = new MouseRotatenew MouseRotate();();behaviorbehavior..setTransformGroupsetTransformGroup((objTransobjTrans););objTransobjTrans..addChildaddChild((behaviorbehavior););behaviorbehavior..setSchedulingBoundssetSchedulingBounds((boundsbounds););

MouseZoomMouseZoom behavior2 = behavior2 = new MouseZoomnew MouseZoom();();MouseTranslateMouseTranslate behavior3 = behavior3 =

new MouseTranslatenew MouseTranslate();();

Page 81: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 81/93

LichtquellenLichtquellen

nn Java3D bietet folgenden TypenJava3D bietet folgenden Typen–– Ambientes Licht:Ambientes Licht: AmbientLightAmbientLight–– Gerichtetes Licht:Gerichtetes Licht: DirectionalLightDirectionalLight–– Punktlichtquelle:Punktlichtquelle: PointLight PointLight –– SpotSpot

nn Attribute von allen LichtquellenAttribute von allen Lichtquellen–– Status (aus/an)Status (aus/an)–– FarbeFarbe–– BoundingBounding--VolumenVolumen

Page 82: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 82/93

Definition von LichtquellenDefinition von Lichtquellen

nn Ambientes Licht:Ambientes Licht:AmbientLightAmbientLight(( Color3f Color3f colorcolor ) )

nn Gerichtetes Licht:Gerichtetes Licht:DirectionalLightDirectionalLight((boolean lightOnboolean lightOn,,Color3f Color3f colorcolor, Vector3f direction) , Vector3f direction)

nn Punktlichtquelle:Punktlichtquelle:PointLightPointLight(Color3f(Color3f colorcolor, Point3f , Point3f position, Point3f attenuation)position, Point3f attenuation)

Page 83: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 83/93

Weitere Java3D FeaturesWeitere Java3D Features

nn Eingabegeräte und Eingabegeräte und PickingPicking

nn Einsatz von unterschiedlicher Einsatz von unterschiedlicher LoaderLoader

nn Einsatz von 3D SoundEinsatz von 3D Sound

Page 84: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 84/93

EingabegeräteEingabegeräte

nn Zugriff auf EchtzeitZugriff auf Echtzeit--EingabegeräteEingabegeräte–– Joystick, 6DOF Geräte, Knöpfe und ReglerJoystick, 6DOF Geräte, Knöpfe und Regler

nn Einfache Integration in bestehende Einfache Integration in bestehende ApplikationenApplikationen

nn Eingabegeräte können virtuell seinEingabegeräte können virtuell sein

nn Alle Eingabegeräte sind Sensoren (für Alle Eingabegeräte sind Sensoren (für physikalische oder virtuelle Größen)physikalische oder virtuelle Größen)

Page 85: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 85/93

PickingPicking

nn Java3D bietet Möglichkeiten zur Java3D bietet Möglichkeiten zur Auswahl von Objekten des Auswahl von Objekten des SzenegraphenSzenegraphen

nn Ein Ein PickShapePickShape wird mit wird mit BranchGroupsBranchGroups geschnittengeschnitten

nn BranchGroupsBranchGroups enthalten Methoden enthalten Methoden zur Auswertung des zur Auswertung des PickingPicking

nn Verschiedene Kriterien bei der AuswahlVerschiedene Kriterien bei der Auswahl

Page 86: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 86/93

PickingPicking

Page 87: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 87/93

Page 88: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 88/93

HintergrundHintergrund

nn Der Background Knoten bestimmt den Der Background Knoten bestimmt den Hintergrund der Szene und besteht ausHintergrund der Szene und besteht aus

–– Konstanter FarbeKonstanter Farbe–– BildBild–– GeometrieGeometrie–– BoundingBounding--InformationenInformationen

Page 89: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 89/93

Beispiel eines HintergrundsBeispiel eines Hintergrunds

Page 90: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 90/93

HintergrundHintergrund

import comimport com..sunsun.j3d..j3d.utilsutils.image..image.TextureLoaderTextureLoader;;BoundingSphere boundsBoundingSphere bounds ==

new BoundingSpherenew BoundingSphere((newnewPoint3d(0.0,0.0,0.0), 100.0);Point3d(0.0,0.0,0.0), 100.0);

// Set up // Set up the backgroundthe backgroundTextureLoader bgTextureTextureLoader bgTexture = = new new TextureLoaderTextureLoader((bgImagebgImage, , thisthis););Background Background bgbg = = newnewBackground(Background(bgTexturebgTexture..getImagegetImage());());bgbg..setApplicationBoundssetApplicationBounds((boundsbounds););objRootobjRoot..addChildaddChild((bgbg););

Page 91: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 91/93

3D Sound und Geräusche3D Sound und Geräusche

nn Java3D unterstützt Audio Java3D unterstützt Audio ((CapabilitiesCapabilities beachten!)beachten!)

BackgroundSoundBackgroundSound sound1 = sound1 = new BackgroundSoundnew BackgroundSound();();

PointSound PointSound sound2 = sound2 = new PointSoundnew PointSound();();BoundingSphere soundBoundsBoundingSphere soundBounds = = new BoundingSpherenew BoundingSphere( ( newnew Point3d(0.0,0.0,0.0), 100.0); Point3d(0.0,0.0,0.0), 100.0);

sound1.sound1.setSchedulingBoundssetSchedulingBounds((soundBoundssoundBounds); ); objTransobjTrans..addChildaddChild(sound1);(sound1);

Page 92: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 92/93

ZusammenfassungZusammenfassung

nn GrundlagenGrundlagen

nn Virtuelle Welt und Physikalische WeltVirtuelle Welt und Physikalische Welt

nn ModelleModelle

nn Gruppierung und TransformationGruppierung und Transformation

nn VerhaltenVerhalten

nn LichtquellenLichtquellen

Page 93: Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul Grimm, grimm@ agc.fhg.de 3/9 Überblick nEinführung in Java 3D nBenutzung nDokumentation

April 2002 Einführung in Java3D, Paul Grimm, [email protected] 93/93

AusblickAusblick

nn Neue Features von Java3D Version 1.2Neue Features von Java3D Version 1.2–– Offscreen RenderingOffscreen Rendering–– Model Model clipping clipping planeplane–– OrientedShape3DOrientedShape3D--NodeNode–– Multiple Multiple Geometries Geometries in einem Shape3D in einem Shape3D

NodeNode–– Multitexture Multitexture und Textur Farbtabellenund Textur Farbtabellen–– Neue Neue Picking Picking MechanismenMechanismen