FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.

Slides:



Advertisements
Ähnliche Präsentationen
Konzeptioneller Vergleich von VRML, Java3D und OpenGL hinsichtlich ihrer Eignung zur Erstellung von Animationen von Christian Stein.
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
Collision Detection in Java3D Hristo Matev WS 02/03.
Eine Seminararbeit von Gerd Mühlinghaus
Konzepte objektorientierter Systeme
Java3D Einfacher scene graph View branch graph BG Shape3D Knoten S
Application Programming Interface Graphische Datenverarbeitung
Ausnahmen HS Merseburg (FH) WS 06/07.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Programmierung grafischer Oberflächen
Threads Richard Göbel.
Java: Reversi Spielbrett
Java: Objektorientierte Programmierung
FH-Hof Geometrie Richard Göbel. FH-Hof Aufbau des virtuellen Universums.
Java2D Richard Göbel.
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Einführung in die Programmierung von 3D-Grafiken Basis ist Java3D
Listen Richard Göbel.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Indirekte Adressierung
Licht und Schatten Richard Göbel.
FH-Hof Automatisches Erzeugen von Geometrie Richard Göbel.
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
FH-Hof Animation - Teil 1 Richard Göbel. FH-Hof Themen Darstellung der Geometrie ändern (Transformation, Appearance, etc.) Geometrie ändern (Morphing)
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe.
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
Java: Referenzen und Zeichenketten
Baumstrukturen Richard Göbel.
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Abstrakter Datentyp in C++ I - Klasse -
1DVG3 - Eventbehandlung Eventbehandlung. DVG3 - Eventbehandlung 2 Events Events sind externe Ereignisse, die parallel zum normalen Programmablauf auftreten.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
© Prof. Dr. H. Gläser, Graphische Datenverarbeitung Benutzer Interaktion Benutzer Interaktion (interaction): die virtuelle Welt reagiert auf Benutzer Eingaben.
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
FH-Hof Konfiguration eines Universums Richard Göbel.
FH-Hof Licht Richard Göbel. FH-Hof Licht in Java3D - Basisideen Bereitstellung unterschiedlicher Lichtquellen Definition der Wirkung einer Beleuchtung.
Template Pattern Richard Göbel.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
FH-Hof Adapter & Facade Pattern Richard Göbel. FH-Hof Motivation Gegeben ist eine Klasse mit vorhandenen Methoden Gefordert ist eine Klasse, die ein bestimmtes.
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Venusspiegel und Marsschild
Grundkurs Informatik 11-13
 Präsentation transkript:

FH-Hof Interaktion Richard Göbel

FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch Ereignisse aktiviert, z.B.: Aktionen des Anwenders (Tastatur, Maus) Kollisionen Aktionen anderer Behavior-Objekte... Ein Behavior-Objekt führt für ein Ereignis eine Aktion auf einem Knoten des Graphen aus. Für die Erzeugung eines Behavior-Objekt muss eine eigene Unterklasse von Behavior definiert werden!

FH-Hof Aufbau einer Unterklasse von Behavior public class MyBehavior extends Behavior { private Node n; private WakeupCondition wakeup = new... ; public MyBehavior (Node aNode) { n = aNode; } public void initialize () { wakeupOn(wakeup); } public void processStimulus(Enumeration criteria) {... wakeupOn(wakeup); }

FH-Hof Beispiele für Unterklassen von WakeupCondition Eingaben mit Maus und Tastatur: WakeupOnAWTEvent Kollisionen zwischen Objekten: WakeupOnCollisionEntry, WakeupOnCollisionExit,... Von Behavior-Klassen ausgelöste Ereignisse: WakeupOnBehaviorPost Kombination von Ereignissen: WakeupAnd, WakeupAndOfOrs, WakeupOr, WakeupOrOfAnds und andere...

FH-Hof Beispiel für ein Behavior-Objekt im Szenengraph public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); TransformGroup trans = new TransformGroup(); trans.setCapability(TransformGroup.ALLOW_TRANSFORM _WRITE); objRoot.addChild(trans); MyBehavior beh = new MyBehavior(trans); beh.setSchedulingBounds(new BoundingSphere()); trans.addChild(beh);... }

FH-Hof Auswerten des Parameters der Methode processStimulus Alle relevanten Ereignisse werden der Methode processStimulus als ein Objekt der Klasse Enumeration übergeben. Zugriff auf die Ereignisse mit den Methoden: hasMoreElements nextElement Für die Abfrage eines Ereignis mit nextElement ist ein geeigneter Cast-Operator zu verwenden. In einigen Fällen kann ein Ereignis-Objekt mehrere elementare Ereignisse enthalten (z.B. WakeupOnAWTEvent)

