Java3D-Einführung Einführung - Was ist Java3D? - Java Package für interaktive 3D Grafik - High-level 3D Grafik API - Programmieren von interaktiven Anwendungen mit dreidimensionalen Inhalten - Nahtlose Integration in Java - Applet-fähig - Standalone-Anwendungen ebenso möglich Computergrafik - SS 2004 Java3D-1 Java3D-Einführung Was macht Java3D? - Bilderzeugung: – Szenenmanagement – Hidden Surface Berechnung - Benutzerinteraktion - Plattformunabhängiges High-Level API - Implementierung für verschiedene Low-Level APIs (Open GL, DirectX) Computergrafik - SS 2004 Java3D-2 Java3D-Einführung Was macht Java3D? - Bereitstellung einer Klassenbibliothek – Beschreibung des attributierten Szenengraphen – Animation – Virtuelle Kamera – Benutzerinteraktion – ... Computergrafik - SS 2004 Java3D-3 Java3D-Einführung Starten einer Java3D Anwendung - Standalone – Starten wie jede andere Java Applikation - Applet – Java Plugin wird benötigt, dies installiert ggf. auch Java3D – Applet in eine WWW-Seite einbinden Computergrafik - SS 2004 Java3D-4 Java3D-Einführung Nutzung von Java - Nutzung des Java-Interpreters java myprogram - Nutzung des Java-Appletviewers appletviewer myprog.html - Nutzung eines beliebigen Internet-Browsers Öffnen der Seite myprog.html im Browser - Nutzung des Java-Compilers: javac myprogram.java Computergrafik - SS 2004 Java3D-5 Java3D-Einführung Beispielanwendungen - Java3D Demos von Sun http://java.sun.com/products/java-media/3D/demos/ - xj3d Java3D VRML Loader Installiert auf den HTW-Rechnern - Beispiele: HelloJava3D YoyoApp LoaderDemo Computergrafik - SS 2004 Java3D-6 Java3D-Einführung Java3D in Web und Literatur - SUNs Java3D Homepage http://java.sun.com/products/java-media/3D – Download – Java3D Tutorial – Java3D API Spezifikation - J3D.org http://www.j3d.org – FAQs – Loader für unterschiedliche 3D-Formate – Tutorial Computergrafik - SS 2004 Java3D-7 Java3D-Einführung Java3D VRML Viewer - XJ3D http://www.xj3d.org – Installiert auf den HTW-Rechnern – VRML Loader - VRML Library for Java3D http://www.j3d.org/utilities/loaders/vrml/web3d.html – VRML Viewer – VRML Loader - Cortona VRML Viewer (installiert auf HTW-Rechnern) – http://www.parallelgraphics.com/products/cortona Computergrafik - SS 2004 Java3D-8 Java3D-Einführung Erstellung von Java3D-Szenen Der Szenengraph - Hauptkonzept um 3D-Szenen darzustellen - Enthält alle Informationen über die Szene - Gerichteter azyklischer Graph - Unterscheidet zwischen Knoten und Blättern - „Capabilities“ der Szenegraph-Objekte legen fest, welche Operationen auf ihnen erlaubt sind. Die Klasse SceneGraphObject enthält eine Methode setCapability, mit denen dies für die einzelnen Objekte festgelegt werden kann. Computergrafik - SS 2004 Java3D-9 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse VirtualUniverse - Top-Level-Knoten eines Szenengraphen - Bezugsraum für eine gesamte 3D-Szene - Enthält alle für die Darstellung der Szene notwendigen Objekte - Eine Anwendung kann mehrere Universen besitzen Computergrafik - SS 2004 Java3D-10 Java3D-Einführung Erstellung von Java3D-Szenen Locale VirtualUniverse - Definiert eine high-resolution Position innerhalb eines VirtualUniverse Locale - Container für eine Menge von Untergraphen and dieser Position, die eine BranchGroup als Wurzelknoten besitzen - Objekte innerhalb einer Locale sind in standard doubleprecision Koordinaten, relativ zum Ursprung der Locale beschrieben Computergrafik - SS 2004 Java3D-11 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse BranchGroup Locale - Container für weitere Untergraphen - Einzige Knotenart, die an Locales angehängt werden kann BG BG - Umhängen zur Laufzeit möglich Computergrafik - SS 2004 Java3D-12 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse TransformGroup Locale - Führt beliebige Transformationen aus - Enthält Transform3D Objekt - Lokales Koordinatensystem wird durch Multiplikation alles Transformationsmatrizen entlang des Szenengraphen nach oben zum VirtualUniverse berechnet BG BG T Computergrafik - SS 2004 Java3D-13 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse Blatt: Primitive Locale - Java3D Geometrie-Primitive - Kugel BG BG - Kegel - Zylinder T - Quader P P Computergrafik - SS 2004 Java3D-14 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse Blatt: Shape3D - Enthält Spezifikation für komplexe 3D Geometrie (z.B. TriangleStrip) - Definiert zusätzlich das Erscheinungsbild der Geometrie Locale BG T BG P S Geometry P Appearance Computergrafik - SS 2004 Java3D-15 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse ViewingPlatform Locale - Unterklasse von BranchGroup - Definiert Sicht auf die Szene mittels - ViewPlatform und BG BG BG Viewers T - Viewern - denen entsprechende Transformationen vorgeschaltet sein können T P S Geometry VP P Appearance Computergrafik - SS 2004 Java3D-16 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse SimpleUniverse - Unterklasse von VirtualUniverse mit minimalem User-Environment und Standard-Einstellungen Viewer - Locale Locale BG T - ViewingPlatform - Viewer - ViewPlatform VP Computergrafik - SS 2004 Java3D-17 Java3D-Einführung Erstes Beispielprogramm import import import import com.sun.j3d.utils.universe.SimpleUniverse; com.sun.j3d.utils.geometry.ColorCube; com.sun.j3d.utils.geometry.Sphere; javax.media.j3d.BranchGroup; public class Hello3d { public Hello3d() { SimpleUniverse universe = new SimpleUniverse(); BranchGroup group = new BranchGroup(); group.addChild(new ColorCube(0.3)); universe.getViewingPlatform().setNominalViewingTransform(); universe.addBranchGraph(group); } public static void main( String[] args ) { new Hello3d(); } } // end of class Hello3d Computergrafik - SS 2004 Java3D-18 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse Beispiel-Szenengraph Locale - Enthält SimpleUniverse - Enthält BranchGroup mit geometrischem Primitiv BG BG Viewer T P VP Computergrafik - SS 2004 Java3D-19 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse Struktur des Szenengraphen im Programm „LoaderDemo“ - SimpleUniverse mit ViewingPlatform, ViewTransformation und Viewer Locale BG BG Viewer T T - BranchGroup als Root-Knoten - Top-Level TransformGroup zur Transformation der gesamten Szene BG VP - BranchGroup, die den vom Loader gelieferten Unterbaum enthält Scene Computergrafik - SS 2004 Java3D-20 Java3D-Einführung Interaktion mit der Szene VirtualUniverse Simple Interaktion: Abstrakte Klasse MouseBehavior Locale - Spezielles Blatt BG - Wirkt auf eine TransformGroup BG - Unterklassen: - MouseRotate MB T - MouseTranslate - MouseZoom Subgraph Computergrafik - SS 2004 Java3D-21 Java3D-Einführung Beleuchtung VirtualUniverse Klasse Light Locale - Abstrakte Klasse - Spezielles Blatt BG BG - Influencing Bounds beschreiben ausgeleuchtete Region - Unterklassen: L - AmbientLight (Umgebungslicht) - PointLight (Punktlichtquelle mit entfernungsabhängiger Abschwächung) Subgraph - DirectionalLight (gerichtetes Licht von unendlich entfernter Lichtquelle) Computergrafik - SS 2004 Java3D-22 Java3D-Einführung Beispielprogramm mit Beleuchtung import import import import com.sun.j3d.utils.geometry.*; com.sun.j3d.utils.universe.*; javax.media.j3d.*; javax.vecmath.*; public class Ball { public Ball() { SimpleUniverse universe = new SimpleUniverse(); // Create the universe BranchGroup group = new BranchGroup(); // Create a structure to contain objects Sphere sphere = new Sphere(0.5f); // Create a ball and add it to the group of objects group.addChild(sphere); // Create a red light that shines for 100m from the origin Color3f light1Color = new Color3f(1.0f, 0.1f, 0.1f); BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f); DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction); light1.setInfluencingBounds(bounds); group.addChild(light1); universe.getViewingPlatform().setNominalViewingTransform(); // look towards the ball universe.addBranchGraph(group); // add the group of objects to the Universe } public static void main(String[] args) { new Ball(); } } Computergrafik - SS 2004 Java3D-23 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse Struktur des Szenengraphen des Programms „Ball“ - SimpleUniverse mit ViewingPlatform mit ViewTransformation und Viewer Viewer - Kugel als geometrisches Primitiv Locale BG T BG L P - Gerichtete Lichtquelle VP Computergrafik - SS 2004 Java3D-24 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse Aufgabe: Modifizieren Sie das Programm „Ball.java“ so, dass Sie mittels Maus-Interaktion den Ball über eine Punkt-Lichtquelle von Viewer verschiedenen Seiten beleuchten können. Locale BG T BG MB T P L VP Computergrafik - SS 2004 Java3D-25 Java3D-Einführung Erstellung von Java3D-Szenen VirtualUniverse Aufgabe: Modifizieren Sie das Programm „Ball.java“ so, dass Sie mittels Maus-Interaktion die Sicht auf die Szene verändern Viewer können. Locale BG T Ersetzen Sie dazu in der Szene die Kugel durch einen Kegel. BG MB T P L VP Computergrafik - SS 2004 Java3D-26
© Copyright 2024 ExpyDoc