Seminar Multimedia und Electronic Publishing
Kapitel 3: Virtual Reality Modeling Language (VRML): Interaktive 3D-Dokumente


next up gif externalexternalexternalexternal

Next: Verwendung von Scripts Up: Spezifikation Previous: WorldInfo


Erweiterbarkeit (Prototypen)

Die Erweiterbarkeit von VRML wird möglich durch das sogenannte Prototyping. Es erlaubt die Definition von neuen Nodes. Eine Prototypdefinition ist wie folgt aufgebaut:

Die Syntax ist folgendermaßen:

PROTO prototypname [ eventIn       eventtypname name
                     eventOut      eventtypname name
                     exposedField  feldtypname  name standardwert
                     field         feldtypname  name standardwert
                     ...
                     ]
{
  Mehrere oder keine Routes und Prototypen
  Erste Node (Definiert den Nodetyp des Prototyps)
  Mehrere oder keine Nodes (jedes Typs), Routes und Prototypen
}

Hierzu ein Beispiel:

#VRML V2.0 utf8

##########################################################
# Hier kommt der Prototyp
##########################################################

PROTO SphereCone [ field SFFloat radius    2.0
                   field SFFloat height    5.0
                   field SFNode  sphereApp NULL
                   field SFNode  coneApp   NULL ]
{
  Transform
  {
    children [ Shape
               {
                 appearance IS sphereApp
                 geometry Sphere { radius IS radius }
               }
               Shape
               {
                 appearance IS coneApp
                 geometry Cone { height IS height }
               }
             ]
  }
}

##########################################################
# ... und ab hier wird er verwendet
##########################################################

Transform
{
  translation 15 0 0
  children SphereCone
  {
    radius 5.0
    height 20.0
    sphereApp Appearance { material Material { ... } }
    coneApp   Appearance { texture ImageTexture { ... } }
  }
}
Transform
{
  translation -10 0 0
  children SphereCone
  {			# Hier werden die Standardwerte benutzt
    sphereApp Appearance { texture ImageTexture { ... } }
    coneApp   Appearance { material Material { ... } } 
  }
}

Es ist auch möglich auf Prototypen in anderen Dateien zuzugreifen

EXTERNPROTO prototypname [ eventIn       eventtypname name
                           eventOut      eventtypname name
                           exposedField  feldtypname  name
                           feldtypname   feldtypname  name
                           ...
                         ]
"URL/URN" (, "URL/URN", "URL/URN", ... )

Der Prototyp wird dann in der Datei gesucht, auf die durch die URL oder URN verwiesen wird. Werden mehrere URL's oder URN's angegeben, werden sie der Reihenfolge nach durchsucht.




next up gif externalexternalexternalexternal

Next: Verwendung von Scripts Up: Spezifikation Previous: WorldInfo

Jürgen Moßgraber, Freitag, 14. Februar 1997, 12:22:19 Uhr MET