GDV Übungen: VRML Einführung in VRML Tobias Breiner Johann Wolfgang Goethe-Universität Frankfurt/Main VRML-Einführung / 2006 SS GDV Tobias Breiner
Aussprache VRML Häufigste Aussprache: “Wörmel” Seltener: “VauErrEmmEll” Wofür könnten die Buchstaben stehen? VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
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 GDV Tobias Breiner
Beispiel einer VRML Szene VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
VRML: Features (Oberflächen) Materialbeschreibungen Farbe Schattierungen Beleuchtungsbeschreibungen Texturierungen Auch Movie-Textures Aber keine Bumpmaps! VRML-Einführung / 2006 SS GDV Tobias Breiner
VRML: Features (Raum-Zeit) Transformationsbeschreibungen Lichter Point Directional Spot Kamerabeschreibungen Viewpoints VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
VRML: Features (Special Effects) Hintergrund und Nebel Multimediabeschreibungen Video 3D Sound Billboards Hypermediabeschreibung Anchors VRML-Einführung / 2006 SS GDV Tobias Breiner
VRML: Features (Strukturierung) Strukturbeschreibungen Gruppierungen Prototypen Detaillierungsbeschreibungen VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
VRML und Programmierlogik Programme können in die VRML Szene eingreifen Anwendungsbeispiele Mehrbenutzersysteme Datenbankanbindung Simulationen VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
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 GDV Tobias Breiner
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 GDV Tobias Breiner
Der 3D Raum Koordinatensystem 3D - Koordinaten, z.B. (2.0, 1.5, 7.21) rechtshändig vs. linkshändig 3D - Koordinaten, z.B. (2.0, 1.5, 7.21) y y z x x z VRML-Einführung / 2006 SS GDV Tobias Breiner
Der 3D Raum Achtung VRML benutzt rechtshändiges System!!! => Inkonsistenz zu OpenGL, RealiMation, Mantra4D, etc. VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
Der Szenegraph Visualisierung der Szenenhierarchie Kanten: Abhängigkeitsrelation Knoten ( engl. Nodes ): Geometrien Transformationen Materialeigenschaften ... Knotenfelder ( engl. Fields ) VRML-Einführung / 2006 SS GDV Tobias Breiner
Szenegraph Beispiel (1) VRML-Einführung / 2006 SS GDV Tobias Breiner
Szenegraph Beispiel (2) VRML-Einführung / 2006 SS GDV Tobias Breiner
Szenegraph Beispiel (3) VRML-Einführung / 2006 SS GDV Tobias Breiner
Szenegraph Beispiel (4) VRML-Einführung / 2006 SS GDV Tobias Breiner
Szenegraph Beispiel (5) VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
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-Skript V2.0 = Version utf8 = Character Set, hier: UTF-8 ( ISO 10646-1:1993 ) = UCS (Universal Character Set) Transformation Format, 8-bit VRML-Einführung / 2006 SS GDV Tobias Breiner
Aufbau von VRML Dateien (II) Zeilenkommentare (Beginn mit #) VRML Knoten und Felder Zuordnung mit geschweiften Klammern { } VRML-Einführung / 2006 SS GDV Tobias Breiner
Gruppieren von Knoten Zusammenfassen von Knoten zu einer Gruppe: Group Node Bsp: Group{ children [ Shape{ ...} Shape{ ...} ] } VRML-Einführung / 2006 SS GDV Tobias Breiner
Transformationen (Translation) Translation (Verschiebung) Verschiebungsvektor: ( x, y, z ) VRML-Einführung / 2006 SS GDV Tobias Breiner
Transformationen (Rotation) Rotation (Drehung) Rotationsachse: ( x, y, z ) Beachte: nur Richtung ist entscheidend Rotationswinkel: j Beachte: Vorzeichen des Winkels ermitteln mit der “Rechte-Hand-Regel” Beachte: Winkel in radian messen ( p = 3, 14... entsprechen 180° ) Rotationsachse: ( x, y, z ) VRML-Einführung / 2006 SS GDV Tobias Breiner
Transformationen (Scale) Skalierung (Größenänderung) Skalierungsfaktoren: ( sx , sy , sz ) Rotationsachse: ( x, y, z ) Rotationswinkel: j Beachte: 1. Skalierungsrotation 2. Skalierung 3. Rückrotation VRML-Einführung / 2006 SS GDV Tobias Breiner
Transformationsnode Darstellung von Transformationen in VRML durch einen Node Angabe von Werten zur Spezifizierung der Transformation in Fields Bsp. rotation 4.0 0.0 0.0 2.37 Spezielles Field mit Liste der Knoten, die von der Transformation betroffen sind Bsp. children [ ] VRML-Einführung / 2006 SS GDV Tobias Breiner
Transformationsnode (allgemein) 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 GDV Tobias Breiner
Transformationsnode: Beispiel #VRML V2.0 utf8 Transform{ children [ Shape { appearance Appearance{ material Material { } } geometry Box { } } ] translation 0.0 4.0 0.3 rotation 1.0 0.0 1.0 1.57 } VRML-Einführung / 2006 SS GDV Tobias Breiner
VRML Transformationsknoten VRML hat eine Skalierung S, eine Rotation R und eine Translation T(t) in fester Folge: 1. Translation T zum center point c 2. Skalierungsrotation RsT, Skalierung S, Rückrotation Rs 3. Rotation R 4. Rücktranslation vom center point c 5. Translation T(t) VRML-Einführung / 2006 SS GDV Tobias Breiner
VRML Transformationsknoten 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 GDV Tobias Breiner
VRML Typen (I) Single Field Values (SF) Multiple Field Values (MF) SFBool TRUE, FALSE SFInt32 42 MFInt32 SFFloat -124.567 MFFloat VRML-Einführung / 2006 SS GDV Tobias Breiner
VRML Typen (II) SFString “Gabelstapler” MFString SFTime 65 (entspricht 0 Uhr 1 Minute 5 Sek. GMT am 1.1.1970) SFNode Transform MFNode SFImage VRML-Einführung / 2006 SS GDV Tobias Breiner
VRML Typen (III) SFVec2f 1.3 4.5 MFVec2f SFVec3f 34.5 -4.9 9.0 MFVec3f SFRotation 1.0 1.0 4.0 3.2 MFRotation SFColor 1.0 0.0 0.0 MFColor VRML-Einführung / 2006 SS GDV Tobias Breiner
DEF - USE Mechanismus Knoten können benannt werden Bsp. DEF my_box Box { ... } Namen bestehen aus Buchstaben, Ziffern, Unterstrich beginnen mit Buchstaben unterscheiden Groß- und Kleinschreibung Knoten können beliebig oft benutzt werden Bsp. USE my_box VRML-Einführung / 2006 SS GDV Tobias Breiner
Reservierte Namen in VRML VRML-Einführung / 2006 SS GDV Tobias Breiner
Events und Routen (I) Ereignis (Event) Verbindung (Route) Wertänderung Benutzerinteraktion Verbindung (Route) Verbindung zweier Knoten zum Austausch von Events Startknoten (Quelle) Zielknoten (Senke) VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
Routing: Beispiel DEF Würfel Transform{ ... } DEF Kugel Transform{ ... ... } DEF Kugel Transform{ ... } ROUTE Würfel.translation_changed TO Kugel.set_scale VRML-Einführung / 2006 SS GDV Tobias Breiner
Syntax von VRML Knoten Knotenname Feldliste Für jedes Feld Name Defaultwert Art (field, eventIn, eventOut, exposedField) Typ VRML-Einführung / 2006 SS GDV Tobias Breiner
Beispiel: Syntax des TimeSensors VRML-Einführung / 2006 SS GDV Tobias Breiner
TimeSensoren VRML-Einführung / 2006 SS GDV Tobias Breiner
Animation Zeitquelle Interpolator Positioninterpolator Colorinterpolator Scalarinterpolator ... Routen: Zeit > Interpolator Interpolator > zu animierender Wert VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
Routingbeispiel für Animation Kugel sei ein Transform Node mit Shape KugelPfad sei ein PositionInterpolator Node Uhr sei ein TimeSensor Node ROUTE Uhr.fraction_changed TO KugelPfad.set_fraction ROUTE KugelPfad.value_changed TO Kugel.set_translation VRML-Einführung / 2006 SS GDV Tobias Breiner
Inlines Einfügen von VRML Dateien in VRML Dateien Beispiel: Inline { url “beispiel.wrl” } Eigener Namensraum bei DEF / USE! VRML-Einführung / 2006 SS GDV Tobias Breiner
VRML Knoten Auflistung aller Nodes und Fields in der VRML Spezifikation VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
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 GDV Tobias Breiner
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 GDV Tobias Breiner
Aufbau von VRML - Dateien (II) VRML - Header Kommentare Prototyp - Definitionen Knoten und Felder Routen VRML-Einführung / 2006 SS GDV Tobias Breiner
Java3D und VRML Ähnlichkeiten: Unterschiede: 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 GDV Tobias Breiner
Browser für VRML Cortona (Parallel Graphics), Download: http://www.parallelgraphics.com/cortona/ BS Contact VRML (Bitmanagement Software) http://www.bitmanagement.de Blaxxun http://www.blaxxun.de Cosmo Player (wird nicht mehr weitergepflegt) World View VRML-Einführung / 2006 SS GDV Tobias Breiner
Informationsressource: WWW (I) VRML Konsortium Homepage http://www.web3d.org/ Gesellschaft mit dem Ziel der Standar-disierung und Verbreitung von VRML VRML Repository http://www.sdsc.edu/vrml/ Sehr gute, umfassende Zusammenstellung von Verweisen zum Thema VRML VRML-Einführung / 2006 SS GDV Tobias Breiner
Informationsressource: WWW (II) ParallelGraphics http://www.parallelgraphics.com Wichtiger VRML-Browser Hersteller (1) blaxxun interactive http://www.blaxxun.de Wichtiger VRML-Browser Hersteller (2) Javasoft Homepage http://www.javasoft.com/ Wichtige Informationsquelle zu Java VRML-Einführung / 2006 SS GDV Tobias Breiner
Informationsressource: WWW (III) Xj3D http://www.web3D.org/TaskGroups/source/xj3d.html Enthält auch VRML97 Loader für Java3D Java API Spezifikation http://java.sun.com/products/jdk/1.1/docs/ siehe Java Platform Core API The Mining Company http://vrml.miningco.com/ Grosses Repository VRML-Einführung / 2006 SS GDV Tobias Breiner
Informationsressource: Mailinglist Wichtigste allgemeine Mailingliste: majordomo@web3d.org subscribe www-vrml Liste spezielle zum Thema Scripting: majordomo@sdsc.edu subscribe vrml-behaviors VRML Benutzergruppe (dt.): http://www.inexnet.de/ger-vrml/ VRML-Einführung / 2006 SS GDV Tobias Breiner
Informationsressource: Buch (I) VRML 2.0 Source Book Ames, Nadeau, Moreland Wiley, 1996 Annotated VRML Reference Manual Bell, Carey Addison-Wesley, 1997 Teach Yourself VRML in 21 Days Marrin, Campbell SAMS Net, 1997 VRML-Einführung / 2006 SS GDV Tobias Breiner
Informationsressource: Buch (II) The VRML 2.0 Handbook Hartman, Wernecke Addison-Wesley, 1996 Late Night VRML 2.0 with Java Roehl, Couch et al. ZD Press, 1997 VRML 97 (dt.) Addison-Wesley, 1997 VRML-Einführung / 2006 SS GDV Tobias Breiner
Informationsressource: Buch (III) JAVA for 3D and VRML Worlds Lea, Matsuda, Miyashita New Riders, 1996 JAVA 1.1 für Insider (dt.) Morrison SAMS, 1997 JAVA 1.1 in a Nutshell (dt.) O’Reilly, 1997 VRML-Einführung / 2006 SS GDV Tobias Breiner
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 GDV Tobias Breiner
Fragen & Kommentare ? ? ! VRML-Einführung / 2006 SS GDV Tobias Breiner