Konzeptioneller Vergleich von VRML, Java3D und OpenGL hinsichtlich ihrer Eignung zur Erstellung von Animationen von Christian Stein.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Animation in Java 3D Ausarbeitung im Seminar Java 3D
Eine Seminararbeit von Gerd Mühlinghaus
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Java3D Einfacher scene graph View branch graph BG Shape3D Knoten S
Application Programming Interface Graphische Datenverarbeitung
Linien, Flächen & geometrische Figuren von Mario Linge
Anwendungssysteme SoSe Projekt Einführung in VRML (Teil 1) AWS SoSe2000Einführung in VRMLSeite 1.
SVG und X3D Referentin: Gergana Ivanova
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
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
Indirekte Adressierung
Licht und Schatten Richard Göbel.
FH-Hof Animation - Teil 1 Richard Göbel. FH-Hof Themen Darstellung der Geometrie ändern (Transformation, Appearance, etc.) Geometrie ändern (Morphing)
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.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Ein Beispiel in Java.
Konstruktoren.
Erweiterte Datenmodelle Referentin: Lena Becker HS: Datenbanken vs. Markup Datum:
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
OpenGL mit Delphi Allgemeines OpenGL-Funktionsbezeichnungen
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1 Animation (Doublepuffering) Vorlesung: Datenverarbeitung Grundlagen 3 Fachbereich II - Mathematik Rolf Heitzenröder.
DVG Einführung in Java1 Einführung in JAVA.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
© Prof. Dr. H. Gläser, Graphische Datenverarbeitung Benutzer Interaktion Benutzer Interaktion (interaction): die virtuelle Welt reagiert auf Benutzer Eingaben.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
UML Begleitdokumentation des Projekts
FH-Hof Licht Richard Göbel. FH-Hof Licht in Java3D - Basisideen Bereitstellung unterschiedlicher Lichtquellen Definition der Wirkung einer Beleuchtung.
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.
Computergraphik mit OpenGL Einführung. Bilder Objekt existiert im Raum unabhängig vom Betrachter Objekte sind beschrieben durch die Position verschiedener.
Applets Java für’s Web.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Verhalten von Objekten in der Szene
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Medizinische Visualisierung
Objectives Verstehen was unterDelegate verstanden wird
early binding (frühe Bindung) late binding (späte Bindung)
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Haptische Schnittstellen
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
JAVA 3D 1 Einführung in die Java3D API JAVA 3D2 Was ist Java3D? Standard-Extension-Klassenbibliothek für Java X (X >= 1.2) Ermöglicht.
VRML Sebastian Pohl/ST7 Virtual Reality Modeling Language.
Objektorientierte (OO) Programmierung
 Einführung  Szenengraphen  Bestandteile  Eingabe  JOGL  LWJGL  Beispiele  ARDOR3D Games 04/23/12Ardor 3D – Holzwarth/Kau 2.
Actionscript 3.0 Philipp Oberweger Erstellt von: Philipp Oberweger
GAME PROGRAMMING PATTERNS – FLYWEIGHT & OBSERVER Robert Nystrom Softwaretechnologie II Teil 2 Anike Schulz.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Objektorientierte Programmierung Was ist das eigentlich ?
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
 Präsentation transkript:

Konzeptioneller Vergleich von VRML, Java3D und OpenGL hinsichtlich ihrer Eignung zur Erstellung von Animationen von Christian Stein

Übersicht Motivation / Grundlagen: Was ist OpenGL, Java3D und VRML? (incl. Beispiele) Wie sind die Animationsmodelle aufgebaut? Wo sind Unterschiede zwischen den Animations-Konzepten Das Resultat

Motivation Historische Entwicklung: Früher: 3D-Bild (starr/statisch) Heute: Virtuelle-Realität (VR): permanente Abbild-Erstellung, Interaktion und Dynamik der 3D-Objekte Animationen notwendig Hoher Aufwand für 3D-Bild-Berechnung Þ Minimierung der Neuberechnungen notwendig Gesucht: Ein Modell, daß Animationen effektiv realisiert Zwei Arten von Animation: Navigation / Interaktion Dynamik der 3D-Objekte

Was ist OpenGL, Java3D und VRML? Alle drei sind plattformübergreifende Schnittstellen OpenGL (Graphics Library): Low-Level-API es werden einzelne Abbilder von 3D-Szenen erstellt (CAD-Bereich) Java3D: 'Low-Level'-API, Neu (Final-Release vor 2 Tagen) Zur Erstellung von 'Virtueller Realität' (VR) geeignet (es werden mehrere Abbilder hintereinander erstellt) VRML (Virtual Reality Modeling Language): High-Level-'API', WWW-Bereich VR möglich

Beispiele für OpenGL, Java3D und VRML

OpenGL void CCubeView::DrawScene(void) { glTranslatef(0.0f, 0.0f, -m_fRadius); glRotatef(wAngleZ, 0.0f, 0.0f, 1.0f); wAngleZ += 5.0f; glBegin(GL_QUADS); glColor3f(1.0f, 0.0f, 1.0f); glVertex3f(-0.5f, 0.5f, 0.5f); glVertex3f(-0.5f, -0.5f, 0.5f); glVertex3f(0.5f, 0.5f, 0.5f); glVertex3f(0.5f, -0.5f, 0.5f); glEnd(); glFinish(); SwapBuffers(wglGetCurrentDC()); }

