Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Konzeptioneller Vergleich von VRML, Java3D und OpenGL hinsichtlich ihrer Eignung zur Erstellung von Animationen von Christian Stein."—  Präsentation transkript:

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

2 Ü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

3 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

4 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

5 Beispiele für OpenGL, Java3D und VRML

6 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()); }

7 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; }

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

9 Das 'Animationsmodell' von OpenGL

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

11 Das Animationsmodell von VRML

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

13 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

14 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]

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

16 VRML-Browser Aufbau

17 Das Animationsmodell von Java3D

18 Java3D

19 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)

20 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.

21 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); }

22 Unterschiede der Animations-Konzepte von Java3D und VRML

23 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

24 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)

25 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

26 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

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

28 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.

29 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


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

Ähnliche Präsentationen


Google-Anzeigen