Christian Stein (Diplom Informatiker)
Ein Vergleich der APIs: OpenGL, Java3D und VRML
Funktion | OpenGL | Java3D | VRML |
Primitive geometrische Objekte (Punkte, Linien, Flächen) | x | x | x |
Komplexere geometrische Objekte (Sphäre, Quader, ...) | x | Utils | x |
Ausgefallene geometrische Objekte: | |||
Gebirgszüge und Extrusion (Eine Grundform, die verschieden breit ist in der Höhe) | x | ||
komprimierte Geometrie | x | ||
Bezier Kurven und Flächen, Nurbs und Quadrigen | x | ||
Materialeigenschaften / Farben | x | x | x |
Licht (directionales, Punkt- und Spotlicht) | x | x | x |
Ambientes Licht | x | x | |
Nebel | x (schlecht) |
x | x (schlecht) |
Sound | x (sehr gut) |
x | |
Hintergrund, Level of Detail, Billboard | x | x | |
(3D-)Text | x | x (nur 2D) |
|
Morphing | x | ||
Antialiasing | x | x | x (starr, primitiv) |
Texturen (2D +) | x (+ 3D) |
x (+ 3D) |
x (+ Movie) |
Shading beeinflußbar | x | x | |
Pixelweise Beeinflussung des Framebuffers | x | x | |
Wiederverwendung: | |||
2 Gegensätzliche Mechanismen (share/link + clone) | x | ||
3 gleichartige Mechanismen (def/use, prototype und inline) | x | ||
Displaylist | x | ||
Picking | x (abstarkter) |
x (einfacher) |
|
Interpolatoren (Koordinaten-, Positions-, Rotations-, Skalierungs- und Farbinterpolatoren) | x | x | |
weitere Interpolatoren (Transparenz-, Switch- und verschiedenste Path-Interpolatoren) | x | ||
Zeitgeber | x | x | |
Schedulder & Aktivierungfunktion (Zunahmen, Abnahmen, An, Aus und Wiederholungen beeinflußbar) (Messaging) | x | ||
Route-Mechanismus (Variablenwertänderung) | x | ||
Viewpoints | x | ||
»Scriptknoten« | x | x | |
Schnittstelle zu anderen Applikationen | x2 | x3, 4 (einfacher) |
x |
Anchor | x4 | x |
2 Ist bei C++ schon dabei
3 soweit das vom Interpreter »erlaubt« wird
4 schon bei Java selber dabei
Besonderheiten von Java3D:
Beeinflußbarkeit des Renderns (3 Stufen):
- Keine vorgegebene Struktur: langsam
- Vorgegebene Struktur: schneller
- Vorgegebene starre Struktur: sehr schnell (immer noch Interaktivität/ Animation möglich)
Verschiedenste 'Screen'-, Input- und Sounddevices (durch abstrakte Klassen; sowie gleichzeitig mehrere devices nutzbar!).
View: (andere Ranngehensweise)
- Durch einen Head-Tracker-Einsatz kann die Position und Orientierung verändert werden.
-
Aufsplittung des herkömmlichen Viewknotens in:
- Physical Environment (Input-, Sounddevices)
- Physical Body (Körpergröße, Augeneigenheiten usw.)
- Screen3D (Werte über den zu benutzenden 'Screen')
- Canvas3D (Leinwand)
- View Platform (Position und Orientierung)
- View (Projektionsart; zentrales 'Schaltwerk')