VRML-Einführung / 2006 SS GDVTobias Breiner Folie 1/64 Vers. 11 Apr 2023
GDV Übungen: VRML
Einführung in VRML
Tobias BreinerJohann Wolfgang Goethe-
UniversitätFrankfurt/Main
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 2/64 Vers. 11 Apr 2023
Aussprache VRML
• Häufigste Aussprache:“Wörmel”
• Seltener: “VauErrEmmEll”
• Wofür könnten die Buchstaben stehen?
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 3/64 Vers. 11 Apr 2023
Was ist VRML ?
• Virtual Reality Modeling (oder Markup) Language
• Also eine Beschreibungssprache• keine Progrogrammiersprache
oder gar ein Softwaresystem!!!• Geeignet um 3D-Szenen zu
beschreiben• Einfaches ASCII-Format
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 4/64 Vers. 11 Apr 2023
Was ist VRML ?
• Editierbar mit beliebigen Editor• Umsetzung der
Sprachbeschreibung durch VRML - Browser
• Standardisierte Sprache:Eine VRML - Szene durch verschiedene Browser darstellbar
• Filesuffix = “.WRL”
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 5/64 Vers. 11 Apr 2023
Beispiel einer VRML Szene
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 6/64 Vers. 11 Apr 2023
VRML: Features (Geometrien)
• Geometriebeschreibungen– Grundprimitive
(nur Würfel, Kegel, Zylinder und Kugel)
– Polygonale Objekte– Punktwolken und Drahtgittermodelle– Elevation Grids– Extrudierte Objekte– Text
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 7/64 Vers. 11 Apr 2023
VRML: Features (Oberflächen)
• Materialbeschreibungen– Farbe– Schattierungen – Beleuchtungsbeschreibungen
• Texturierungen– Auch Movie-Textures– Aber keine Bumpmaps!
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 8/64 Vers. 11 Apr 2023
VRML: Features (Raum-Zeit)
• Transformationsbeschreibungen• Lichter
– Point– Directional– Spot
• Kamerabeschreibungen– Viewpoints
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 9/64 Vers. 11 Apr 2023
VRML: Features (Interaktion)
• Animation durch Interaktionsbeschreibungen
• Sensoren aller Art:– Zeit– Sichtbarkeit– Touch– Collision (z.B. mit Bounding Box)
• Interpolatoren– Skalarwerte– Position– Farbe
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 10/64 Vers. 11 Apr 2023
VRML: Features (Special Effects)
• Hintergrund und Nebel• Multimediabeschreibungen
– Video– 3D Sound
• Billboards• Hypermediabeschreibung
– Anchors
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 11/64 Vers. 11 Apr 2023
VRML: Features (Strukturierung)
• Strukturbeschreibungen– Gruppierungen– Prototypen
• Detaillierungsbeschreibungen
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 12/64 Vers. 11 Apr 2023
VRML: Features Zusammenfassung• VRML ist Beschreibungssprache
für interaktive 3D Welten• VRML integriert Animation,
Multimedia und Hypermedia• VRML kann über Internet / WWW
übertragen werden• VRML kann mit immersiven
Technologien umgesetzt werden
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 13/64 Vers. 11 Apr 2023
VRML und Programmierlogik
• Programme können in die VRML Szene eingreifen
• Anwendungsbeispiele– Mehrbenutzersysteme– Datenbankanbindung– Simulationen
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 14/64 Vers. 11 Apr 2023
VRML: Geschichte (I)• 1994 Mark Pesce, Tony Parisi:
Präsentieren auf der ersten WWW-Konferenz in Genf ein dreidimensionales Interface namens “LABYRINTH”
• Mitte 1995 Gavin Bell: Entscheidung durch “Internet vote” für eine Erweiterung des “Open Inventor”-Formates von Silicon Graphics Inc. => VRML 1.0
• 1995: Beginn der Unterstützung durch SGI, Netscape und Microsoft
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 15/64 Vers. 11 Apr 2023
VRML: Geschichte (II)
• 1995, VRML Architecture Group (VAG): Gründung auf der SIGGRAPH’95
• Anfang 1996, VAG: Aufruf zu Vorschlägen für VRML 2.0
• 1996, VAG: VRML 2.0 wird auf der SIGGRAPH’96 spezifiziert nach offener Abstimmung auf Moving Worlds von SGI basierend
• 1996, VRML Konsortiums : Gründung
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 16/64 Vers. 11 Apr 2023
VRML: Geschichte (III)
• Anfang 1997: Beginn der ISO -Standardisierung mit der Erarbeitung von VRML 97
• Ende 1997: wird VRML 97 standardisiert als ISO/IEC DIS 14772-1
• Zukunft: x3d?
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 17/64 Vers. 11 Apr 2023
Der 3D Raum
• Koordinatensystem– rechtshändig vs. linkshändig
• 3D - Koordinaten, z.B. (2.0, 1.5, 7.21)
x
y
zx
y
z
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 18/64 Vers. 11 Apr 2023
Der 3D Raum
• Achtung VRML benutzt rechtshändiges System!!!
=> Inkonsistenz zu OpenGL, RealiMation, Mantra4D, etc.
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 19/64 Vers. 11 Apr 2023
Globale vs. lokale Koordinatensysteme• Hierarchie von Koordinatensystemen
– Bsp. Gabel eines Gabelstaplers•Koordinaten der Gabel bzgl. Stapler•Koordinaten des Staplers bzgl. der
Welt
• Spitze der Hierarchie: Weltkoordinaten
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 20/64 Vers. 11 Apr 2023
Der Szenegraph
• Visualisierung der Szenenhierarchie
• Kanten: Abhängigkeitsrelation• Knoten ( engl. Nodes ):
– Geometrien– Transformationen– Materialeigenschaften– ...
• Knotenfelder ( engl. Fields )
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 21/64 Vers. 11 Apr 2023
Szenegraph Beispiel (1)
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 22/64 Vers. 11 Apr 2023
Szenegraph Beispiel (2)
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 23/64 Vers. 11 Apr 2023
Szenegraph Beispiel (3)
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 24/64 Vers. 11 Apr 2023
Szenegraph Beispiel (4)
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 25/64 Vers. 11 Apr 2023
Szenegraph Beispiel (5)
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 26/64 Vers. 11 Apr 2023
Eine VRML Datei
#VRML V2.0 utf8
Shape {
appearance Appearance {
material Material {
}
geometry Cone {
bottomRadius 2.4
height 5.0
}
}
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 27/64 Vers. 11 Apr 2023
Aufbau von VRML Dateien (I)
• Eine VRML2-Datei beginnt immer mit folgendem File-Header: #VRML V2.0 utf8#VRML = Es handelt sich um ein VRML-SkriptV2.0 = Versionutf8 = Character Set, hier: UTF-8 ( ISO 10646-1:1993 ) = UCS (Universal Character Set) Transformation Format, 8-bit
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 28/64 Vers. 11 Apr 2023
Aufbau von VRML Dateien (II)
• Zeilenkommentare (Beginn mit #)
• VRML Knoten und Felder• Zuordnung mit geschweiften
Klammern { }
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 29/64 Vers. 11 Apr 2023
Gruppieren von Knoten
• Zusammenfassen von Knoten zu einer Gruppe: Group Node
• Bsp:Group{
children [Shape{ ...}Shape{ ...}
] }
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 30/64 Vers. 11 Apr 2023
Transformationen (Translation)
• Translation (Verschiebung)– Verschiebungsvektor: ( x, y, z )
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 31/64 Vers. 11 Apr 2023
Transformationen (Rotation)
• Rotation (Drehung)– Rotationsachse: ( x, y, z )
Beachte: nur Richtung ist entscheidend– Rotationswinkel:
Beachte: Vorzeichen des Winkels ermittelnmit der “Rechte-Hand-Regel”Beachte: Winkel in radian messen ( = 3, 14... entsprechen 180° )
– Rotationsachse: ( x, y, z )
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 32/64 Vers. 11 Apr 2023
Transformationen (Scale)
• Skalierung (Größenänderung)– Skalierungsfaktoren: ( sx , sy , sz )
– Rotationsachse: ( x, y, z )– Rotationswinkel:
Beachte: 1. Skalierungsrotation 2. Skalierung 3. Rückrotation
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 33/64 Vers. 11 Apr 2023
Transformationsnode
• Darstellung von Transformationen in VRML durch einen Node
• Angabe von Werten zur Spezifizierung der Transformation in FieldsBsp. rotation 4.0 0.0 0.0 2.37
• Spezielles Field mit Liste der Knoten, die von der Transformation betroffen sindBsp. children [ ]
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 34/64 Vers. 11 Apr 2023
Transformationsnode (allgemein)
• Transform{ eventIn MFNode addChildren eventIn MFNode removeChildren exposedField SFVec3f center 0 0 0 # (- , ) exposedField MFNode children [] exposedField SFRotation rotation 0 0 1 0 # [-1,1],(- , ) exposedField SFVec3f scale 1 1 1 # (0, ) exposedField SFRotation scaleOrientation 0 0 10#[-1,1],(,) exposedField SFVec3f translation 0 0 0 # (-) field SFVec3f bboxCenter 0 0 0 # (- , ) field SFVec3f bboxSize -1 -1 -1 # (0, ) or -1,-1,-1 }
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 35/64 Vers. 11 Apr 2023
Transformationsnode: Beispiel#VRML V2.0 utf8Transform{
children [ Shape {appearance Appearance{ material Material { } }geometry Box { } } ]translation 0.0 4.0 0.3rotation 1.0 0.0 1.0 1.57 }
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 36/64 Vers. 11 Apr 2023
)()()( cTSRRRcTTX Tsst
VRML Transformationsknoten
VRML hat eine Skalierung S, eine Rotation R und eine Translation T(t) in fester Folge:
1. Translation T zum center point c2. Skalierungsrotation Rs
T, Skalierung S, Rückrotation Rs
3. Rotation R4. Rücktranslation vom center point c
5. Translation T(t)
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 37/64 Vers. 11 Apr 2023
VRML TransformationsknotenTransform {
center C rotation R scale S scaleOrientation SR translation T children [...] } ist äquivalent zu: Transform {
translation T children Transform { translation C
children Transform { rotation R children Transform { rotation SR
children Transform { scale S children Transform { rotation -SR
children Transform { translation-C
children [...] }}}}}}}
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 38/64 Vers. 11 Apr 2023
VRML Typen (I)
• Single Field Values (SF)Multiple Field Values (MF)
• SFBool TRUE, FALSE
• SFInt32 42MFInt32
• SFFloat -124.567MFFloat
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 39/64 Vers. 11 Apr 2023
VRML Typen (II)
• SFString “Gabelstapler”MFString
• SFTime 65(entspricht 0 Uhr 1 Minute 5 Sek. GMT am 1.1.1970)
• SFNode TransformMFNode
• SFImage
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 40/64 Vers. 11 Apr 2023
VRML Typen (III)
• SFVec2f 1.3 4.5MFVec2f
• SFVec3f 34.5 -4.9 9.0MFVec3f
• SFRotation 1.0 1.0 4.0 3.2MFRotation
• SFColor 1.0 0.0 0.0MFColor
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 41/64 Vers. 11 Apr 2023
DEF - USE Mechanismus
• Knoten können benannt werdenBsp. DEF my_box Box { ... }
• Namen– bestehen aus Buchstaben, Ziffern,
Unterstrich– beginnen mit Buchstaben– unterscheiden Groß- und Kleinschreibung
• Knoten können beliebig oft benutzt werdenBsp. USE my_box
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 42/64 Vers. 11 Apr 2023
Reservierte Namen in VRML
DEF EXTERNPROTO
FALSE
IS eventIn TRUE
TO eventOut PROTO
NULL exposedField ROUTE
USE field
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 43/64 Vers. 11 Apr 2023
Events und Routen (I)
• Ereignis (Event)– Wertänderung– Benutzerinteraktion
• Verbindung (Route)– Verbindung zweier Knoten zum
Austausch von Events– Startknoten (Quelle)– Zielknoten (Senke)
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 44/64 Vers. 11 Apr 2023
Events und Routen (II)
• Routen beziehen sich auf Fields eines Nodes
• Fields werden klassifiziert– eventIn– eventOut– exposedField
• set_XXX• XXX_changed
• Events und Routen sind getypt
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 45/64 Vers. 11 Apr 2023
Routing: Beispiel
DEF Würfel Transform{
... }
DEF Kugel Transform{
...
}
ROUTE Würfel.translation_changed TO
Kugel.set_scale
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 46/64 Vers. 11 Apr 2023
Syntax von VRML Knoten
• Knotenname• Feldliste• Für jedes Feld
– Name– Defaultwert– Art (field, eventIn, eventOut,
exposedField)– Typ
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 47/64 Vers. 11 Apr 2023
Beispiel: Syntax des TimeSensors
TimeSensorenabled TRUE exposed SFBool
startTime 0.0 exposed SFTime
stopTime 0.0 exposed SFTime cycleInterval
1.0 exposed SFTime
loop FALSE exposed SFBool
isActive eventOut SFBool
time eventOut SFTime cycleTime eventOut SFTime fraction_changed eventOut SFFloat
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 48/64 Vers. 11 Apr 2023
TimeSensoren
loop = TRUE stopTime <=startTime
EndloseZyklenabfolge
loop = TRUE startTime <stopTime
Zyklenabfolge biszur Stopzeit
loop = FALSE stopTime <=startTime
1 Zyklus, Stop beiStartzeit + Zykluszeit
loop = FALSE startTime <stopTime
1 Zyklus, Stop beiStartzeit + Zykluszeitoder Stopzeit, fallsdiese vorher
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 49/64 Vers. 11 Apr 2023
Animation
• Zeitquelle• Interpolator
– Positioninterpolator– Colorinterpolator– Scalarinterpolator– ...
• Routen: Zeit > Interpolator Interpolator > zu animierender
Wert
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 50/64 Vers. 11 Apr 2023
PositionInterpolator
• Zuordnung von Werten aus einem Interval (meist von 0.0 bis 1.0) auf Positionen
• Eingang: set_fraction (SFFloat)• Ausgang: value_changed (SFVec3f)• Zuordnung wird durch lineare
Interpolation aus einer Tabelle errechnet– key [ 0.0, 1.0 ] – keyValue [ 1.0 0.0 0.0, 5.0 0.0 0.0 ]
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 51/64 Vers. 11 Apr 2023
Routingbeispiel für Animation
Kugel sei ein Transform Node mit ShapeKugelPfad sei ein PositionInterpolator
NodeUhr sei ein TimeSensor Node
ROUTE Uhr.fraction_changed TOKugelPfad.set_fraction
ROUTE KugelPfad.value_changed TOKugel.set_translation
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 52/64 Vers. 11 Apr 2023
Inlines
• Einfügen von VRML Dateien in VRML Dateien
• Beispiel:Inline {
url “beispiel.wrl” }
• Eigener Namensraum bei DEF / USE!
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 53/64 Vers. 11 Apr 2023
VRML Knoten
• Auflistung aller Nodes und Fields in der VRML Spezifikation
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 54/64 Vers. 11 Apr 2023
Prototypen (I)
• Kapseln von Teilen des Szenengraphen
• Eigendefinierter Knoten• Parametrisierbar• Syntax:
PROTO name [ interface ] { body }• Herstellen einer Verbindung
zwischen interface und body mit dem IS Konstrukt
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 55/64 Vers. 11 Apr 2023
Prototypen (II)
PROTO Würfel [
field SFVec3f abmessung 1.0 1.0 1.0
] {
Shape { appearence Appearence{
material Material{ } }
geometry Box{
size IS abmessung } }
}
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 56/64 Vers. 11 Apr 2023
Externe Prototypen
• Syntax:EXTERNPROTO name [ interface ] { urls }
• Anlegen von Prototypbibliotheken• Beispiel:
EXTERNPROTO Cube [ field SFVec3f abmessung 1.0 1.0 1.0
] {“lib.wrl#Würfel”
}
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 57/64 Vers. 11 Apr 2023
Aufbau von VRML - Dateien (II)
• VRML - Header
• Kommentare
• Prototyp - Definitionen
• Knoten und Felder
• Routen
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 58/64 Vers. 11 Apr 2023
Java3D und VRML
• Ähnlichkeiten:– Szenegraphmodell– Java Klassen zur Repräsentation
von Nodes etc.
• Unterschiede:– Kein Routing, sondern Java
Events– Java3D legt kein
Geometrieformat fest– Java3D ist mächtiger
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 59/64 Vers. 11 Apr 2023
Browser für VRML
• Cortona (Parallel Graphics), Download: http://www.parallelgraphics.com/cortona/
• BS Contact VRML (Bitmanagement Software) http://www.bitmanagement.de
• Blaxxunhttp://www.blaxxun.de
• Cosmo Player (wird nicht mehr weitergepflegt) • World View
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 60/64 Vers. 11 Apr 2023
Informationsressource: WWW (I)
• VRML Konsortium Homepagehttp://www.web3d.org/Gesellschaft mit dem Ziel der Standar-disierung und Verbreitung von VRML
• VRML Repositoryhttp://www.sdsc.edu/vrml/Sehr gute, umfassende Zusammenstellung von Verweisen zum Thema VRML
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 61/64 Vers. 11 Apr 2023
Informationsressource: WWW (II)
• ParallelGraphicshttp://www.parallelgraphics.comWichtiger VRML-Browser Hersteller (1)
• blaxxun interactivehttp://www.blaxxun.deWichtiger VRML-Browser Hersteller (2)
• Javasoft Homepagehttp://www.javasoft.com/Wichtige Informationsquelle zu Java
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 62/64 Vers. 11 Apr 2023
Informationsressource: WWW (III)
• Xj3D http://www.web3D.org/TaskGroups/source/xj3d.htmlEnthält auch VRML97 Loader für Java3D
• Java API Spezifikationhttp://java.sun.com/products/jdk/1.1/docs/siehe Java Platform Core API
• The Mining Companyhttp://vrml.miningco.com/Grosses Repository
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 63/64 Vers. 11 Apr 2023
Informationsressource: Mailinglist
• Wichtigste allgemeine Mailingliste:[email protected] www-vrml
• Liste spezielle zum Thema Scripting:[email protected] vrml-behaviors
• VRML Benutzergruppe (dt.):http://www.inexnet.de/ger-vrml/
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 64/64 Vers. 11 Apr 2023
Informationsressource: Buch (I)
• VRML 2.0 Source BookAmes, Nadeau, MorelandWiley, 1996
• Annotated VRML Reference ManualBell, CareyAddison-Wesley, 1997
• Teach Yourself VRML in 21 DaysMarrin, CampbellSAMS Net, 1997
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 65/64 Vers. 11 Apr 2023
Informationsressource: Buch (II)
• The VRML 2.0 HandbookHartman, WerneckeAddison-Wesley, 1996
• Late Night VRML 2.0 with JavaRoehl, Couch et al.ZD Press, 1997
• VRML 97 (dt.)Addison-Wesley, 1997
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 66/64 Vers. 11 Apr 2023
Informationsressource: Buch (III)
• JAVA for 3D and VRML WorldsLea, Matsuda, MiyashitaNew Riders, 1996
• JAVA 1.1 für Insider (dt.)MorrisonSAMS, 1997
• JAVA 1.1 in a Nutshell (dt.)O’Reilly, 1997
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 67/64 Vers. 11 Apr 2023
Copyright
Diese Folien basieren auf folgenden Kursen:– C. Seiler
Einführung in VRML/ Uni Frankfurt SS 2003– R. Dörner
Computergraphik mit VRML und Java3D, Uni Frankfurt 2000 WS Praktikum
– R. Dörner, C. Elcacho, A. Schäfer:VRML und Java – Programmierung von 3D Welten für das Internet, AWF Seminar am Zentrum f. Graph. Datenverarbeitung
– D.R. Nadeau, H. A. Sowrizal:Introduction to Programming with Java3D Eurographics‘99 Tutorial
– J. Zukowski:Introduction to the javabeans API, Tutorial von SUN Microsystems Inc.
VRML-Einführung / 2006 SS GDVTobias Breiner Folie 68/64 Vers. 11 Apr 2023
Fragen & Kommentare
? ? !