Die folgenden Demonstrationsbeispiele sollen nicht erschöpfend alle Fragen beantworten und können schon gar nicht als Programmieranleitung betrachtet werden. Vielmehr sollen die wesentlichen Möglichkeiten und Leistungen von VRML aufgezeigt werden, wobei bewußt nur sehr einfach gehaltene Szenen genutzt werden. Es wird vorausgesetzt, daß gewisse Grundkenntnisse sowohl über VRML als auch über die Handhabung eines VRML-Viewers bekannt sind. Es wird empfohlen, die o.g. Diplomarbeit zum besseren Verständnis zu lesen. Zu weiterführenden Ausführungen, insbesondere zur Syntax, sollte auf die vollständige Spezifikation des VRML97-Standards zurückgegriffen werden. Diese kann als HTML-Dokument eingesehen oder im Zip-Format heruntergeladen werden.
Sämtliche Beispiele wurden in VRML 2.0 erstellt und mit dem Cosmo
Player 2.1 von Silicon Graphics unter Netscape
Navigator 4.05 getestet. Zum umfassenden Verständnis ist es unbedingt
notwendig, die VRML-Szenen anzuklicken und in diesen selbst tätig
zu werden. Allein das Betrachten der "Schnappschüsse" kann das Anliegen
nicht genügend verdeutlichen.
|
Dieses einfache Beispiel zeigt einen simplen Quader, dessen
Kantenlängen auf das Verhältnis 3 : 1 : 7 abgeändert wurden.
Alle charakterisierenden Materialeigenschaften wurden bei den Standardeinstellungen belassen. Das hat zur Folge, daß sich die einzelnen Oberflächen farblich nicht unterscheiden und die dreidimensionale Geometrie optisch nicht zum Tragen kommt. |
VRML unterstützt nur diese vier geometrischen Primitive: den Quader,
den Kegel, den Zylinder und die Kugel. Alle Primitiven
mußten hier einer Translation unterzogen werden, um sie nebeneinander
zu plazieren. Zusätzlich wurden alle vier um eine jeweils unterschiedliche
Achse rotiert. Die standardmäßige Ausdehnung wurde aber beibehalten.
Die Eigenschaften der diffusen Reflexion wurden abgeändert, wobei dem Würfel, Kegel und Zylinder je eine maximale Komponente des RGB-Tripels zugewiesen wurde. Der Kugel wurde sowohl die Rot- als auch Grün-Komponente zugeteilt, wodurch diese gelbes Licht reflektiert. |
|
|
In diesem Beispiel wurden vier verschiedenfarbige Kugeln so transformiert,
daß sie einen Haufen bilden. Auf der obersten gelben Kugel wurde
ein um 180 Grad rotierter Kegel so aufgesteckt, daß dessen Spitze
sich im Inneren der Kugel befindet. Sowohl die Kugeln als auch der Kegel
wurden transparent gestaltet.
Zusätzlich wurde ein grauer Zylinder mit großem Radius aber sehr kleiner Höhe vereinbart. Dieser übernimmt gewissermaßen die Funktion einer Grundebene, d.h. über ihr wirkt im Geh-Modus die Gravitation. Beim Eintritt in die Szene ist diese Grundebene nicht zu erkennen, da das Licht der Helmlampe nicht auf diese trifft. Machen Sie die Grundebene sichtbar, indem Sie zum Neig-Modus umschalten und ein wenig nach unten blicken! Dieses Kugelhaufen-Beispiel wird zur Demonstration verschiedenartiger Effekte auch von anderen Szenen importiert und verwendet. |
Das Höhengitter beschreibt einen Flächenverlauf.
Die dargestellte Fläche besteht aus einem regelmäßigen, rechteckigen 10 x 8 Raster mit individuellen Höhen. Das Raster wurde in x-Richtung auf das Doppelte gestreckt. Sofern der Geh-Modus eingeschaltet ist, läßt sich das Höhengitter betreten. Da die Berge kein Hindernis darstellen bzw. keine Kollision hervorrufen, können diese problemlos bis zur Spitze bestiegen werden. Dieses Höhengitter wurde nicht als geschlossener Körper definiert, somit kann es auch von der anderen Seite aus betrachtet werden, wobei es sich dann um die negative Darstellung handelt. |
|
|
Diese Flasche wurde durch Extrusion modelliert. Dazu wurde eine
achteckige Grundfläche in sechs Schritten entlang einer Trajektorie
in y-Richtung bewegt. Um einen leicht verdrehten Flaschenbauch zu erzielen,
wurde vor der Extrusion dieses Segmentes die Grundfläche entsprechend
rotiert.
Navigieren Sie im Flug-Modus senkrecht über den Flaschenhals und lassen Sie sich durch Zuschalten der Gravitation (Geh-Modus) in die Flüssigkeit der geöffneten Flasche fallen! |
Daß sich mit Hilfe der Extrusion auch unregelmäßige
Körper gestalten lassen, zeigt dieses Beispiel. Die Richtung der Trajektorie
wurde dabei nach jedem Schritt neu bestimmt.
Es handelt sich um einen Hohlkörper, der an einem Ende geöffnet ist. Versuchen Sie, an dieser Stelle in den Körper hineinzugehen! |
|
|
Achten Sie bei der Darstellung von Text darauf, daß im
US-ASCII-Format kein ß enthalten ist. Das gleiche gilt für die
deutschen Umlaute und einige andere Zeichen.
Paradoxerweise kann mit Text keine Kollision erfolgen. Testen Sie! Gehen Sie durch die Schrift hindurch, drehen Sie sich um und lesen Sie den Text spiegelverkehrt! Text kann auch transformiert werden, was das Plakattafel-Beispiel demonstriert. |
|
Die fünf Kugeln sind mit unterschiedlichen Materialeigenschaften
versehen, wozu auch die Farbe zählt. Die rote Kugel repräsentiert
eine sehr matte Oberfläche. Im Gegensatz dazu wurde der lila
(lila = rot + blau) Kugel ein hoher Glanzeffekt zugeordnet, wobei
hauptsächlich der Rot-Anteil gespiegelt wird. Die graue und die grüne
Kugel wurden transparent gestaltet, durch sie kann also im bestimmten
Maße hindurchgeblickt werden.
Die orange Kugel reflektiert rotes Licht und emittiert zusätzlich eigenes gelbes Licht. Zur Kontrolle schalten Sie die Helmlampe als einzige Lichtquelle aus (beim Cosmo Player <*> auf der Zehnertastatur)! Sie sehen dann nur noch die (jetzt rein gelbe) selbstleuchtende Kugel. Die vier anderen Kugeln sehen Sie nur, wenn diese von einer Lichtquelle beleuchtet werden, was zugleich beweist, daß die gelb leuchtende Kugel keine Lichtquelle ist. |
|
Texturen können auf jegliche Oberfläche aufgebracht
werden. Wahlweise kann eine Textur entweder nur einen Flächenteil
oder die ganze Fläche ausfüllen. Im letzteren Fall kann spezifiziert
werden, wie oft diese sich neben- bzw. übereinander wiederholen soll.
Ebenfalls zu beeinflussen ist die Ausrichtung: die Textur kann in gewünschter
Weise verschoben, rotiert und skaliert werden.
Die mittlere Textur ist ein Video ohne Tonanteil. Natürlich kann dieses nur dargestellt werden, wenn Ihr Rechnersystem das Abspielen unterstützt. |
Wird eine Textur einem geometrischen
Primitiv zugewiesen, so wird diese immer auf allen Teilflächen
dargestellt. Das führt zu unterschiedlich Effekten.
Auf einem Quader wird eine Textur sechsmal, also an jeder Quaderfläche, abgebildet. Eine Kugel wird hingegen von einer einzigen Abbildung der Textur vollständig überzogen, wobei diese aber eine Naht aufweist und zwangsläufig stark verzerrt wird. Dies gilt ebenso für die gerundeten Mantelflächen des Zylinders oder Kegels. Die Grundfläche des Kegels sowie der Boden und der Deckel des Zylinders zeigen einen Kreisausschnitt der Textur. |
|
|
Für dieses Beispiel wurden die Szenen Höhengitter,
Text, Materialeigenschaften,
Berührungs-Sensor und
JavaScript importiert und zusammengeführt.
Es wurden acht ausgewählte Blickpunkte definiert, welche interessante
Ausschnitte der virtuellen Landschaft zeigen und die Navigation in dieser
erleichtern sollen. Die eigenhändige Navigation wird dadurch nicht
eingeschränkt.
Die Blickpunkte wurden hinsichtlich Position, Orientierung und Kurzbeschreibung variiert. Absichtlich wurde der Blickwinkel bei der Standardeinstellung von 45 Grad belassen. Alle Kurzbeschreibungen finden sich in einem Menü des Viewer-Steuerpultes wieder und dienen zur Auswahl der Blickpunkte. Wählen Sie die Blickpunkte zunächst in vorgegebener, anschließend in unterschiedlicher Reihenfolge im Steuermenü aus! Der Blickpunkt über dem offenen Flaschenhals ist nur von kurzer Dauer, die Schwerkraft tut ihre Pflicht. |
Ähnlich der Brennweite einer Kamera kann für jeden Blickpunkt
ein vertikaler Blickwinkel angegeben werden, welcher das Sichtfeld spezifiziert.
Der standardmäßig eingestellte Winkel beträgt 45 Grad.
Ein kleinerer Winkel entspricht der Betrachtung durch ein Teleobjektiv,
wobei ein kleiner, weit entfernter Ausschnitt aus der Szene vergrößert
dargestellt wird. Ein größerer Winkel hat hingegen den Effekt
eines Weitwinkelobjektivs.
Zur Demonstration wurde das Plakattafel-Beispiel und das hier stark vergrößerte Höhengitter importiert. Es wurden sieben Blickpunkte definiert, die alle die gleiche Position haben und sich im Blickwinkel (10, 20, 45, 90, 120, 150 und 180 Grad) unterscheiden. Der Blickwinkel des jeweils aktiven Blickpunktes wird als Kurzbeschreibung angezeigt. Schalten Sie vorerst zwischen den Blickpunkten um, ohne den Standort zu verändern! Untersuchen Sie daraufhin die Auswirkungen unterschiedlicher Blickwinkel auf das Sichtfeld während der Navigation! |
|
|
In diesem Beispiel wurde ein einzelnes Punktlicht vereinbart,
das in alle Richtungen gleichmäßig strahlt. Die Position der
Lichtquelle befindet sich auf der rechten Seite leicht nach vorn versetzt
in Höhe der gelben Kugel.
Zu erkennen sind nur die vom Licht angestrahlten Flächen. Weil auf die Oberseite der Kreisfläche des Kegels kein Licht auftrifft, ist diese nicht sichtbar. Navigieren Sie über diese Fläche und vergewissern Sie sich, daß diese schwarz ist! |
|
Das hier verwendete gerichtete Licht besitzt eine starke Rot-Komponente.
Das führt dazu, daß alle Objekte hauptsächlich rotes Licht
reflektieren. Zu erkennen ist dies an der eigentlich gelben Kugel (Rot-
und Grün-Komponenten ergeben gelb), die aus diesem Grund hier orange
aussieht.
Im Unterschied zum vorherigen Beispiel trifft das Licht auf die Kreisfläche des Kegels. Diesmal wird der Kegelmantel nicht beschienen, so daß dieser zwar schwarz, aber dennoch transparent ist. |
|
Zur Demonstration des Spotlichtes wurde das Höhengitter-Beispiel
importiert, um den Effekt des gerichteten Lichtkegels besser sichtbar zu
machen. Die Lichtquelle wurde senkrecht über dem Gitter plaziert,
mit Ausbreitungsrichtung nach unten. Sowohl der Winkel des inneren als
auch des äußeren Lichtkegels wurden verkleinert, um auf dem
Gitter den kompletten Übergang bis zu den unbeleuchteten Flächen
abzubilden.
Schalten Sie kurz die Helmlampe ein, um einen vollständigen Überblick über das Höhengitter zu erhalten. |
Diese Szene enthält drei Tonquellen, welche jeweils unterschiedliche
Musik ausstrahlen. Die Musikstücke liegen im Wavefile-Format vor,
sind nur einige Sekunden lang, werden aber in einer Endlosschleife laufend
wiederholt.
Alle drei Tonquellen, symbolisiert durch rote Kugeln, haben die gleichen Ausbreitungseigenschaften, d.h. Richtung und Ausdehnung. Die Ausbreitung von Ton wird zwar normalerweise durch ein doppeltes Ellipsoid beschrieben, soll hier aber der Einfachheit halber mittels Drahtgitter-Quadern optisch veranschaulicht werden. Die Polylinien geben also nicht genau die Grenzen der Hörbarkeit an, was insbesondere für die seitliche Ausbreitung gilt. Trotzdem können diese als Orientierungshilfe zur Erforschung der Akustik dienen. Navigieren Sie derart genau zwischen zwei Tonquellen, daß Sie gleichzeitig beide Musikstücke hören können! Drehen Sie sich an diesem Punkt um die eigene Achse und hören Sie die Unterschiede des linken sowie rechten Tonkanals (sofern Sie eine Stereo-Soundkarte besitzen)! Wenn Sie sich außerhalb der Reichweite aller Tonquellen befinden und demzufolge kein Ton hörbar ist, werden trotzdem alle drei Musikstücke weitergespielt, d.h. die Hardware wird dementsprechend ständig belastet! |
|
|
Die rote Kugel repräsentiert eine Tonquelle, welche die
Musik einer MIDI-Datei abspielt. Die Tonquelle befindet sich nicht im Zentrum
des akustischen Raumes, deshalb wird die Intensität der Musik entlang
der beiden Richtungen der Ausbreitungsachse (weiße Hilfslinie) unterschiedlich
stark gedämpft.
Innerhalb des inneren Quaders, welcher auch hier als starke Vereinfachung eines Ellipsoids gebraucht wird, bleibt die Tonintensität konstant auf dem maximalen Wert. Der äußere Quader gibt die ungefähre Grenze der Hörbarkeit an. Zwischen diesen beiden fällt die Intensität mit dem Quadrat der Entfernung ab. Die unterschiedliche Ausbreitung der Musik läßt sich zwischen den Quadern gut wahrnehmen. |
Grauer Nebel schränkt die Sichverhältnisse dieser
Szene stark ein. Über dem Untergrund sind deutlich Nebelschwaden zu
erkennen. Je weiter Objekte entfernt sind, desto verschwommener sind diese
zu sehen, wobei dieser Effekt exponentiell zunimmt.
Damit ab einer bestimmten Entfernung die Objekte nicht mehr vom Hintergrund zu unterscheiden sind, wurde dieser mit derselben Farbe wie die des Nebels eingefärbt. Bei Verwendung von transparenten Objekten tritt ein gravierender Mangel in Erscheinung (zumindest beim Cosmo Player). Während sich, wie beabsichtigt, die Farben der linken vier Geometrien und der Grundebene mit der des Nebels mit wachsender Distanz vermischen, bis diese schließlich nicht mehr unterschieden werden können, behalten hingegen die transparenten Objekte weiterhin ihre Farbe und sind unbegrenzt sichtbar. Bei opaken Objekten tritt dieser Mangel nicht auf. |
|
|
Der Hintergrund setzt sich aus Boden und Himmel zusammen. Senkrecht
am Himmel ist zudem eine Sonne zu erkennen. Wenn Sie diese betrachten wollen,
müssen Sie entweder zum Neig- oder Prüf-Modus umschalten.
Dem Himmel wurden insgesamt nur fünf Farben zugewiesen. Die erste Farbe legt das Zentrum der Sonne und die zweite deren Korona bzw. deren direkte Umgebung fest. Die restlichen drei Farben sind Blautöne für die Atmosphäre. Der interpolierte Farbverlauf von dunkelblau in Sonnennähe bis hellblau am Horizont erforderte noch die Angabe von Winkeln, welche die Übergänge gezielt festgelegen. Für die farbliche Abstufung des Bodens wurden nur zwei Farben verwendet. |
Eine Szene kann durch ein Panorama umrahmt werden, welches sich
vor dem eigentlichen Hintergrund befindet. Hier wurde jeweils eine Wolken-Textur
auf der vorderen, linken und rechten Seite aufgebracht. Die Rückseite,
der Boden und der Deckel wurden freigelassen, wodurch der Hintergrund sichtbar
ist. Die Farben wurden ähnlich denen nach einem Sonnenuntergang gewählt.
Schalten Sie die Helmlampe aus, um zu erkennen, daß Hintergrund und Panorama im Gegensatz zu den Objekten von Lichtquellen nicht beeinflußt werden! Versuchen Sie erst gar nicht, den Wolken näher zu kommen, da diese in der Unendlichkeit liegen! |
|
|
In diesem Beispiel wurden die Navigationseinstellungen, d.h.
die Eigenschaften des Avatars verändert. Gegenüber den
Standardeinstellungen wurden die Augenhöhe und der Körperumfang
(Kollisionsabstand) verringert sowie die Navigationsgeschwindigkeit
verlangsamt.
Es werden vier unterschiedlich hohe Plattformen dargestellt, an denen die maximale Steighöhe des Avatars demonstriert werden soll. Die ersten drei Plattformen lassen sich erklimmen, mit der obersten erfolgt jedoch eine Kollision. Testen Sie! Beachten Sie auch, daß der Geh-Modus eingestellt ist und der Flug- sowie Prüf-Modus nicht verfügbar sind! Um die drei farbig strahlenden Punktlichter unverfälscht zur Geltung zu bringen, wurde die Helmlampe ausgeschaltet. Zusätzlich wurde eine maximale Sichtweite festgelegt. Entfernen Sie sich von den Plattformen rückwärts solange, bis diese außerhalb der Sichtweite liegen! |
Drag-Sensoren haben die Aufgabe, die Ziehbewegungen der Maus auf dreidimensionale
Koordinaten abzubilden. Dazu wird ein kontinuierlicher Ereignisstrom dem
entsprechenden Transformations-Knoten zugeleitet, welcher den zu beeinflussenden
geometrischen Knoten enthält und die Positions- oder Rotationswerte
in Bewegung umsetzt.
Es wurden zwei Ebenen-Sensoren definiert, einer gestattet eine eingeschränkte Bewegung der blauen Kugel auf der xy-Ebene, der andere verwirklicht einen horizontalen grünen Schieberegler. Wird letzterer wiederholt angeklickt, springt er auf seine Standardposition zurück. Durch den Kugel-Sensor kann der rote Kegel von allen Seiten aus betrachtet werden, ohne daß dieser an eine andere Position verschoben wird und ohne Veränderung des Avatar-Standortes. Der Zylinder-Sensor realisiert das Öffnen und Schließen einer Tür. Damit die Rotationsachse nicht in der Mitte der Tür, sondern in der Türangel liegt, mußte eine zusätzliche, dem Sensor untergeordnete Translation durchgeführt werden. |
|
|
Ein Berührungs-Sensor kann als Lichtschalter fungieren.
Er meldet, wenn der Cursor ein Objekt, welches demselben Gruppenknoten
zugeordnet ist, berührt oder darüber hinweggleitet.
In diesem Fall reagiert der Sensor auf Berührung der Kugel, die unter dem ausschließlichen Licht der Helmlampe neutral grau erscheint. Drei aus verschiedenden Richtungen strahlende gerichtete Lichter werden bei Berührung der Kugel eingeschaltet und beleuchten diese mit ihrer Farbkomponente. Durch die gebogene runde Oberfläche der Kugel vermischen sich die Farben. Untersuchen Sie die Farbeffekte von unterschiedlichen Blickrichtungen aus im Prüf-Modus! |
Ein Regionüberwachungs-Sensor kann als Bewegungsmelder
für eine bestimmte Region eingesetzt werden, die durch einen nicht
sichtbaren Quader begrenzt ist. Mit ihm können gezielt Schaltvorgänge
realisiert werden.
In diesem Beispiel wurden drei in der xy-Ebene nebeneinander liegende Polygone definiert. Hinter jedem liegt ein Überwachungsbereich eines Sensors. In Abhängigkeit davon, durch welches Polygon der Benutzer in den hinteren Raum tritt bzw. in welchem der drei Sensor-Bereiche er sich aufhält, wird eines von drei gerichteten Lichtern aktiviert. Diese Lichter beleuchten mit jeweils nur einer Farb-Komponente einen weißen Text. Da die Helmlampe deaktiviert ist, führt das dazu, daß der Text nur diese eine Komponente reflektieren kann und damit rot, grün oder blau erscheint. Die Überwachungsbereiche der drei Sensoren überlappen sich geringfügig. Damit können auch zwei Lichter gleichzeitig an sein, wodurch dann zwei Farb-Komponenten des Textes reflektiert werden. Gehen Sie durch ein Polygon hindurch! Variieren Sie die farbliche Erscheinung des Textes, indem Sie sich seitwärts in einen anderen Sensor-Bereich begeben! |
|
|
Der Sichtbarkeits-Sensor überwacht einen quaderförmigen
Bereich daraufhin, ob er sich im Blickfeld befindet oder nicht.
Zur Demonstration wurde das Kollisions-Beispiel importiert und der Überwachungsbereich des Sensors genau auf die Größe des bunten Polygon-Würfels festgelegt. Befindet sich der Würfel oder auch nur ein Teil von ihm im Blickfeld, ist eine Musik zu hören. Verschwindet er vollständig aus dem Blickfeld, verstummt sofort die Musik. |
Der Farb-Interpolator erzeugt eine Folge von RGB-Farbwerten.
Für dieses Beispiel wurde der unregelmäßige Extrusions-Körper importiert und zusätzlich eine Kugel definiert. An die Position der Kugel wurde ein Punktlicht gesetzt. Ein Zeit-Sensor sendet in einer Endlosschleife kontinuierlich Ereignisse mit dem Bruchteil eines 20-Sekunden-Intervalls an den Farb-Interpolator. Der Interpolator generiert fortlaufend interpolierte RGB-Werte, die von grau zu einer vollen Farbe und zurück wechseln. Diese Werte werden sowohl der Farb-Eigenschaft der Kugel als auch des Punktlichtes zugewiesen. |
|
|
Der Koordinaten-Interpolator interpoliert zwischen Punkten bzw.
Vektoren im Raum. Mit ihm läßt sich ein Morphing-Effekt erzielen,
indem die Koordinaten (Eckpunkte) einer Geometrie fortlaufend verändert
werden.
In diesem Fall wird die Geometriestruktur eines Polygon-Körpers in einem dreistufigen Morphing-Prozeß verändert. Am Beginn liegt ein Quader vor, dessen Form allmählich in die einer Pyramide übergeht. Dazu werden die vier oberen Eckpunkte einander angenähert, bis sie sich in einem Punkt, der Pyramidenspitze, vereinen. In der zweiten Stufe werden die vier unteren Eckpunkte derart weiter nach außen und zusätzlich nach unten verlagert, daß die Pyramidenflächen größer werden und die Grundfläche sich absenkt. Dabei behält die Pyramidenspitze ihre Position bei. Die dritte Stufe, der Übergang zur Form des Ausgangsquaders, läuft wesentlich schneller als beide vorherigen ab. Befinden sich alle Eckpunkte wieder in der ursprünglichen Lage, beginnt der Prozeß nahtlos von vorn. |
Mit dem Positions-Interpolator lassen sich Objekte animieren,
d.h. entlang eines festgelegten Pfades kontinuierlich verschieben.
In diesem Beispiel realisiert ein Berührungs-Sensor den Schalter zum Beginn der Animation der hellblauen Kugel. Der Sensor überwacht die Kugel daraufhin, ob diese angeklickt wird. Erfolgt dieses (genauer: Zeitpunkt des Loslassens der Maustaste) wird ein Ereignis zu einem Zeit-Sensor gesendet, welcher daraufhin für die Dauer von 10 Sekunden kontinuierlich Ereignisse mit einem Bruchteil des 10-Sekunden-Intervalls (Ereigniswert liegt im Intervall von null bis eins) generiert und an den Positions-Interpolator weiterleitet. Im Positions-Interpolator sind im Intervall von null bis eins logarithmisch verlaufende Stützstellen mit ihren zugehörigen Funktionswerten definiert. Dabei entsprechen die Funktionswerte den Koordinaten bzw. Eckpunkten, entlang derer die Bewegung erfolgen soll. Durch lineare Interpolation werden aus den empfangenen Werten der Ereignisse unter Zuhilfenahme der Stützstellen sowie der Funktionswerte die aktuellen Kugel-Koordinaten berechnet. Diese müssen nur noch an den Transformations-Knoten für die Kugel übermittelt werden. Beachten Sie, daß durch den logarithmischen Verlauf der Stützzellen eine beschleunigte Bewegung der Kugel resultiert! |
|
|
Mit dem Orientierungs-Interpolator kann die Ausrichtung einer
Geometrie verändert werden. Zu diesem Zweck interpoliert er zwischen
Rotationswerten, welche durch eine Drehachse in Form eines Vektors sowie
einem Drehwinkel um diese Achse beschrieben werden.
Für dieses Beispiel wurden die Szenen Primitive, Flasche, Text und Avatar importiert und einander angepaßt. Zwei Orientierungs-Interpolatoren sorgen für fortdauernde Animation. Der eine Interpolator generiert Werte zur Rotation der gesamten Szene um die y-Achse. Der andere ist für eine zusätzliche, doppelt so schnelle Rotation der vier Primitiven um ihre lokale z-Achse zuständig. Auf diese Primitiven wirken somit zwei Rotationsbewegungen. Betreten Sie eine der sich drehenden Plattformen und prüfen Sie, ob Sie sich auf dieser von alleine mitdrehen! Positionieren Sie sich daraufhin so, daß Sie entweder mit der gelben Kugel oder mit dem roten Würfel kollidieren! Werden Sie durch dieses Primitiv von der Plattform geschoben? |
Ein Skalar-Interpolator dient zur Interpolation von einzelnen
Gleitkomma-Parametern. Mit ihm können interpolierte Werte unter anderem
für Länge und Radius von Geometrien sowie Intensität und
Reichweite von Licht ermittelt werden.
An dieser Stelle sollen die Eigenschaften von Licht verändert werden. Zur Demonstration wurde das Blickpunkt-Beispiel benutzt und ein Punktlicht über der linken hinteren Ecke des Höhengitters hinzugefügt. Die Helmlampe wurde deaktiviert. Anfangs wird die Landschaft nicht beleuchtet, d.h. sie ist nicht zu sehen. Innerhalb von 20 Sekunden wird die Reichweite des Punktlichtes auf die ganze Szene ausgedehnt und wird die Licht-Intensität auf das Maximum erhöht. Zur Veränderung sowohl der Reichweite als auch der Intensität des Punktlichtes wird jeweils ein Interpolator benötigt. Beide Interpolatoren erhalten von einem Zeit-Sensor kontinuierlich Ereignisse mit dem Bruchteil eines 20-Sekunden-Intervalls. Die Stützstellen und die zugehörigen Funktionswerte sind nicht linear angeordnet, so daß die Reichweite und die Intensität ungleichförmig zunehmen. Wählen Sie gleich am Anfang im Steuermenü den Blickpunkt Draufsicht aus, um die gesamte Szene überschauen zu können! |
|
|
Die Integration von JavaScript soll an einem einfachen Beispiel,
der Anzeige der aktuellen Weltkoordinaten des Avatars,
verdeutlicht werden.
Das zu untersuchende Objekt (Flaschen-Beispiel) befindet sich innerhalb eines Würfels, welcher die Grenzen eines Regionüberwachungs-Sensors symbolisiert. Die vom Sensor erzeugten Ereignisse werden dem Skript-Knoten zugeleitet, welcher die JavaScript-Anweisungen enthält. Diese Anweisungen erzeugen aus den laufenden Positionsangaben eine Zeichenkette, die letztendlich zum Text-Knoten gesendet und von diesem in einem kurzen Abstand vor dem Avatar dargestellt wird. Dazu bedarf es des Empfangs der aktuellen Koordinaten des Avatars mit nachfolgender Transformation. Wird beim Navigieren die Sensor-Grenze überschritten, beginnt bzw. endet die Textdarstellung. Jede Bewegung innerhalb des Sensor-Raumes führt zu laufend aktualisierten Koordinatenwerten. Knobelaufgabe: Messen Sie die Füllhöhe der Flüssigkeit in der Flasche! |
Ein Anker realisiert über einen URL einen Hyperlink
im WWW, der auf eine Datei beliebigen Typs verweist.
In diesem Beispiel wurden insgesamt acht Anker definiert, welche jeweils einer Geometrie zugeordnet sind. Jede Geometrie wurde aus einer Kugel, drei Quadern und einem erläuternden Text gebildet. Die zuvor rotierten Quader und die Kugel wurden an der gleichen Position dargestellt, wodurch die Spitzen der Quader quasi aus der Kugel herausragen. Der Text wurde als Plakattafel realisiert und darüber angeordnet. Weil die meisten Eigenschaften der Geometrien identisch sein sollen, bot sich die Definition eines Prototyps an, der achtfach instanziert wurde. Für jede Instanz wurden URL, zugehörige Beschreibung, Text, Position und falls notwendig, von den Standardeinstellungen abweichende Farben angegeben. Die verschiedenen Farben der Geometrien symbolisieren unterschiedliche verknüpfte Dateitypen (Kugelfarbe: VRML-Welten = rot, HTML-Seiten = blau, Text-Dateien = lila und MIDI-Dateien = gelb). Durch simples Anklicken der Geometrien erfolgt entweder ein Sprung zum jeweiligen Dokument oder es wird eine MIDI-Sequenz abgespielt. |
|
|
In diesem Beispiel soll in fünf Stufen ein unterschiedlicher Detaillierungsgrad
demonstriert werden. In Abhängigkeit vom Abstand zwischen aktueller
Betrachterposition und dem Quader wird die Textur auf seiner Oberfläche
mit verschiedener Auflösung dargestellt. Dazu wurde eine aufsteigend
sortierte Entfernungsliste angegeben, welche die jeweiligen Grenzen für
die Umschaltung bestimmt. Optisch wurden diese Bereiche durch die verschieden
Farben der Grundfläche veranschaulicht, welche aus vier extrem flachen
Zylindern gebildet wurde. Zur deren besseren Sichtbarkeit wurde ein Punktlicht
integriert.
Bewegen Sie sich langsam auf den Quader zu und entfernen Sie sich wieder! Bei jedem Übertreten einer Grenze ist der Wechsel zwischen feinerer und gröberer Auflösung der Textur deutlich zu erkennen. Außerhalb des äußersten Ringes besitzt der Quader keine Textur mehr, stattdessen nur eine Farbe. |
Kollisionen werden immer nur zwischen Avatar und Objekten ausgewertet,
niemals zwischen mehreren Objekten.
Der Eintrittspunkt in die Szene befindet sich inmitten eines sehr großen Polygon-Würfels, dessen Wände einen bunt gemischten Farbverlauf besitzen. Innerhalb dieses Würfels befinden sich das importierte Kugelhaufen-Beispiel und eine graue Polygon-Pyramide. Sowohl für die Pyramide als auch für den Würfel wurde die Kollisionserkennung unterdrückt, wodurch beide (genauer deren Wände) ungehindert durchdrungen werden können. Die Wände beider Polygon-Körper sind von außen und von innen definiert, d.h. beidseitig sichtbar. Die Plattform samt Kugelhaufen wird auf Kollision geprüft, indem stellvertretend für diese relativ komplizierte Geometrie eine unsichtbare Kugel als vereinfachte Struktur tritt. Diese Kugel hat den gleichen Radius wie die Plattform, so daß diese sich nicht betreten läßt bzw. ein Näherkommen zum Kugelhaufen unmöglich ist. Versuchen Sie, zum Kugelhaufen zu gelangen! Betreten Sie anschließend die Pyramide und navigieren Sie um das in deren Bodenmitte liegende weiße Ei! Verlassen Sie daraufhin den großen bunten Polygon-Würfel und betrachten Sie ihn von außen! (Der Flug-Modus ist fest eingestellt.) |
|
Alle einer Plakattafel untergeordneten Geometrien richten sich
nach der Betrachterposition aus. In diesem Beispiel wurden zwei Plakattafeln
definiert, eine enthält die geometrischen Primitiven,
die andere einen Würfel nebst aufgebrachter Textur.
Der Text über der Grundebene hat keine bestimmte
Bedeutung, er wird nur als optisches Bezugssystem verwendet, um den Effekt
der Plakattafeln zu verdeutlichen. Zusätzlich wurde ein Spotlicht
integriert.
Während der Navigation rotieren die Primitiven derart um die y-Achse, daß die blaue Kugel immer von den drei anderen überdeckt wird. Für den Würfel inklusive seiner Textur wurde keine Rotationsachse festgelegt. Navigieren Sie im Flug-Modus über die Primitiven bzw. über die Textur! Beachten Sie, daß die Textur sich immer frontal zu Ihnen ausrichtet, die Primitiven hingegen auch von weiter oben betrachtet werden können, obschon die blaue Kugel stets die Entfernteste bleibt! Alternativ könnte auch der Text einer Plakattafel zugeordnet werden. Er wäre dann immer von vorn lesbar. |
|
|
In diesem Beispiel wurde ein neuer Knotentyp Baum als Prototyp
definiert und anschließend dreimal instanziert.
Durch Einsatz dieses Prototypen läßt sich verblüffend einfach ein Wald durch mehrfache Instanzierung darstellen. Es ist z.B. nicht mehr notwendig, einen Baum-Knoten einem Transformations-Knoten unterzuordnen, um ihn zu positionieren oder in der Größe anzupassen. Die Werte für sowohl Translation als auch Skalierung sind direkte Eigenschaften eines Baums. Für den Knotentyp Baum wurden sinnvolle Standardeinstellungen, wie die Geometrie und Farbe des Stammes sowie des Laubs, definiert. Allen drei Baum-Instanzen wurde eine neue Größe zugewiesen. Zusätzlich erhielt der erste Baum eine Textur für seinen Stamm und der zweite Baum eine neue Farbe für sein Laub. Die Definition des Prototyps könnte sich auch in einer separaten Bibliotheks-Datei befinden, um ihn für andere Szenen ebenso zugänglich zu machen. |
|
Dieses Quellcode-Beispiel stellt ausnahmsweise keine VRML-Szene dar,
sondern eine HTML-Seite. Die Besonderheit dieser HTML-Seite liegt
darin, daß in ihr ein rechteckiger Bereich definiert wurde, in welchem
eine VRML-Szene nebst Bedienfläche des VRML-Viewers eingebettet worden
ist. Dies soll demonstrieren, daß eine Szene nicht gezwungenermaßen
im Vollbildschirm ablaufen muß, sondern daß sie auch an beliebiger
Stelle und in beliebiger Größe in einer HTML-Seite plaziert
werden kann.
Eine andere Variante der parallelen Darstellung von HTML und VRML ist die Vereinbarung von Frames, wobei das HTML-Browser-Fenster in verschiedene Segmente unterteilt wird, in denen unterschiedliche Inhalte geladen weren können. |