<<  VRML Einführung  >>

Warum VRML?

  • Die Virtual Reality Modeling Language (VRML) ist eine Beschreibungssprache für 3D-Szenen, deren Geometrien, Ausleuchtungen, Animationen und Interaktionsmöglichkeiten inklusive in der virtuellen Umgebung platzierter Geräuschquellen. Siehe z.B. http://de.wikipedia.org/wiki/Virtual_Reality_Modeling_Language
  • VRML lässt sich perfekt zur Veranschaulichung räumlicher Szenarien einsetzen
  • Der Betrachter kann auf vielerlei Arten in das Szenario eingreifen: einerseits indem er es nach Belieben drehen und wenden oder selber durch die Szene gehen und sie von verschiedenen Perspektiven aus betrachten (anzutreffen z.B. bei vielen Verkaufsportalen im Internet, wo man etwa eine Kamera "nehmen" und von allen Seiten betrachten kann).
  • Der Betrachter kann interaktiv eingreifen, er kann beispielsweise Objekte verschieben (angenommen, wenn eine Einrichtung umgruppiert werden soll), er kann Ereignisse auslösen usw.
  • VRML ist zwar schon einige Jahre alt, Nachfolgeprogramme (z.B. U3D) scheinen noch nicht so weit gediehen zu sein, dass man sie leicht einsetzen kann
  • Viele 3D-Programme gestatten den Export des Ergebnisses in eine VRML Datei (Blender, CAD3D, usw.)
  • Die exportierte Datei ist unmittelbar in einem Browser anzusehen (zuvor muss allerdings ein VRML-Plugin installiert worden sein)
oder, etwas strenger formuliert aus http://old.hki.uni-koeln.de/teach/ss07/hs/tag3/vrml_referat.pdf
  • VRML stellt ein mächtiges Konzept zur Animation und Benutzerinteraktion bereit
  • Viele Knoten können Ereignisse (events) empfangen und auslösen
  • Durch ROUTE können Ereignisse miteinander verbunden werden um komplexe Änderungen an der Szene vorzunehmen
  • Spezielle Knoten, sog. Sensoren, können events abhängig von Benutzereingaben oder nach einer bestimmten Zeit auslösen

Quellen

http://www.debacher.de/vrml/vrml.htm
http://tecfa.unige.ch/guides/vrml/vrmlman/node1.html
www.brichzin.de/seminarfach/SA07_VRML.pdf
http://www.uni-forst.gwdg.de/~wkurth/cg08_v12.doc

Vorbereitungen

  • Wie schon angeführt, muss ein Plugin installiert werden, dieses erhält man leicht bei http://www.cortona3d.com/Products/Cortona-3D-Viewer.aspx
    Als erstes sollte man sich mit den Möglichkeiten bekanntmachen, die das Plugin bietet (Bewegen des Objektes, Herumgehen, Überfliegen usw.)
  • Wie gesagt kann man fertige Szenarien aus dem 3D-Programm exportieren und hat dann sofort eine VRML Datei. Diese ist allerdings nicht mit der feinen Klinge programmiert sondern eher mit der Kettensäge. Zart besaitete Gemüter werden darunter sehr leiden und daher sofort zur eigenen Programmierung greifen, die man sehr geistvoll und subtil gestalten kann.
  • Für die eigene Programmierung verwende ich immer den "html editor phase 5" , erhältlich hier: http://www.phase5.info/ Durch die vielfältige Sprachunterstützung eignet sich das Programm auch zur Editierung anderer Quelltexte (z.B. JavaScript, php, python). Die Syntax-Highlighting-Funktion erkennt automatisch den Sprachtyp. Ein fertiges Skript kann man jederzeit begutachten (F9)
  • Als weiteres unterstützendes Programm neben Phase 5 wird man um eine Tabellenkalkulation nicht herumkommen, da VRML keine Berechnungen durchführen kann.
  • Ein fertiges Skript wird dann unter der Bezeichnung irgendwas.wrl gespeichert und ist dann für den Browser erkennbar.

