Präsentation herunterladen
Veröffentlicht von:Hiltrud Stolzer Geändert vor über 11 Jahren
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 L) 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)
{ # 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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.