Java3D public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); TransformGroup objTrans = new TransformGroup(); objRoot.addChild(objTrans); objTrans.addChild(new ColorCube(0.4)); objRoot.compile(); return objRoot; }

VRML #VRML V2.0 utf8 Transform { children [ Shape geometry Sphere { } appearance Appearance material Material { diffuseColor 0.8 0 0 } } ]

Das 'Animationsmodell' von OpenGL

OpenGL Alle Zwischendaten werden nach der Rastererung vergessen (Hauptaufwand der Berechnung ist davor L) Noch Operationen auf Pixelebene möglich, aber unhandlich

Das Animationsmodell von VRML

VRML Sensoren erzeugen Ereignisse Alle empfangen und senden, bzw. senden weiter Interpolatoren und Scripte berechnen neue Werte

Route-Mechanismus (VRML) ROUTE QuellKnoten.QuellVariable TO ZielKnoten.ZielVariable mehrere Verbindungen zu einer Variable mehrere Verbindungen von einer Variable Endlosschleifen nicht möglich, da pro Nachrichtenkette eine Variable nur einmal eine Nachricht senden kann

Sensoren und Interpolatoren (VRML) Sensoren ändern ihre Variablen anhand von Benutzereingaben oder Zeit Interpolatoren rechnen 'Zeit'-Werte in andere um, z.B. Translationen, Rotationen Interpolator-'Zeit'-Werte sind im [0,1] Intervall Interpolatoren können Teilintervalle unterschiedlich linear Interpolieren, z.B. [0, 0.5, 1] ® [5 0 0, 6 0 0, 8 0 0]

Script-Knoten - Struktur (VRML) { # Interface-Teil = Variablen # Script-Teil = Funktion die ausgeführt werden }

VRML-Browser Aufbau

Das Animationsmodell von Java3D

Java3D

Der Scheduler (Java3D) Bekommt von 'Verhalten'-Objekten (also auch von Interpolatoren) gesagt bei welchen Ereignissen sie aufgerufen werden sollen. Es wird zusätzlich eine Scheduleregion angegeben (Optimierung durch culling). Strukturen: volume/scheduling tree (Scheduleregionen) and/or tree (Ereigniskombination)

Interpolatoren (Java3D) Interpolatoren sind Klassen, die anhand von einer Aktivierungsfunktion Eigenschaften oder die Position von geometrische Objekte verändern. Die Aktivierungsfunktion bildet Zeitwerte in 4 Phasen in Werte zwischen 0 und 1 ab: Aufstieg, 1, Abstieg und 0. Die Steigung muß nicht konstant sein.

Verhalten-Klasse (Java3D) public class bspBehavior extends Behavior { // Variablendeklaration public bspBehavior(Parameter p) { // Variablen initialisieren } public void initialize() { wakeupOn(wakeupKriterium); } public void processStimulus(Enumeration criteria) // Die Handlung wakeupOn(wakeupKriterium); }

Unterschiede der Animations-Konzepte von Java3D und VRML

Verhaltens-Klasse vs. Script-Knoten Java3D: Eingebettet vs. VRML: Schnittstelle (d.h. bei VRML, Kommunikation zwischen zwei Threads) VRML-Script-Knoten: nur Werte-Berechnung, kein AWT (oder nur mit Tricks) Java3D besser, da sie in eine Programmier- sprache eingebettet ist

Ereignisse / Sensoren VRML: Sensoren sind fertige Werkzeuge Þ Wenig Programmieraufwand Java3D: Nur Benachrichtigung Þ Mehr Möglichkeiten Ähnliches Angebot an Interaktionsmöglichkeiten (Es fehlt in Java3D der Sichtbarkeit-Sensor)

Scheduleregionen und Bounding-Boxes Java3D: Scheduleregionen sind notwendig Þ Optimierung wird 'aufgezwungen' VRML: Bounding-Boxes können angegeben werden Sie existieren nicht für alle Knoten (dezentrale Regelung) Dieses Feature wird häufig übersehen

Scheduler vs. Route Kein direkter Vergleich möglich, da die Mechanismen unterschiedliche Aufgaben haben: Scheduler: 'Nur' Ereignisse werden weitergegeben Route: Variablen werden weitergegeben, es entsteht eine Nachrichtenkette Eine Variablen-Weitergabe kann auch Ereignis sein

Interpolatoren Ähnliches Angebot bei beiden Schnittstellen Java3D: Aktivierungsfunktion Þ Mehr Möglichkeiten (z.B. Pendelbewegung)

VRML-Browser in Java3D Es zeigt sich, daß einer Realisierung nichts im Wege steht und daß die Programmier-ung einfacher in Java3D ist als (direkt) in OpenGL.

Resultat des Animationsmodell-Vergleichs Java3D: Verhaltensklassen: können vererbt werden (Java ist OO) Einbettung in Programmiersprache Zentrale Konzepte (Scheduler) Nicht ganz so einfach zu benutzen, dafür für alles geeignet VRML: Umfassende Sensoren Einfach zu benutzen, aber nicht für jeden Gebrauch Schlechte Anbindung an Programmiersprachen Nicht alle Konzepte sind zentral OpenGL: keine Animations-Mechanismen