VRML
- Animation 3 Dimensionaler Körper im Raum
- Hyperlinkfähigkeit übers Worldwide Web
- Interaktion zur Echtzeit
Features
- 3D Features
- 3D Körper können von allen Seiten betrachtet werden
- Lichtquellen und resultierender Schattenwurf
- vordefinierte Viewpoints ("Kamerapositionen")
- Entfernte Körper können vereinfacht werden
- Körper können ausgetauscht oder abgeschaltet werden
- Nebel und Vortäschung eines Hintergrunds
- Hyperlink Features
- Über Plugins im WWW-Browser darstellbar
- Links auf andere Webpages können gelegt werden
- Teile einer virtuellen Welt können über einen Hyperlink
geladen werden
- Animationsfeatures
- 3D Körper, Lichtquellen und Viewpoints können beliebig im Raum
verschoben und rotiert werden
- Interaktionsfeatures
- Interaktion des Users über die Maus
- Interaktion der Körper untereinander (Kollisionserkennung)
- Multimediafeatures
- Körper können mit Bildern oder Videoclips beklebt werden ("Texturen")
- Sound
- Softwareengeneering Features
- Unterstützung für Modularisierung
- prozedurale Programmiersprachen
- Java
- Javascript: Javascript (auch "ECMAScript" oder "vrmlscript") ist
normierter Bestandteil von VRML
Scenengraph
- Scenengraph hat für moderne 3D Programmierung die Bedeutung
wie das Nassi-Shneiderman Diagramm für die prozedurale
Programmierung.
- Im Scenengraph werden ausgehend vom graphischen Ursprung ("Nullpunkt")
alle graphischen Knoten in Baumform angeordnet. Dabei gibt es auch
Gruppenknoten, die mehrere Knoten zusammenfassen
- Zusätzlich zu den Knoten werden in den Scenengraph auch "Routes"
eingetragen. Routes übertragen Nachrichten ("Events" z.B die Zeit,
eine Verschiebung oder Rotation) von Knoten zu Knoten.
- VRML setzt als deklarative Programmiersprache den Scenengraph um.
Neue Knoten und Routes können über Scriptknoten erzeugt werden.
Wichtige Knotentypen
- Shapeknoten
Representieren Materialeigenschaften wie Farbe, Texture, Durchsichtigkeit
usw. und geometrische Körper wie Würfel, Kugel, Zylinder
oder aus Einzelfächen zusammengesetzte Körper.
- Transformknoten
Representieren Verschiebungen, Drehungen und Vergrößerungen/
Verkleinerungen. Ein Transformknoten ist das Ziel eines Events bei
Animationen.
- Sensorknoten
Quelle von Events. Es existieren Sensoren für Mausbewegungen,
Sichtbarkeit oder Kollision von Körpern, Betreten eines Raums und die
Zeit.
- Interpolationsknoten
Empfangen Events und verarbeiten sie zu neuen Events. Ülicherweise
werden Events vom Timersensor in einen Interpolationsknoten geleitet,
der z.B. Verschiebungs- oder Rotationsevents aus einer Liste generiert.
Für ruckfreie Animation werden Zwischenwerte interpoliert.
- Scriptknoten
Verarbeiten/generieren Events in den prozeduralen Sprachen Java/Javascript
Einfaches Beispiel einer Animation

