Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

© Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Application Programming Interface Graphische Datenverarbeitung Java3D.

Ähnliche Präsentationen


Präsentation zum Thema: "© Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Application Programming Interface Graphische Datenverarbeitung Java3D."—  Präsentation transkript:

1 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Application Programming Interface Graphische Datenverarbeitung Java3D

2 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Scene Graph Begriffsbestimmungen visual object: Objekt im scene graph (z.B. Würfel oder Kugel) (auch, wenn es im Augenblick nicht sichtbar ist, d.h. nicht im view) object: Instanz einer Klasse content: alle visual objects eines scene graph Knoten: Instanzen von Java3D Klassen Kanten: Beziehungen zwischen den Knoten

3 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Beziehungen zwischen Knoten im scene graph a) Eltern - Kind innerer Knoten hat beliebig viele Kinder aber nur einen Vater, Blatt Knoten haben keine Kinder b) Referenz Assoziation zwischen einem NodeComponent Objekt und einem Knoten des scene graph.

4 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Scene Graph Tree Die Eltern-Kind Beziehungen bilden mit ihren Knoten einen Baum. Die Referenzen und NodeComponent Objekte sind nicht Teil dieses Baums. Scene Graph Path Weg von der Wurzel zu einem bestimmten Blatt des scene graph tree Der scene graph path spezifiziert den Zustand eines Blatts vollständig ! Wurzel eines scene graph tree ist ein Locale Objekt

5 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Zustand eines Blatts des scene graph tree Ort, Orientierung, Größe eines visual object Die visuellen Attribute eines visual object werden nur durch den scene graph path bestimmt. Der Java 3D Erzeuger (renderer) erzeugt die Blätter in der Reihenfolge, die er für am effizientesten hält. Der Programmierer hat (praktisch) keinen Einfluß auf die Reihenfolge.

6 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D scene graph Symbole Eine scene graph Zeichnung kann als Spezifikation des Programms gesehen werden Knoten und NodeComponents (Objekte) VirtualUniverse Locale Group (innerer Knoten) Leaf (Blatt) NodeComponent andere Objekte Beziehungen: Eltern-Kind Referenz Klassen Namen !

7 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Einfacher scene graph VirtualUniverse (nur einmal im Programm) Locale (Landmarke im Universum) BG ist Unterklasse BG BranchGroup Knoten S Shape3D Knoten Aussehen Geometrie TG TransformGroup Knoten View Platform Screen3DCanvas3DView Physikalischer Körper Physikalische Umgebung node components

8 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Sichtzweig View platform Ort, an dem Betrachter / Fotoapparat / Filmkamera sich befindet View Fotoapparat bzw. dessen Ausrichtung (auf einer View platform können mehrere Kameras postiert sein) Canvas3D Bildfenster, auf das die Kamera ihr Bild überträgt Screen3D Bildschirm, auf dem das Bildfenster dargestellt wird

9 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Einfacher scene graph Ein VirtualUniverse Objekt hat eine Liste von Locale Objekten BranchGroup Objekt Wurzel eines Untergraphen. Zwei Arten von Untergraphen: a) view branch graph (Sicht) b) content branch graph (Inhalt) Inhalt Geometrie, Erscheinung, Verhalten, Ort, Ton, Licht Sicht Aussichtsort, Blickrichtung

10 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Kochrezept für eine Java3D Programm Erzeuge ein Canvas3D Objekt Erzeuge ein VirtualUniverse Objekt Erzeuge ein Locale Objekt und trage es in das VirtualUniverse Objekt ein Erzeuge einen view branch graph: a) Erzeuge ein View Objekt b) Erzeuge ein ViewPlatform Objekt c) Erzeuge ein PhysicalBody Objekt d) Erzeuge ein PhysicalEnvironement Objekt e) Trage ViewPlatform, PhysicalBody, PhysicalEnvironement, und Canvas3D Objekt in das View Objekt ein

11 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Kochrezept für eine Java3D Programm (Fortsetzung) Konstruiere einen content branch graph Kompiliere die branch graph(s) Füge die Untergraphen in das Locale Objekt ein

12 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D SimpleUniverse Erzeugt scene graph mit VirtualUniverse, Locale, und einem vollständigen view branch graph Das SimpleUniverse benutzt Bequemlichkeitsklassen von ViewingPlatform und View statt den Kern-Klassen (Paket: com.sun.j3d.utils.universe )

