Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Application Programming Interface Graphische Datenverarbeitung

Ähnliche Präsentationen


Präsentation zum Thema: "Application Programming Interface Graphische Datenverarbeitung"—  Präsentation transkript:

1 Application Programming Interface Graphische Datenverarbeitung
Java3D Java3D Application Programming Interface Graphische Datenverarbeitung

2 Java3D 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 Scene Graph Knoten: Instanzen von Java3D Klassen Kanten: Beziehungen zwischen den Knoten

3 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 Java3D Scene Graph Tree Die „Eltern-Kind“ Beziehungen bilden mit ihren Knoten einen Baum. Die Referenzen und NodeComponent Objekte sind nicht Teil dieses Baums. Wurzel eines scene graph tree ist ein Locale Objekt 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 !

5 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 Java3D scene graph Symbole Eine scene graph Zeichnung kann als Spezifikation des Programms gesehen werden Knoten und NodeComponents (Objekte) Klassen Namen ! Beziehungen: VirtualUniverse „Eltern-Kind“ Locale Referenz Group (innerer Knoten) Leaf (Blatt) NodeComponent andere Objekte

7 Java3D Einfacher scene graph VirtualUniverse (nur einmal im Programm) BG ist Unterklasse Locale (Landmarke im Universum) BG BG BranchGroup Knoten S TG Shape3D Knoten TransformGroup Knoten Aussehen Geometrie View Canvas3D Screen3D View Platform node components Physikalischer Körper Physikalische Umgebung

8 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 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 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 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 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 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 Java3D Image Plate y z (0,0,0) ist auf der image plate Ebene x

15 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 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. Java3D Renderer (Zeichner) Es gibt keinen „starte den Zeichner“ Schritt Der Java3D Zeichner startet, wenn ein branch graph mit einer Instanz von View „live“ wird

17 Java3D Beispiel: HelloJava3Da (siehe JBuilder Projekt) BG View branch graph ColorCube

18 Beispiel: Würfel rotieren (HelloJava3Da1)
Erzeugen der TransformGroup ... Transform3D rotate = new Transform3D(); rotate.rotX(Math.PI / 4.0d); TransformGroup objRotate = new TransformGroup(rotate) BG TG „Einhängen“ in Baum ... BranchGroup objRoot = new BranchGroup(); objRotate.addChild(new ColorCube(0.4)); objRoot.addChild(objRotate); ColorCube

19 Beispiel: Kombinationen von Transformationen (HelloJava3Db)
BG Erzeugen der kombinierten Transform3D ... rotate .rotX(Math.PI / 4.0d); tempRotate.rotY(Math.PI / 4.0d); rotate.mul(tempRotate); TG ColorCube

20 Wenn sceneGraph „live“ wird, oder „compiled“ ist, kann
Java3D Capabilities Wenn sceneGraph „live“ wird, oder „compiled“ ist, kann das Programm die Parameter (capability) der sceneGraph Objekte nicht mehr ändern ! void <Instanz von SceneGraphObject>.clearCapability(int bit) boolean <Instanz von SceneGraphObject>.getCapability(int bit) void <Instanz von SceneGraphObject>.setCapability(int bit) (SceneGraphObject ist Superklasse von (fast) allen Klassen, die in einem sceneGraph vorkommen)

21 } Java3D Capabilities von „TransformGroup“ int
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 Java3D Animation interaction: Reaktion auf Benutzer Eingaben animation: Reaktion auf Ablauf der Zeit Jedes visual object kann (mind.) ein Verhalten haben. Dieses wird durch ein behavior Objekt beschrieben. activation volume Alles was von der ViewPlatform eingesehen wird scheduling region Raum, für den ein bestimmtes Verhalten (behavior) gilt Ein behavior wird aktiv, wenn das activation volume seine scheduling region schneidet (Effizienz).

23 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 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 Die RotationInterpolator Klasse
Java3D Die RotationInterpolator Klasse RotationInterpolator( Alpha alpha, TransformGroup target ) void setSchedulingBounds( Bounds region ) Die BoundingSphere Klasse BoundingSphere( Point3D center, double radius ) 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 Java3D Beispiel: HelloJava3Dc (siehe JBuilder Projekt) BG View branch graph Verhalten B TG ColorCube

27 Java3D Farben des ColorCube violett gelb blau y Rückseite: Grün türkis positive Drehrichtg. x


Herunterladen ppt "Application Programming Interface Graphische Datenverarbeitung"

Ähnliche Präsentationen


Google-Anzeigen