Vorteile - Nachteile - Vorsichtsmaßregeln

  • Zuvor die EISERNE REGEL FÜR JEDES PROGRAMMIEREN, zurückgehend auf den schönen, Wittgenstein zugeschriebenen Satz
  • „Alles was man sagen kann, kann man klar sagen".
    Diesen sollte man ausbauen zu einer eisernen Regel für Programmierer
  • "Alles was man programmieren kann, kann man auch klar programmieren" bzw. von mir verschärft zu:
  • "Jedes Programm, das nicht auf eine Seite passt, ist ein Schmarren".
  • Die Programmierung ist außerordentlich vielseitig und gestattet die Darstellung nahezu unbegrenzt vieler geometrischer Strukturen.
  • Objekte können mit Farben und Texturen versehen werden.
  • Bewegungen und allgemeiner Ereignisse können programmiert werden
  • Ein Nachteil ist, dass keine Möglichkeit vorgesehen wurde für Boole'sche Operationen
  • Ein weiterer Nachteil: VRML kennt keine mathematischen Funktionen, kann daher nicht selber rechnen. Alle Werte (z.B. wird man immer wieder die Koordinaten der Punkte des Einheitskreises benötigen) müssen extern berechnet und sozusagen manuell übergeben werden. Dies geschieht am besten durch eine Tabellenkalkulation. Die errechnete Liste kann einfach in den verwendeten Editor (z.B. Phase 5) hinüberkopiert werden, allerdings müssen dann noch die Dezimalkommas durch Dezimalpunkte ersetzt werden.
  • Die Programmierung längerer Skripte erfordert eine gewisse Aufmerksamkeit; um keine Klammern zu verlieren halte ich mich EISERN (!!) an die Regel:
    zusammengehörende Elemente soweit als möglich in einer Zeile unterzubringen
    die öffnenden ( { [ Klammern und die dazugehörigen schließenden ) } ] unter allen Umständen entweder in EINER Zeile unterzubringen
    oder genau untereinander anzuordnen.
    Skripte mit unnötig vielen Zeilen (wie in den meisten Beispielen im Internet) sind schwer zu überblicken und schon gar auf Fehler durchzugehen. Man sollte sich nicht von den im Internet kursierenden Beispielsskripten abschrecken lassen; wie vielfach im Unterricht als Sport betrieben, lassen sich diese oft auf 10% ihres Umfanges reduzieren. Die meisten kursierenden Skripte haben vermutlich als Hauptzweck eine gewisse G'schaftelhuberei des Autors und nicht die leichte Durchschaubarkeit an sich banaler Sachverhalte.
  • Selbstverständlich muss Groß- und Kleinschreibung genau beachtet werden.
  • Jedes Skript muss als einleitende Zeile haben:
    #VRML V2.0 utf8
    und unter dem Namen irgendwas.wrl gespeichert werden, damit es vom Browser als solches erkannt und dementsprechend dargestellt werden kann.
  • Banale Dinge sollten in eigene Dateien ausgegliedert werden (wenn man z.B. eine Liste mit 100 Punkten benötigt).
  • Wie meine Blender Einführung soll auch dieses Skriptum die ersten Schwierigkeiten beheben helfen und einen Überblick bzw. Ausblick auf die umfangreichen Fähigkeiten des Programmes. Dazu dienen auch die vielen Beispielsskripte, aus denen man so manchen Trick besser herauslesen und verstehen kann als durch hochgestochene Erklärungen.
    Achtung: auf eine vollständige Blender Referenz oder auf Vollständigkeit in welcher Richtung auch immer wird ausdrücklich kein Wert gelegt.
  • Wenn man Skripte (und nicht das Objekt) in einer html-Datei zur Verfügung stellen will, muss man sie maskieren mit:
    <pre> ... Skript ... </pre>

Programmierhilfen, VRML Editoren

  • Falls einem die Programmierung einmal doch zu steil dein sollte, kann man Zuflucht nehmen zu VRML-Editoren
  • Eine weitere Hilfe sind die Exportfunktionen diverser cad-Programme. Diese erzeugen aber riesige Dateien, da sie das Objekt ohne Rücksicht auf seine geometrische Struktur mit einem Triangulierungsnetz überziehen und dieses dann mit indexedFaceSet abbilden lassen. Das läßt sich häufig vermeiden, oft jedoch auch nicht, vor allem dann, wenn Boole'sche Operationen vorgenommen wurden.
  • Mein Vorschlag: man verwende solche Dateien nur dort, wo es nicht anders geht, füge sie natürlich nicht direkt in das Skript ein sondern über den inline Befehl und programmiere den Rest eigenhändig und sparsam.
  • VRML ist im Internet ganz außerordentlich üppig vertreten. Die angebotenen Erklärungen reichen vom "einfachen Kochrezept" bis zu perfekter Theorie (auch einfache Rezepte können begeistern, nicht nur in der Küche, siehe "Ratatouille"). Eher in die Rubrik "frisch aus der Giftküche" sind viele der angebotenen Beispielsskripte einzuordnen, die vor allem den Zweck zu haben scheinen, einfache Sachverhalte soweit zu verkomplizieren, bis sie nicht mehr verstanden werden können. Dinge, die man selber auch programmieren kann, sollte man auch selber programmieren; wenn man ein veröffentlichtes Programm verwenden will, sollte man es unbedingt (!!) vorher vereinfachen, und zwar schrittweise: Unnötiges in kleinen Schritten vorsichtig herauslösen und das Skript dann sofort auf Lauffähigkeit prüfen, erst dann weitere Schritte unternehmen. Bei Syntaxfehlern öffnet sich ein Fenster mit einem meist hilfreichen Fehlerbericht.

<<   >>