13 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Kochrezept mit SimpleUniverse Erzeuge ein Canvas3D Objekt Erzeuge ein SimpleUniverse Objekt, welches obiges Canvas3D Objekt referenziert a) Anpassen des SimpleUniverse Objekts Konstruiere den content branch Kompiliere den content branch graph Führe den content branch graph in die Locale des SimpleUniverse ein

14 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Image Plate x y z (0,0,0) ist auf der image plate Ebene

15 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D live Wenn ein branch graph in ein Locale Objekt eingetragen wird, wird er live live bedeute, dass alle Objekte des branch graph gezeichnet werden. Die Parameter dieser Objekte können nicht mehr geändert werden es sei denn, eine entsprechende capability wurde vorher gesetzt

16 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D compile durch Kompilieren wird ein branch graph für das Zeichnen effizient gemacht Am besten wird ein branch graph kompiliert, kurz bevor er live gemacht wird. Es gibt keinen starte den Zeichner Schritt Der Java3D Zeichner startet, wenn ein branch graph mit einer Instanz von View live wird Java3D Renderer (Zeichner)

17 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Beispiel: HelloJava3Da (siehe JBuilder Projekt) BG View branch graph ColorCube

18 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Beispiel: Würfel rotieren (HelloJava3Da1) TG ColorCube BG... Transform3D rotate = new Transform3D(); rotate.rotX(Math.PI / 4.0d); TransformGroup objRotate = new TransformGroup(rotate)... Erzeugen der TransformGroup... BranchGroup objRoot = new BranchGroup(); objRotate.addChild(new ColorCube(0.4)); objRoot.addChild(objRotate);... Einhängen in Baum

19 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Beispiel: Kombinationen von Transformationen (HelloJava3Db) TG ColorCube BG... rotate.rotX(Math.PI / 4.0d); tempRotate.rotY(Math.PI / 4.0d); rotate.mul(tempRotate);... Erzeugen der kombinierten Transform3D

20 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Capabilities Wenn sceneGraph live wird, oder compiled ist, kann das Programm die Parameter (capability) der sceneGraph Objekte nicht mehr ändern ! void.clearCapability(int bit) boolean.getCapability(int bit) void.setCapability(int bit) (SceneGraphObject ist Superklasse von (fast) allen Klassen, die in einem sceneGraph vorkommen)

21 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Capabilities von TransformGroup TransformGroup.ALLOW_TRANSFORM_READ TransformGroup.ALLOW_TRANSFORM_WRITE } int Capabilities von Group Group.ALLOW_CHILDREN_EXTEND Group.ALLOW_CHILDREN_READ Group.ALLOW_CHILDREN_WRITE Referenzen zu Kindern können gelesen/geschrieben werden

22 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Animation activation volume interaction: Reaktion auf Benutzer Eingaben animation: Reaktion auf Ablauf der Zeit Alles was von der ViewPlatform eingesehen wird scheduling region Raum, für den ein bestimmtes Verhalten (behavior) gilt Jedes visual object kann (mind.) ein Verhalten haben. Dieses wird durch ein behavior Objekt beschrieben. Ein behavior wird aktiv, wenn das activation volume seine scheduling region schneidet (Effizienz).

23 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Interpolator Vordefinierte behavior Klasse Manipuliert die Parameter eines sceneGraph Objekts in Abhängigkeit von einer Zeitfunktion Beispiele: RotationInterpolator -> TransformGroup PositionInterpolator ScaleInterpolator ColorInterpolator TransparencyInterpolator

24 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Einfügen von Verhalten (behavior) Setze ALLOW_TRANSFORM_WRITE der Ziel- TransformGroup Erzeuge Zeitfunktions (alpha) Objekt Erzeuge Interpolator Objekt Lege scheduling region fest Mache das behavior zum Kind der TransformGroup

25 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Die RotationInterpolator Klasse RotationInterpolator( Alpha alpha, TransformGroup target ) void setSchedulingBounds( Bounds region ) Die BoundingSphere Klasse BoundingSphere( Point3D center, double radius ) Java3D Mit dieser Klasse können kugelförmige scheduling regions definiert werden. Die alpha Klasse Gibt einen zeitabhängigen alpha Wert (Wert zwischen 0 und 1).

26 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D BG View branch graph ColorCube Beispiel: HelloJava3Dc (siehe JBuilder Projekt) TG B Verhalten

27 © Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Farben des ColorCube gelb blau y x Rückseite: Grün violett positive Drehrichtg. türkis


Herunterladen ppt "© Prof. Dr. H. Gläser, Graphische Datenverarbeitung Java3D Application Programming Interface Graphische Datenverarbeitung Java3D."

Ähnliche Präsentationen


Google-Anzeigen