## Tutorial für den VRML-Editor "dune"

Downloaden Sie die neuste Version von "dune/white_dune" von http://www.csv.ica.uni-stuttgart.de/vrml/dune/down.html.

- für M$Windows
  ist das zur Zeit die Datei white_dune-0.26pl5-devil.exe) und das Archiv mit zusätzlichen DLL Dateien http://prdownloads.sourceforge.net/openil/DevIL-EndUser-1.6.5.zip.
  Installieren Sie die .exe Datei und .dll Dateien aus der .zip Datei in einem Verzeichnis auf der Festplatte (im Zweifelsfall auf "C:\temp").
- für MacOSX 10.2("Jaguar")
  ist das zur Zeit die Datei white_dune-MacOSX-0.26pl5.tar.gz und ggf. "X11 for Mac OS X Public Beta" (41.7MB) (für MacOSX 10.3 "Panther" exisitiert die "X11 for Mac OS" Software möglicherweise auf einer der Installations-CD's).
  Klicken Sie im Desktop auf die white_dune-MacOSX-0.26pl5.tar.gz Datei, stuffit-expander sollte die Anwendung entpacken können.
- für UNIX/Linux
  Suchen Sie eine Installationsdatei, die für Ihr System passt unter http://www.csv.ica.uni-stuttgart.de/vrml/dune/down.html und benutzen Sie die zugehörige fettgedruckte Kommandozeile.
  Falls Sie keine Installationsdatei finden, die für Ihr System passt, finden Sie unter http://www.csv.ica.uni-stuttgart.de/vrml/dune/install.html Anweisungen, wie Sie ausgehend von den Quellen installieren können.

  ## Tutorial für den VRML-Editor "dune"

  In VRML beschreibt der Szenengraph und die zugehörigen Routes vollständig eine VRML-Welt. Im VRML-Editor "dune" wird versucht, dies vollständig in einer graphischen Oberfläche darzustellen.

  ### Die 5 Fenster von "dune"

  Neben diversen Toolbars für Icons und Nachrichten besteht "dune" im wesentlichen aus 5 Fenstern. Ausser dem "3D Preview" Fenster lassen sich die Fenster über den Menüpunkt "View" angepasst an den jeweiligen Arbeitsschritt ein- und ausschalten.

  - Scene Tree
    Dieses Fenster enthält den Szenengraphen, und zeigt damit die Struktur einer VRML Datei (die Information, wie einzelne VRML Nodes (Knoten) angeordnet sind).
  - Field View
    Dieses Fenster enthält die Fieldwerte, die Zahlen (bzw. Zeichenketten usw.) in einer VRML Datei. Angezeigt werden jeweils die Fields des zuletzt ausgewählten Knoten.
  - Route View
    Dieses Fenster enthält die ROUTE's, die Informationswege mit denen sich verschiedene VRML Knoten beim Programmlauf verschiedene Nachrichten schicken können.
  - Channel View
    Dieses Fenster beschäftigt sich ausschliesslich mit Interpolatorknoten. Interpolatorknoten sind in VRML97 vor allem wichtig für Animationen.
  - 3D Preview
    Dieses Fenster zeigt eine Vorschau auf die graphische Darstellung des VRML Files. Im Gegensatz zu den anderen Fenstern ist im entsprechenden Programmteil die Umsetzung des VRML97 Standards noch lückenhaft.
    Einige Knotentypen wie "Extrusion", "PointSet", "Inline", "Background" und selbst definierte "PROTO", "EXTERNPROTO" Knoten werden überhaupt (noch) nicht dargestellt, bei einigen Knoten werden (noch) nicht alle Fieldwerte richtig dargestellt (z.B. IndexedFaceSet.ColorPerVertex). Im Zweifelsfall sollten Sie zuerst mit dem Menüpunkt File -> Preview die Lage überprüfen.

  ### "dune" abgestürzt, bisherige Arbeit verloren ?

  Dune ist noch in der Entwicklungsphase und es läuft noch nicht so stabil, wie es sollte.
  Wenn dune abgestürzt ist, ist die bisherige Arbeit verloren ?
  Nein, nicht automatisch.
  "dune" versucht noch, das VRML97 file kurz vor dem Absturz zu speichern. Wenn das erfolgreich ist, wird dune unter Unix/Linux so etwas wie

         Internal Crash !
         Try to save Files
        attempt to write file to /home/someone/.dune_crash_NUMBER_NUMBER.wrl
        write successfull

  in die Standartfehlerausgabe des dune starteten Fensters und auf die Systemkonsole (z.B. das Fenster der "xconsole" Anwendung) schreiben.
  Unter M$Windows erscheint eine entsprechende Messagebox
  Benutzt werden hier die Systemvariablen "%HOMEDRIVE%" und "%HOMEPATH%".
  Wenn sie dann dune neu starten und das file Menü öffnen, sollten Sie den Dateinamen des .dune_crash Files sehen.
  Klicken Sie darauf und speichern Sie in eine andere Datei.

  ### Animation

  Benutzen Sie den Menüpunkt Create -> Shape -> Sphere um eine Kugel zu erzeugen.
  Wählen Sie den Transform-Knoten im SceneTree Fenster an.
  Beachten Sie, dass Sie jetzt im FieldView Fenster die Werte der Felder dieses Transformknotens verändern können, auch durch Verschieben der Maus bei festgehaltener Maustaste.
  Der Transform-Knoten ist in VRML für Verschiebung, Drehung, Skalierung usw. zuständig. Das lässt sich z.B. im VRML97 Standard http://www.web3d.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Transform (zu erreichen über den Menüpunkt Help -> Transform bei angewähltem Transform-Knoten) nachlesen.
  Benutzen Sie (immer noch bei angewähltem Transform-Knoten) den Menüpunkt Actions -> Animate . Daraufhin erscheint ein Dialogfenster
  in dem Sie neben der Animationsdauer (und ggf. der Zeitquelle) auch das die Ziel-Felder (bzw. EventIn ("Eingabenachricht")) des Ziel-Knotens (hier Transform) auswählen können.
  Die Felder "set_translation" und "set_rotation" beschreiben Verschiebung und Drehung. Um mit diese Daten mit der Maus im 3DView Fenster eingeben zu k&oum;nnen, benötigen Sie die Einstellungen der Menüpunkte Mode -> Move bzw. Mode -> Rotate . Benutzen Sie Mode -> Move .
  Klicken Sie jetzt die beiden "Kassettenrekorder-Symbole" für Aufnahme und Wiedergabe in der Nähe der unteren Kante des "dune"-Fensters an
  und benutzen Sie die Pfeile im 3DView Fenster um die Kugel herumzuschieben. Lassen Sie die Pfeile an der Kugel los. Jetzt sollte die aufgenommene Bewegung abgespielt werden.
  Klappen Sie ggf. mit View -> Channel View das ChannelView Fenster auf und klicken Sie auf den PositionInterpolator Knoten im SceneTree Fenster.
  Klicken Sie auf das Kassettenrekorder-Symbol für "stop". Die Animationsdaten lassen sich mit der Maus nachbearbeiten, zum Beispiel lässt sich ein Zeitpunkt und ein Wert gezielt bei gedrücktem Kassettenrekorder-Symbol für Aufnahme setzen. Es lässt sich auch ein Zeitbereich löschen, indem man im ChannelView Fenster einen schwarzen Balken aufzieht und mit edit -> delete die im Balken liegenden Punkte entfernt.
  Klappen Sie ggf. mit View -> Route View das RouteView Fenster auf und schieben Sie sich die einzelnen Knoten zurecht.
  Zeigen Sie mit der Maus auf die Eingänge des Transform-Knotens im RouteView. Vergleichen Sie sie mit dem Bild des Dialogfensters am Anfang dieses Tutorials.

  ### Z-fighting/"Dünne Wand"-Probleme

  Benutzen Sie zwei mal Create -> Shape -> Box . Jetzt liegen 2 Objekte genau übereinander.
  Klicken Sie im Scene Tree Fenster auf das "Plus"-Zeichen beim Appearance ("Erscheinung") eines dieser Objekte und wählen Sie den Material Knoten an, der für Farbeffekte zuständig ist.
  Ändern Sie die Farbwerte für das Feld "diffuseColor", zum Beispiel über den Menüpunkt Actions -> Color Circle .
  Schieben Sie jetzt das eine Objekt etwas nach Oben und betrachten Sie die resultierenden Effekte.

  ### Interaktion

  Schieben Sie die beiden Objekte weit genug auseinander.
  Benutzen Sie den Menüpunkt Create -> Sensor -> SphereSensor um einen Kugelsensor einzufügen.
  Verschieben Sie jetzt den SphereSensor in einen Zweig des Scenengraphen, der zur einen Box gehört,
  und suchen Sie im RouteView Fenster nach dem Transform-Knoten der anderen Box. Im RouteView Fenster werden angewählte Knoten blau beschriftet
  Legen Sie jetzt eine Route von SphereSensor.rotation_changed nach Transform.set_rotation
  Leider ist "dune/white_dune" nur ein VRML Editor und noch lange kein vollwertiger VRML Browser. Für Interaktionen muss man auf einen "richtigen" VRML Browser zurückgreifen:
  Benutzen Sie File -> preview um einen VRML Browser zu starten.
  Der Wechsel des Cursors zeigt eine Interaktionsmöglichkeit an, so dass Sie mit Klicken und Ziehen der Maus in die Welt eingreifen können.

  Für später: Eine Liste mit Beispielen über einfache Interaktion findet sich in http://www.csv.ica.uni-stuttgart.de/vrml/dune/docs/typical_vrml_examples/index.html

  ### Einfache 3D Modellierung

  "dune/white_dune" ist hat auch einige einfache NURBS modeller Features. Erzeugen Sie eine Nurbsfläche entweder mit den Menüpunkten Create -> VRML 200x -> NurbsSurface -> Plain/Box/Sphere/Cone/Cylinder oder konvertieren Sie ein entsprechdes angewähltes Box/Sphere/Cone/Cylinder (oder NurbsCurve) Objekt mit dem Menüpunkt Actions -> Convert to NurbsSurface .
  Am sinnvollsten ist der Einsatz von symetrischer Modellierung: die eine Seite des Objekts soll so aussehen, wie die andere Seite. Benutzen Sie dazu den Menüpunkt Actions -> X symetric modelling Wenn dieser Menüpunkt aktiviert ist, wird jede Bewegung von den Kontrollpunkten (den weissen Kästchen) der einen Seite
  auf die andere Seite übertragen,
  Für später: Eine Einführung zum Thema NURBS finden Sie unter http://www.csv.ica.uni-stuttgart.de/vrml/dune/docs/usage_docs/dune_de.html#nurbs. Weitere Informationen zum Arbeiten mit NURBS in "dune/white_dune" finden sich unter http://www.csv.ica.uni-stuttgart.de/vrml/dune/docs/usage_docs/dune_de.html#nurbssymetric

  ### Viel zu viele Polygone

  Speichern Sie jetzt Ihr VRML File (am Besten nach "C:\temp") mit dem Menüpunkt File -> save as. Kurzzeitig werden jetzt sehr viele Daten erzeugt, ein unbedachter Klick auf den Menüpunkt File -> Preview könnte dazu führen, dass sehr viele Daten (auf ein Netzlaufwerk) geschrieben und damit Ihre Geduld auf eine zu harte Probe gestellt wird.
  Klicken Sie den NurbsSurface Knoten an und verändern Sie die Felder u/vTesselation
  Ausser sehr kleinen Werten
  sollten Sie auch grosse Werte ausprobieren. Die Anzahl der Polygone liegt ungefähr bei "uTesselation * vTesselation" Probieren Sie aus, ob es beim Verschieben des Objekts ruckelt, wenn diese Werte in der Grössenordung von (einigen ?) 100 liegen.

  ### Nachbearbeitung von VRML Modellen

  Verbreitete 3D Modelling Programme wie catia, 3D Studio Max, Cinema4D, maya, formZ, blender usw. besitzen die Möglichkeit VRML97 zu exportieren (oder zumindest konvertierbare Dateiformate zu schreiben). Allerdings wird man mit den Resultaten nicht immer wirklich glücklich, Spötter reden von "schwarzen Löchern aus maya".
  Der Grund dafür hat nicht unbedingt mit Programmfehlern zu tun. Man sollte sich immer vor Augen halten, dass viele dieser Programme nicht primär zur Erzeugung von Echtzeit-3D-Daten gedacht sind, sondern z.B. zur Erzeugung von Movie-Daten, so dass an einem Bild Minuten/Stunden (oder mehr) gerechnet werden kann. So gibt es in diesen Programmen Effekte wie zum Beispiel "richtige" Spiegelungen, die nicht innerhalb einer 1/25 Sekunde berechnet werden können.
  Die entsprechenden Materialeigenschaften können daher nicht so einfach in ein Echtzeit-3D-Format übersetzt werden.

  Erzeugen Sie ein (einfaches ?) VRML File mit einem anderen 3D Modeller (z.B. Wings3D, Art of Illusion, ac3d, maya, usw...). Benutzen Sie den Menüpunkt File -> Import, um das 3D Modell in Ihre 3D Welt einzufügen. Die meisten 3D Modeller exportieren lediglich IndexedFaceSet Knoten (aus Einzelflächen zusammengesetzte Körper) für die Geometrie.
  Im einfachsten Fall liegen nur die "rohen" Geometriedaten vor:
  Im Notfall können Sie versuchen, diese Situation zu erreichen, indem Sie alle anderen Knoten in einem VRML File löschen.
  Klicken Sie auf den "Shape" Knoten und benutzen Sie Create -> Material/Texture -> Appearance
  Klicken Sie auf den "Appearance" Knoten und benutzen Sie Create -> Material/Texture -> Material
  so dass Sie die Farbe des gesamten Objekts verändern können.
  Um ein Bild (Textur) auf das Objekt zu kleben, klicken Sie auf den "Appearance" Knoten, benutzen Sie Create -> Material/Texture -> ImageTexture und wählen Sie eine Bilddatei aus. Der VRML Standard fordert lediglich die Unterstützung der offenen Bildformate ".jpg" und ".png".
  Wenn Sie Pech haben, wurde das Objekt mit der falschen Seiteninformation exportiert.
  Ändern Sie die Felder "ccw" ("andere Seite") oder "solid" ("einseitig"/"zweiseitig") um das Problem zu lösen.
  Vorsichtig bei zweiseitigen dünnen Körpern, da dann aufgrund von Z-fighting/"dünne Wand"-Problemen die Rückseite "durchscheinen" kann.
  Um Kanten verwischen zu lassen, können Sie das Feld "creaseAngle" benutzen. Dazu muss der Winkel der Kante im Bogenmass (1.57 sind ungefähr 90 Grad) kleiner als der "creaseAngle" Wert sein.