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

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

Transcript of Konzeptioneller Vergleich von VRML, Java3D und OpenGL hinsichtlich ihrer Eignung zur Erstellung von...

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

Konzeptioneller Vergleich von VRML,

Java3D und OpenGL hinsichtlich

ihrer Eignung zur Erstellung von

Animationen

vonChristian Stein

Page 2: 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

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

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 notwendigGesucht: Ein Modell, daß Animationen effektiv realisiert

• Zwei Arten von Animation:– Navigation / Interaktion

– Dynamik der 3D-Objekte

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

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

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

Beispiele für OpenGL,

Java3D und VRML

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

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

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

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

L

ZG

TV

Aussehen

SichtSP3D

ZG

T

VirtuellUniversum-Objekt

Lokales-Objekt

ZweigGruppen-Objekt

TransformationsGruppen- Objekt

3D-Objekt

Verhaltens-Objekt

Programmierer Code und Daten

Geometrie Andere Objekte

C

SichtPlattform

VU

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

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

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

Das 'Animationsmodell' von

OpenGL

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

OpenGL

• Alle Zwischendaten werden nach der Rastererung vergessen (Hauptaufwand der Berechnung ist davor )

• Noch Operationen auf Pixelebene möglich, aber unhandlich

Raster-Daten Framepuffer

Pixel Operationen

3D-Scene- Daten

Programmierer

Farbe / Licht und Triangulation

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

Das Animationsmodell von

VRML

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

VRML

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

Sensoren Script-Knoten Interpolatoren

ROUTE

andere Knoten (i.d.R. geo. Objekte)

Beginnt

Nur 'durchreichen'Normal (alles erlaubt)

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

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

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

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] [500, 600, 800]

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

Script-Knoten - Struktur (VRML)

Script

{

# Interface-Teil = Variablen

# Script-Teil = Funktion die ausgeführt werden

}

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

VRML-Browser Aufbau

VRML Datei

VRML-Browser

Parser

Welt

Audiovisuelle Darstellung

PROTOs

Integrierte Knoten

Transformationshierachie

ROUTE-Graph

Execution- Engine

Benutzer

Benutzer Eingaben

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

Das Animationsmodell von Java3D

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

Java3D

EingabegerätAuswahl

Interpolator*Aktivierungs-

funktion

Verhalten*geo.

Objekt

auslösend direkt verbunden

Scheduler

Klasse

AWT

Zeit

Sicht

Sensor

aufrufend benutzt

* hat Zugriff auf alle Objekte

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

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)

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

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.

Konstant in der Mitte eine stärkere Steigung

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

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

}

}

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

Unterschiede der

Animations-Konzepte von

Java3D und VRML

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

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

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

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)

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

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

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

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

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

Interpolatoren

• Ähnliches Angebot bei beiden Schnittstellen

• Java3D: Aktivierungsfunktion

Mehr Möglichkeiten (z.B. Pendelbewegung)

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

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.

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

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