Folie 1/64 Vers. 13-Nov-13 VRML-Einführung / 2006 SS GDV Tobias Breiner GDV Übungen: VRML...

Post on 05-Apr-2015

117 views 2 download

Transcript of Folie 1/64 Vers. 13-Nov-13 VRML-Einführung / 2006 SS GDV Tobias Breiner GDV Übungen: VRML...

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:majordomo@web3d.orgsubscribe www-vrml

• Liste spezielle zum Thema Scripting:majordomo@sdsc.edusubscribe 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

? ? !