Einführung in Java3D - gdv.informatik.uni-frankfurt.de · April 2002 Einführung in Java3D, Paul...

Preview:

Citation preview

Einführung inEinführung inJava3DJava3D

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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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?

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 3/93

ÜberblickÜberblick

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

–– SzenengraphSzenengraph–– AnimationenAnimationen–– InteraktionInteraktion

nn AusblickAusblick

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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)

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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)

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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–– ......

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 8/93

AnwendungsbeispieleAnwendungsbeispiele

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 9/93

AnwendungsbeispieleAnwendungsbeispiele

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 10/93

AnwendungsbeispieleAnwendungsbeispiele

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 11/93

AnwendungsbeispieleAnwendungsbeispiele

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 14/93

BeispielanwendungenBeispielanwendungen

nn Mitgelieferte Mitgelieferte Demo Demo sind im Verzeichnissind im Verzeichnis

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

nn BeispieleBeispiele: : AppearanceTestAppearanceTestFourByFourFourByFour

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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//

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 19/93

Fragen und AnmerkungenFragen und Anmerkungen

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 20/93

GrundlagenGrundlagen

nn GraphiksystemeGraphiksysteme

nn KoordinatensystemKoordinatensystem

nn SzenengraphSzenengraph

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 21/93

GraphiksystemeGraphiksysteme

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 25/93

Der SzenengraphDer Szenengraph

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

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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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)

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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 ););

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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););

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 31/93

Simple Simple UniverseUniverse

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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( );( );}}

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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.*;.*;

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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.)

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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)

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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); );

}}

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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,......

}}

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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,......

}}

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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); );

}}

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 50/93

Beispiel für verschiedene Beispiel für verschiedene AppearanceAppearance

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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.

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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.

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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);

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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()()

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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 );

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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));

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 72/93

Beispiel eines SzenengraphBeispiel eines Szenengraph

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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) {}

}}

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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 ););

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 79/93

Vorgefertigte VerhaltenVorgefertigte Verhalten

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

nn BillboardsBillboardsnn Level of Detail KnotenLevel of Detail Knotennn MousebehaviorMousebehavior

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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();();

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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)

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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)

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 86/93

PickingPicking

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 87/93

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 89/93

Beispiel eines HintergrundsBeispiel eines Hintergrunds

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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););

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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);

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

April 2002 Einführung in Java3D, Paul Grimm, grimm@agc.fhg.de 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

Recommended