Collision Detection in Java3D Hristo Matev WS 02/03.

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
der Universität Oldenburg
der Universität Oldenburg
Eine Seminararbeit von Gerd Mühlinghaus
Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Java3D Einfacher scene graph View branch graph BG Shape3D Knoten S
Application Programming Interface Graphische Datenverarbeitung
Klassen in Java.
Zusammenfassung des Kapitels 8
Binäre Bäume Richard Göbel.
Sortieren mit Binären Bäumen
Java: Objektorientierte Programmierung
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
Java: Dynamische Datentypen
Einführung in die Programmierung von 3D-Grafiken Basis ist Java3D
Listen Richard Göbel.
FH-Hof Animation - Teil 1 Richard Göbel. FH-Hof Themen Darstellung der Geometrie ändern (Transformation, Appearance, etc.) Geometrie ändern (Morphing)
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
Java: Grundlagen der Objektorientierung
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
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.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Realisierung eines 3D-Spiels mittels Lightwave3D und Java3D Hristo Matev Cactus WS 03/04 Systemprogrammierung.
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
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 Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
© Prof. Dr. H. Gläser, Graphische Datenverarbeitung Benutzer Interaktion Benutzer Interaktion (interaction): die virtuelle Welt reagiert auf Benutzer Eingaben.
Einführung in die Programmierung Anweisungen und Datentypen
Informatikunterricht mit Java
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
© 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 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,
XML-Schnittstellen: SAX, DOM, XML Pull Parsing Timo Terletzki Transformation von XML-Dokumenten.
Rekursive Funktionen (Fakultät)
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 2 für Wirtschaftsinformatik Dr. Wieland Schwinger
Exception Handling in Java
Equals, Hashcode und CompareTo Micha Kessler
Aufruf einer Methode eines Objektes vom Typ „Bruch“
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
Beispielanwendung von Java Threads
Programmiervorkurs WS 2014/15 Instanzmethoden
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Zwei Denkansätze zur Klasse Schlange
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Grundkurs Informatik 11-13
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Collision Detection in Java3D Hristo Matev WS 02/03

Übersicht Java3D Application Architecture Behavior System Kollisionen Kollisionstypen Collision Avoidance Terrain Following

Java3D Applikation Architecture Eigene Threads Nachrichtenaustausch Java3D Thread Scheduler Behavior Thread Scheduler Kein Collision Thread (interne Baumstruktur)

Das Behavior System Abstrakte Klasse Behavior Reagieren auf Kollisionen: Position, Aussehen, Hinzufügen/Entfernen, Kameratransformationen

Das Behavior System Aufbau einer Klasse 1. Konstruktor 2. Initialize() 3. processStimulus()

Kollisionen Kollisionsregionen Kollisionslisten Nur die dunklen Regionen befinden sich in der beobachteten Liste

Kollisionen Kamera Bounds (1)

Kollisionen Kamera Bounds (2)

Kollisionen Kamera Bounds (3)

Kollisionen Kamera Bounds Wenn man die Kollision nicht sehen kann, dann kollidieren die Objekte nicht.

Kollisionen Die Behaviors werden asynchron mit dem Renderer aufgerufen Wenn diese aufgefufen werden, dann wird es nicht garantiert, dass diese etwas verändern werden Feststellen von Kollisionen – nicht immer (leichte Kollisionen)

Abfangen von Kollisionen WakeupOnCollisionEntry WakeupOnCollisionMovement WakeupOnCollisionExit WakeupOnViewPlatformEntry WakeupOnViewPlatformExit

Abfangen von Kollisionen Klassenhierarchie

Konstruktoren WakeupOnCollisionEntry (Bounds armingBounds) WakeupOnCollisionEntry (Node armingNode) WakeupOnCollisionEntry (Node armingNode, int speedHint)

Objektgrenzen Eine große BoundingBox – schnelleres Rendern Komplexe Geometrie – langsames Rendern

Objekt-Objekt-Kollisionen WakeupOnCollisionEntry public void initialize (){ this.wakeupOn (new WakeupOnCollisionEntry (t));} public void processStimulus (Enumeration criteria){ System.out.println(Kollision); this.wakeupOn (new WakeupOnCollisionEntry (t)); }}

Mehrere Kriterien WakeupCriterion [] conditions = new WakeupCriterion [3]; public void ObjektObjektCollision () { conditions [0] = new WakeupOnCollisionEntry(t); conditions [1] = new WakeupOnCollisionMovement(t); conditions [2] = new WakeupOnCollisionExit(t); }

Kamera-Objekt-Kollisionen public void initialize (){ this.wakeupOn (new WakeupOnViewPlatformEntry(b)); } public void processStimulus (Enumeration criteria) { System.out.println(Kollision); this.wakeupOn (new WakeupOnViewPlatformEntry (b)); }

Collision Avoidance Collision Avoidance ist ein Mechanismus bei dem man die zukünftige Position basierend auf der momentanen Bewegung des Benutzers ermittelt und vermeidet das der Benutzer zufällig z.B. durch die Wand geht. Java3D stellt aber lediglich ein Collision Detection System zur Verfügung, alles anderes muss vom Programmierer übernommen werden.

Collision Avoidance Sachverhalt Wie groß sollen die Bounds Sein?

Collision Avoidance (Implementierung) else if (critter instanceof WakeupOnViewPlatformEntry) { System.out.println ("collision entry"); collision = true; gesperrterButton = lastPressedButton; vptg.getTransform (aktuell); }..... if (collision && (gesperrterButton == lastPressedButton)) vptg.setTransform (aktuell);

Terrain Following Das Terrain Following beinhaltet die Bewegung von einem Objekt (oder der Kamera) auf einer bestimmten Höhe über die Grundfläche.

Terrain Following Terrain Eigenschaften

Terrain Following Unerwartete Terrainänderung

Terrain Following Scenegraph

Terrain Following (Implementierung) PickTool picktool = new PickTool (bg); picktool.setShapeRay (loc, DOWN); picktool.setMode (PickTool.GEOMETRY_INTERSECT_INFO); pr = picktool.pickClosest (); if (pr != null){ PickIntersection pi = pr.getIntersection (0); Point3d intPt = pi.getPointCoordinatesVW (); py = intPt.y; return py;} Picking

Terrain Following terrainAenderung = criticalPoint - gespeicherteHoehe; criticalVector.set (0.0,terrainAenderung, 0.0); criticalTransform.set(criticalVector); currentTransform.mul(criticalTransform); vptg.setTransform(currentTransform);

Quellen Sun Java3D Api Tutorial j3d.org die java3d Liste: java3d-interest (alle Nachrichten sind unter: mail-archive.com erreichbar)