FH-Hof Beispiel für die Auswertung des Parameters für processStimulus public void processStimulus(Enumeration criteria) { Object o; WakeupOnAWTEvent wu; AWTEvent[] events; while (criteria.hasMoreElements()) { o = criteria.nextElement(); if (o instanceof WakeupOnAWTEvent) { wu = (WakeupOnAWTEvent) o; events = wu.getAWTEvent(); for (int i = 0; i < events.length; i++) {... }

FH-Hof Auswahl von Objekten mit der Maus - Konzept Die Position eines Mausklicks im Canvas wird abgefragt. Ausgehend von dem Punkt im Canvas wird eine Linie entlang der Z-Achse erzeugt. Alle Objekte, welche die Linie berühren sind Kandidaten für die Auswahl. Nur registrierte Objekte (setPickable) werden bei der Auswahl berücksichtigt. Das erste registrierte Objekt wird in der Regel ausgewählt.

FH-Hof Auswahl von Objekten mit der Maus - Klasse PickMouseBehavior Die Klasse PickMouseBehavior implementiert: Initialize processStimulus PickMouseBehavior ruft die Methode updateScene mit den Koordinaten des Mausklicks auf. Das Attribut pickCanvas (Objekt der Klasse PickCanvas) übernimmt die Identifikation des selektierten Objekts. Der Entwickler muss eine Unterklasse von PickMouseBehavior mit der Methode updateScene implementieren!

FH-Hof Auswahl von Objekten mit der Maus - Beispiel für eine Unterklasse public class MyPickBehavior extends PickMouseBehavior { public MyPickBehavior (Canvas3D c, BranchGroup r, Bounds b) { super(c, r, b); this.setSchedulingBounds(b); pickCanvas.setMode(PickTool.BOUNDS); } public void updateScene(int xpos, int ypos) { pickCanvas.setShapeLocation(xpos, ypos); PickResult pickResult = pickCanvas.pickClosest(); if (pickResult != null) {... }}}

FH-Hof Auswahl von Objekten mit der Maus - Beispiel: Auswertung public class MyPickBehavior extends PickMouseBehavior {... public void updateScene(int xpos, int ypos) {... PickResult pickResult = pickCanvas.pickClosest(); if (pickResult != null) { SceneGraphPath path = pickResult.getSceneGraphPath(); Object o = path.getNode(path.nodeCount()-1); if (o instanceof TransformGroup) { tg = (TransformGroup) o; Enumeration children = tg.getAllChildren(); while (children.hasMoreElements()) {... }}}

FH-Hof Auswahl von Objekten mit der Maus - Verfahren für die Auswahl Argument für pickCanvas.setMode(... ): PickTool.BOUNDS: umschreibende Form PickTool.GEOMETRY: exakte Überprüfung zwischen Strahl und Geometrie PickTool.GEOMETRY_INTERSECT_INFO: exakte Überprüfung und Bestimmung der Überlappungsposition

FH-Hof Auswahl von Objekten mit der Maus - Knoten im Szenengraph public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); MyPickBehavior beh = new MyPickBehavior(this, objRoot, new BoundingSphere()); objRoot.addChild(beh); TransformGroup tg1 = new TransformGroup(); tg1.setCapability( TransformGroup.ENABLE_PICK_REPORTING); tg1.setCapability( TransformGroup.ALLOW_CHILDREN_READ);... objRoot.addChild(tg1); ColorCube cube = new ColorCube(0.2); cube.setPickable(true); tg1.addChild(cube1);...

FH-Hof Kommunikation zwischen Behavior-Objekten: Konzept Verwendung der Methode postId statt direktem Zugriff auf andere Behavior-Objekten. Mit postId werden durch Behavior-Objekte ausgelöste Ereignisse zusammen mit anderen Ereignissen einheitlich behandelt. Der Methode postId wird eine ganze Zahl zur Unterscheidung unterschiedlicher Ereignisse übergeben. Post-Ereignisse werden wie andere Ereignisse durch die Methode processStimulus bearbeitet.

FH-Hof Kommunikation zwischen Behavior-Objekten: Sender public class SendPost extends Behavior { private Node n; private WakeupCondition wakeup = new... ; public SendPost (... ) {... } public void initialize () {... } public void processStimulus(Enumeration criteria) {... other Beh.postId(1);... }

FH-Hof Kommunikation zwischen Behavior-Objekten: Empfänger public class ReceivePost extends Behavior {... public void processStimulus(Enumeration criteria) { Object o; WakeupOnBehaviorPost post while (criteria.hasMoreElements()) { o = criteria.nextElement();... if (o.getClass().getName() == "javax.media.j3d.WakeupOnBehaviorPost") { post = (WakeupOnBehaviorPost) o; int id = post.getPostId();... }

FH-Hof Kommunikation zwischen Behavior-Objekten: Beispiel