#VRML V2.0 utf8
# Der Kommentar der ersten Zeile ist zwingend vorgeschrieben
# Einfaches Hello World Programm das einen String darstellt und
# einen Link ins World Wide Web darauf legt
# Animiert ueber einen Tranformknoten
DEF SCHRIFT Transform
{
children
[
Anchor
{
children
[
Shape
{
geometry Text
{
string ["Hello World"]
}
}
]
description "Hello World"
url "http://www.fourmilab.ch/cgi-bin/uncgi/Earth?imgsize=320&opt=-l&lat=0.184093&ns=North&lon=359.53&ew=West&alt=1000000&img=learth.evif"
}
]
}
DEF ROTOTATOR OrientationInterpolator
{
key [0, 0.5, 1]
keyValue
[
0 1 0 0,
0 1 0 3.14,
0 1 0 6.28
]
}
DEF TIMER TimeSensor
{
cycleInterval 10
loop TRUE
}
ROUTE TIMER.fraction_changed TO ROTOTATOR.set_fraction
ROUTE ROTOTATOR.value_changed TO SCHRIFT.set_rotation
Rotation/Mathematik
In der nummerischen Mathematik werden Drehungen meist über Eulersche Winkel
und Drehmatrizen behandelt.
Nachteil:
- Grosse Datenmengen (Symetrische 3x3 Matrix pro Drehung: 6 Werte pro Drehung)
- Wenig anschaulich
VRML definiert Drehungen über einen Vektor und eine Winkel (4 Werte pro Drehung)
Mathematisch fasst man den Vektor und den Cosinus des Winkels zum
Quaterion zusammen, einer Art 3 dimensionale Erweiterung der Imaginäre
Zahlen.
Mit Hilfe der Rechenregeln der Quaterionen lassen sich mathematische
Probleme lösen (z.B. die Kombination zweier Drehungen, ohne
dafür 2 Transformknoten einsetzen zu müssen).
Geschichte/Versionen/Ausblick
- Inventor
Inventor ist ein Toolkit für die Graphiklibrary OpenGL
Das Fileformat um 3D Körper (z.B. aus einem CAD-Programm) einfach
einbinden zu können ist der Urahn aller VRML-Versionen
- VRML 1
Erweitert das Inventorformat um anklickbare Hyperlinks im WWW
- VRML 2
Erweitert die Features von VRML 1 um Animations, Interaktion, Multimedia
und prozedurale Programmierung. VRML 2 benutzt andere Schlüsselworte
als VRML 1, es existieren allerdings Konversionsprogramme (auch vom
Inventorformat)
- VRML 97
Klärt Unklarheiten des Standards, enthält keine neuen wichtigen
Features.
- VRML-Java3D
Java3D ist ein Java API für 3D Programmierung (entsprechend OpenGL/C)
VRML-Java3D benutzt VRML um 3D Körper einfach einbinden zu können
- X3D (geplant)
- kompatibel zu XML
- rückwärts kompatibel zu VRML97
Linuxtools
- GL/MESA
- Unter Linux setzen die VRML-Tools entweder das kommerzielle OpenGL
oder dessen Opensource Nachbau MESA ein.
- MESA bietet zur Zeit als Hardwarerenderer Unterstützung
für
- 3Dfx Voodoo Karten
- nVidia basierte Karten (Quelle http://www.mesa3d.org/)
- Viewer
- http://www.logoncafe.net/~chrome/vrml/viewers.shtml
verfügbar und von mir angeschaut:
- Liquid Reality
- kwrl
- freewrl
- lookat
- Vrwave
- noch nicht bis nie verfügbar:
- Liquid Reality (Version 1.0)
- Führender VRML-Browserhersteller für Linux bis die Firma
von Micro$oft aufgekauft wurde
- Schwer (nicht ?) mit einem aktuellen Linux zum Laufen zu bringen
- Kein JavaScript
- Probleme bei zusammengesetzten Oberflächen mit Nicht-Convexen
Polygonen
- kwrl (Version 0.06)
- Website nicht mehr erreichbar...
- freewrl (Version 0.20/0.21a1)
- Absturz bei zusammengesetzten Oberflächen mit Nicht-Convexen
Polygonen
- viele fehlende Knotentypen
- lookat (Version 0.79/inoffizielle 0.8)
- einige Sensoren und weniger wichtige Knoten fehlen
- Scriptknoten nur Javascript, kein Java
- Vrwave (Version 0.9)
- keine Unterstützung für modulare Programmierung
- weder Java noch Javascript
- Cosmoplayer (nicht verfügbar)
- DER Standard VRML-Viewer
- Ursprünglich von SGI programmiert, derzeitiger Besitzer CA
- verfügbar für SGI, Windows und Macintosh
- Sourcecodeveröffentlichung wurde 2 mal angek&undigt aber
nie vollzogen. Stattdessen wurden die Rechte an andere Firmen
weiterverkauft.
- Blackxsun (nicht verfügbar)
- Im August wurde der Sourcecode gegenüber dem frühreren
VRML-Konsontium veröffentlicht
3D Modeller (z.B. auch für Rayshader wie Povray geeignet)
- SCED (1.02)
- ist in einigen Linux-Distributionen enthalten
- gilt als schwierig zu bedienen (auch über eine Kommandozeile)
- "wenn man damit umgehen kann, soll man damit Wunder vollbringen können"
- Moonlight (Version 0.52)
- Enthält die Möglichkeit zum DXF-Import
- Bedienung gewöhnungsbedürftig (Dialogs -> Modes List,
nach jeder Operation Escape drücken )
- AC3D (Version 2)
- Shareware (Vollversion Einzellizenz 40$)
- kann verschiedene 3D Formate einlesen
- einfache Bedienung
- beliebiges CAD-Programm mit DXF-Export