Sophie

Sophie

distrib > Mandriva > 2007.0 > i586 > media > contrib-release > by-pkgid > 72ca020c3e58903e15410e6277d9d7a5 > files > 189

hackwhite_dune-0.29-0.beta421.1mdv2007.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" 
   "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html> 
<head>
 <title>"white_dune" Dokumentation</title> 
</head> 
<body>
<ul>
 <li>
  <h3><a href="#white_dune">"White_dune" was ist das ?</a></h3> 
 </li>
 <li>
  <h3><a href="#crash">"White_dune" abgest&uuml;rzt, bisherige Arbeit verloren ?</a></h3>
 </li>
 <li>
  <h3><a href="#languages">"White_dune" mit deutschen Menues starten</a></h3>
 </li>
 <li>
  <h3><a href="#vrml">Was bedeuten Szenengraph, Fieldwerte, Routes usw. ?</a></h3> 
 </li>
 <li>
  <h3><a href="#waskann">Was "white_dune" nicht kann und was es kann</a></h3>
 </li>
 <li>
  <h3><a href="#fenster">Die 5 Fenster von "white_dune"</a></h3> 
 </li>
 <li>
  <h3><a href="#navigation">Navigation</a></h3>
 </li>
 <li>
  <h3><a href="#scenegraph">Ver&auml;ndern des Szenengraph</a></h3>
  <ul>
   <li>
    <h4><a href="#use">Die Benutzung von USE</a>(neu in Version 0.29beta)</h4>
   </li>
   <li>
    <h4><a href="#scenegraphoperations">Szenengraph Operationen</a>(neu in Version 0.27beta)</h4>
   </li>
  </ul>
 </li>
 <li>
  <h3><a href="#route">Eingabe/L&ouml;schen von ROUTE's</a></h3>
 </li>
 <li>
  <h3><a href="#fields">Fieldwerte ver&auml;ndern</a></h3>
  <ul>
   <li>
    <h4><a href="#keyboard">Tastatureingabe</a></h4>
   </li>
   <li>
    <h4><a href="#MF">"MF"-Fieldwerte &auml;ndern</a>(neu in version 0.27beta)</h4>
   </li>
   <li>
    <h4><a href="#mouse">Mauseingabe</a></h4>
   </li>
   <li>
    <h4><a href="#3DWindow">Fieldwerte ver&auml;ndern im 3D Preview Fenster</a></h4>
   </li>
   <li>
    <h4><a href="#6D">6D Input</a> (neu in Version 0.19beta)</h4>
   </li>
   <li>
    <h4><a href="#6Dlocal">6D Local Mode Input</a> (neu in Version 0.19beta)</h4>
   </li>
   <li>
    <h4><a href="#joystick">Linux Joystick Input</a> (neu in Version 0.20beta)</h4>
   </li>
   <li>
    <h4><a href="#joystick_windows">M$Windows Joystick Input</a> (neu in Version 0.22beta)</h4>
   </li>
   <li>
    <h4><a href="#channelview">Fieldwerte ver&auml;ndern im ChannelView Window</a></h4>
   </li>
   <li>
    <h4><a href="#colorcircle">Farbkreis</a> (neu in Version 0.19beta)</h4>
   </li>
   <li>
    <h4><a href="#scriptedit">Script Editor</a> (neu in Version 0.22beta)</h4>
   </li>
   <li>
    <h4><a href="#urledit">URL Editor</a> (new in Version 0.22beta)</h4>
   </li>
   <li>
    <h4><a href="#fieldpipe">Field pipe</a> (new in version 0.29beta)</h4>
   </li>
  </ul>
 </li>
 <li>
  <h3><a href="#simplescript">Vereinfachtes Skriptbau-Verfahren</a> 
                                               (neu in Version 0.22beta)</h3>
 </li>
 <li>
  <h3><a href="#nurbs">NURBS Modellierung</a> 
                                         (zum Teil neu in Version 0.25beta)</h3>
   <ul>
   <li>
    <h4><a href="#nurbsbasics">NURBS Grundlagen</a></h4>
   </li>
   <li>
    <h4><a href="#nurbssymetric">X symetrisches Modellieren</a>
                                         (neu in Version 0.25beta)</h4>
   </li>
   <li>
    <h4><a href="#nurbsconversion">NURBS Konversion</a>
                                         (neu in Version 0.25beta)</h4>
   </li>
   <li>
    <h4><a href="#elevatedegree">Grad Erh&ouml;hung</a>
                                         (neu in Version 0.27beta)</h4>
   </li>
   <li>
    <h4><a href="#nurbsindexedfaceset">IndexedFaceSet Knoten erzeugen</a>
                                         (neu in Version 0.25beta)</h4>
   </li>
  </ul>
   <h3><a href="#super">Superformula Modellierung</a> 
                                          (neu in Version 0.27beta)</h3>
   <ul>
    <li>
     <h4><a href="#superformula">Superformula Grundlagen</a></h4>
    </li>
    <li>
     <h4><a href="#superextrusion">SuperExtrusion</a></h4>
    </li>
    <li>
     <h4><a href="#supershape">SuperShape</a></h4>
    </li>
    <li>
     <h4><a href="#superellipsoid">SuperEllipsoid</a></h4>
    </li>
   </ul>
  </li>
  <li>
   <h3>Weitere Kommandos zur 3D-Modellierung</a></h3>
   <ul>
    <li>
     <h4><a href="#coordinate">&Auml;ndern von Coordinate basierten Knoten</a> (new in Version 0.29beta)</h4>
    </li>
    <li>
     <h4><a href="#array">Array Werkzeug</a> (new in Version 0.27beta)</h4>
    </li>
   </ul>
  </li>
  <li>
   <h3><a href="#upload"><em>Datei -&gt; upload</em></a> (new in Version 0.27beta)</h3>
  </li>
 </li>
 </ul>

<h2><a name="white_dune">"White_dune" was ist das ?</a></h2> 
<p>
White_dune ist ein graphischer VRML97 Editor, ein simpler (NURBS) 3D Modeller 
und ein Animationwerkzeug in Entwicklung.<br>
Es kann ein VRML97 file lesen, stellt dessen Szenengraph dar und 
erlaubt es dem Benutzer, den Szenengraph, die Fieldwerte und Routes zu 
ver&auml;ndern.<br>
White_dune kann benutzt werden, um 3D-Modelle,
Animationen und Interaktionen in VRML97 zu verbessern oder zu erstellen.<br> 
Als einziges 3D Modelling Werkzeug ist es verglichen mit der Konkurrenz noch
etwas schwach. 
Es ist sinnvoll, noch zus&auml;tzlich einen statischen 3D Modeller mit 
VRML97 Export
(wie z.B. wings3D oder Art Of Illusion) einzusetzen.<br>
Der Vorteil von white_dune gegen&uuml;ber den meisten anderen 3D Modellern 
ist, dass das Beleuchtungsmodell und der innere Aufbau von white_dune auf dem 
VRML97 Standard basiert. Dadurch lassen sich die M&ouml;glichkeiten von
VRML97 bei einer Nachbearbeitung oder Erstellung mit white_dune besser nutzen.
</p>
<h3><a name="crash">"White_dune" abgest&uuml;rzt, bisherige Arbeit verloren ?</a></h3>
<p>
White_dune ist noch in der Entwicklungsphase und es l&auml;uft noch nicht so
stabil, wie es sollte.<br><br>
<b>Wenn white_dune abgest&uuml;rzt ist, ist die bisherige Arbeit verloren ?</b>
<br><br>
<font color="#FF0000"> Nein, nicht zwingend.</font>
<br><br>
"white_dune" versucht noch, die
 VRML97 Datei kurz vor dem Absturz zu speichern. Das funktioniert nicht
 immer, vor allem wenn der Fehler, der den Absturz verursacht hat, die 
 interne Datenstruktur zerst&ouml;rt hat. Wenn die Datei erfolgreich 
 geschrieben
 worden ist, schreibt white_dune unter Unix/Linux  
<pre>
   Internal Crash !
   Try to save Files
  attempt to write file to /home/someone/.dune_crash_NUMBER_NUMBER.wrl
  write sucessfull
</pre>
auf die Standartfehlerausgabe des white_dune starteten Fensters und auf
die Systemkonsole (z.B. das Fenster der "xconsole" Anwendung).<br> 
Unter M$Windows erscheint (ggf. nach Dr&uuml;cken von "ignorieren/ignore") 
eine entsprechende Messagebox<br>
<img src=crash.jpg><br>
Benutzt werden hier die Systemvariablen "%HOMEDRIVE%" und "%HOMEPATH%".<br>
Wenn sie dann white_dune neu starten und das file Men&uuml; &ouml;ffnen, 
sollten Sie den Dateinamen des .dune_crash Files sehen.<br>
<img src=crashrestore.jpg><br>
Klicken Sie darauf und speichern Sie in eine andere Datei.<br>
</p>
<p>
Wenn der Fehler, der zum Absturz gef&uuml;hrt hat, die interne Datenstruktur
im Programm besch&auml;digt hat, kann diese Methode versagen.<br>
In diesem Fall lohnt es sich nach tempor&auml;ren Daten (".dune_*") im 
Verzeichnis der VRML-Datei zu suchen, die bei der Ausf&uuml;hrung von
<em>Datei-&gt;Vorschau</em> oder <em>Datei-&gt;Textedit</em> entstanden sind.<br>
Diese Dateien werden bei einem normalen Programmende gel&ouml;scht, nicht
aber bei einem Programmabsturz.<br>
St&uuml;rtzt das Programm zum Beispiel sofort nach dem Ver&auml;ndern oder
Erzeugen des ECMAscript Teils eines Scriptknotens im Texteditor ab, 
nachdem die Datei mit dem ECMAscript Programm gespeichert wurde, ist diese 
Datei noch im
Dateisystem vorhanden. Man kann so eine Datei finden (&uuml;ber Namen
und Erzeugungsdatum) und den Inhalt per Cut&Paste weiterverwenden.
</p>
<h3><a href="#german">"White_dune" mit deutschen Menues starten</a></h3>
<p>
Um white_dune mit deutschen Menues zu starten, muss die Kommandozeilenoption
"-german" benutzt werden. Da es unpraktisch ist, das dauernd in eine
Kommandozeile einzutippen, kann das &uuml;ber ein Shellskript 
(Linux/UNIX/MacOSX) oder Batchfile (M$Windows) gemacht werden.<br>
Wenn Sie kein entsprechendes File (z.B. "germandune") finden, k&ouml;nnen
Sie sie sich eines mit den Kommandozeilen:
<ul>
 <li>
  F&uuml;r Linux/UNIX:<br>
  <pre>
     echo dune -german > germandune.sh
     chmod +x germandune.sh
  </pre>
 </li>
 <li>
  F&uuml;r Micro$oft Windows:<br>
  <pre>
     echo Laufwerk:\pfadzu\white_dune_version.exe -german > germandune.bat
  </pre>
 </li>
</ul>
anlegen. F&uuml;r MacOSX m&uuml;ssen Sie in der Datei 
white_dune.app/Contents/MacOS/dunestarter die Zeilen mit den Optionen
f&uuml;r den Programmstart<br>
<pre>
   DUNEOPTIONS=" "
   export DUNEOPTIONS
</pre>
um die -german Option erg&auml;nzen:<br>
<pre>
   DUNEOPTIONS="-german "
   export DUNEOPTIONS
</pre>
F&uuml;r andere exotische UNIX desktops finden sich entsprechende Optionen
in den folgenden Dateien:
<ul>
 <li>
  SGI IRIX/4Dwm: desktop/irix*/duneoptions.m4<br>
  Lesen sie die Datei README_IRIX.desktop um mehr Informationen zu bekommen
 </li>
 <li>
  IBM AIX/cde: /usr/local/bin/white_dune.dt
 </li>
 <li>
  Sun Solaris/cde: /opt/White_Dune/bin/white_dune.dt
 </li>
 <li>
  Redhat Linux/kde: /usr/share/applications/dune.desktop
 </li>
</ul>
Wenn Sie sich daf&uuml;r interessieren, die Menues und Fehlermeldungen von
white_dune in ein neue Fremdsprache zu &uuml;bersetzen (dazu sind keine
Programmierf&auml;higkeiten notwendig), dann lesen Sie bitte das
<a href="../developer_docs/dune_developer.html#localisation"> 
Schritt fuer Schritt Kochrezept in englischer Sprache</a> in der 
Entwicklerdokumentation.
</p>
<h3><a name="vrml">Was bedeuten Szenengraph, Fieldwerte und Routes usw. ?</a></h3> 
<p>
White_dune ist ein Lowlevel Werkzeug zum Bearbeiten von VRML97 Files.
Dabei wird angenommen, dass dem Benutzer die grundlegende
Struktur von VRML97 bekannt ist. <br> 
Ausf&uuml;hrliche technische Informationen zu VRML97 findet
man in der
offiziellen ISO Spezifikation unter
<a href=http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1>
http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1</a>.
F&uuml;r die Benutzung von White_dune ist vor allem die Node Referenz
<a href=http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1/part1/nodesRef.html>
http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1/part1/nodesRef.html
</a>
wichtig.<br>
Eine kurze Einf&uuml;hrung in die VRML97 Struktur in deutscher Sprache
finden Sie im Internet unter
 <a href=http://129.69.35.12/vrml/linuxtag/scenengraph.html>
http://129.69.35.12/vrml/linuxtag/scenengraph.html</a>.
Ein gutes, einfaches Tutorial &uuml;ber VRML97 f&uuml;r Einsteiger
in englischer Sprache findet sich (ausser in einer Anzahl entsprechender 
B&uuml;cher) unter
<a href=http://web3d.vapourtech.com/tutorials/vrml97/>
http://web3d.vapourtech.com/tutorials/vrml97/</a>.
</p>
<h3><a name="waskann">Was "white_dune" nicht kann und was es kann</a></h3>
<p>
<ul>
  <li>
  <strong>White_dune ist (noch) kein vollst&auml;ndiger VRML97 Browser und
  kann nicht alles darstellen</strong><br>
  Man kann mit white_dune Interaktion und Scriptprogrammierung erstellen,
  aber zum Testen braucht man immer noch <em>Datei -&gt; Vorschau</em>
  (oder muss das File abspeichern und dann mit einen VRML Browser aufrufen).
  </li>
  <li>
  <strong>Was white_dune zur Zeit (noch) fehlt ist die Unterst&uuml;tzung 
  f&uuml;r
  selbst definierte neue VRML Knoten (PROTO bzw. EXTERNPROTO)</strong><br> 
  White_dune erkennt PROTOs und schreibt PROTOs beim Speichern einer Datei 
  unver&auml;ndert zur&uuml;ck. Man kann neue VRML Knoten von jeweiligen
  PROTO-Typ einf&uuml;gen und die Fieldwerte ver&auml;ndern (wobei bei
  PROTOs aus Dateien (EXTERNPROTO) die Defaultfieldwerte (noch) nicht 
  korrekt erkannt werden). PROTOs werden im 3D Preview Fenster (noch) 
  nicht vollst&auml;ndig richtig dargestellt. Es gibt auch (noch) keine 
  M&ouml;glichkeit 
  (ausser <em>Datei -&gt; textedit </em>), die PROTO Definition zu ver&auml;ndern 
  </li>
  <li>
  <strong>White_dune ist (noch) kein allgemein einsetzbares Modelling Tool.
  </strong><br>
  Komfortable Eingabem&ouml;glichkeiten gibt es f&uuml;r einfache Shapeknoten 
  (K&ouml;rper) wie Box (W&uuml;rfel), Sphere (Kugel), Cone (Kegel),
  und Zylinder sowie  Shapeknoten wie ElevationGrid (H&ouml;henfeld) und 
  Extrusion, aber nicht f&uuml;r Shapeknoten wie IndexedFaceSet 
  (aus Einzelfl&auml;chen zusammengesetzter K&ouml;rper, "Mesh"),
  IndexedLineSet (Linienb&uuml;ndel) und PointSet (Punktwolke), die in
  der Regel aus sehr vielen Einzelwerten bestehen, f&uuml;r die (noch)
  das Konzept fehlt.<br>
  Der beim 3D-Modelling am h&auml;ufigsten eingesetzte K&ouml;rper ist
  die "mesh". Viele 3D-Modelling-Programme exportieren zur Zeit bei 
  VRML97 ausschliesslich "mesh"-Daten als IndexedFaceSet.<br>
  </li>
  <li> 
  Ein beim 3D-Modelling ebenfalls h&auml;ufig eingesetzter K&ouml;rper ist 
  der "NURBS" K&ouml;rper, der von white_dune unterst&uuml;tzt wird.<br>
  Shapeknoten wie NurbsSurface, NurbsCurve oder NurbsGroup gibt es im 
  traditionellen VRML97 Standard von 1997 nicht, sie sind Teil 
  des VRML97 Amendment 1 ("VRML97 Anhang 1") Standard von 2002.<br>
  Er wird zur Zeit von den VRML97 Browser bitmanagement/blaxxun 
  cc3d/contact unterst&uuml;tzt, aber nicht in
  schlecht gewarteten VRML browsern wie cosmoplayer 2.1.<br>
  F&uuml;r cosmoplayer existiert eine (langsame
  und nicht vollst&auml;ndige) Implementierung &uuml;ber ein VRML PROTO.
  Weitere Informationen dazu finden Sie 
  <a href=../vrml200x_nurbssurface/index.html>hier</a>.
  </li>
  <li>
  White_dune erlaubt letztendlich die Konvertierung aller fl&auml;chigen 
  K&ouml;rper in ein IndexedFaceSet. Ein IndexedFaceSet kann in ein
  IndexedLineSet, ein IndexedLineSet in ein PointSet konvertiert werden.<br>
  Dabei muss beachtet werden, dass diese Konvertierungen (vorerst)
  Einbahn-Strassen darstellen, eine R&uuml;ckkonversion ist nicht innerhalb
  des white_dune Programms durchf&uuml;hrbar.
  </li>
</ul>
</p>
<p>
Man findet einige typischen VRML Beispiele (die man in white_dune)
laden kann <a href=../typical_vrml_examples/index.html>hier</a>, 
aber man muss sich dar&uuml;ber im Klaren sein, dass diese Beispiele
keine Modelling- oder Animations-Features zeigen, sie zeigen 
haupts&auml;chlich VRML97 Beispiele &uuml;ber Interaktion und Scripting. 
Das sind Features die in white_dune (noch) nicht korrekt angezeigt werden 
k&ouml;nnen.<br>
Die Beispiele dienen als Ausgangsbasis, um mit white_dune interaktive
3D-Welten zu erstellen, die dann sp&auml;ter mit einen "richtigen" 
VRML Browser benutzt werden k&ouml;nnen.
</p>
<h3><a name="fenster">Die 5 Fenster von "white_dune"</a></h3> 
<p>
<img src=windows.png><br>
Neben diversen Toolbars f&uuml;r Icons und Nachrichten besteht "white_dune" im 
wesentlichen aus 5 Fenstern. Ausser dem "3D Preview" Fenster lassen
sich die Fenster &uuml;ber den Men&uuml;punkt
"View" angepasst an den jeweiligen Arbeitsschritt
ein- und ausschalten. 
<ul>
 <li>
  <b>Scene Tree</b><br>
  Dieses Fenster enth&auml;lt den Szenengraphen, und zeigt damit
  die Struktur einer VRML Datei, die Information, wie 
  einzelne VRML Nodes (Knoten) angeordnet sind. <br>
 </li>
 <li>
  <b>Field View</b><br>
  Dieses Fenster enth&auml;lt die Fieldwerte, die Zahlen
  (bzw. Zeichenketten usw.) in einer VRML Datei. Angezeigt
  werden jeweils die Fields des zuletzt ausgew&auml;hlten
  Knoten. 
 </li>
 <li>
  <b>Route View</b><br>
  Dieses Fenster enth&auml;lt die ROUTE's, die 
  Informationswege mit denen sich verschiedene 
  VRML Knoten beim Programmlauf verschiedene Nachrichten
  schicken k&ouml;nnen.<br>
  Ausgehend von den Einstellungen bei <em>Optionen -&gt; RouteView 
  Einstellungen</em> werden im RouteView entweder die zur Zeit bestehenden
  ROUTEs angezeigt (so wie in einer VRML-Datei nur die bestehenden ROUTEs
  abgelegt sind) oder die Routes und alle existierenden Knoten, so dass
  es bei kleinem VRML-Dateien einfacher ist, neue ROUTEs hinzuzuf&uuml;gen,
  w&auml;hrend sich bei grossen VRML-Dateien ein verwirrendes Bild ergibt.
 </li>
 <li>
  <b>Channel View</b><br>
  Dieses Fenster besch&auml;ftigt sich ausschliesslich
  mit Interpolatorknoten. Interpolatorknoten sind in VRML97
  vor allem wichtig f&uuml;r Animationen.
 <li>
  <b>3D Preview</b><br>
  Dieses Fenster l&auml;sst sich nicht abschalten und 
  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&uuml;ckenhaft.<br>
  Einige Knotentypen wie "MovieTexture" und
  selbst definierte "EXTERNPROTO" werden &uuml;berhaupt nicht dargestellt. 
  Die Icons von Knoten, die &uuml;berhaupt nicht dargestellt werden sind
  entweder leer (EXTERNPROTOs) oder haben einen schwarzen Rahmen.
  Bei den Knoten aus dem wenig verbreiteten erweiterten 
  VRML97 Amendment 1 Standard (ISO/IEC 14772:2002) gibt es die meisten
  L&uuml;cken, obwohl die Knoten NurbsSurface, NurbsCurve und NurbsGroup 
  von Amendment 1 zur Zeit f&uuml;r die m&auml;chtigsten 3D Modelling 
  Features von white_dune verantwortlich sind.<br> 
  Es sind auch nicht alle Fieldwerte richtig dargestellt, zum Beispiel
  bei Knotentypen wie "Text" unter Unix (besonders wenn ohne 
  Unterst&uuml;tzung der GLUT Bibleothek &uuml;bersetzt wird) ist
  die Umsetzung als "erst mal besser als gar nichts"
  zu verstehen. Auch die Fieldwerte des zum "Text" Knoten geh&ouml;renden
  "FontStyle" Knotens werden (noch) nicht richtig dargestellt.<br>
  Auch das Field "convex" wird (noch) ignoriert. Wird "convex" auf "false"
  gesetzt, werden Einbuchtungen in Fl&auml;chen bei der Darstellung 
  beachtet.<br>
  <img src=convex_freewrl.png>
  <img src=convex_dune.png><br>
  Korrekte und fehlerhafte Darstellung eines IndexedFaceSet mit eingebuchteten
  Fl&auml;chen bei "convex false" in FreeWRL (links)
  und White_dune (rechts)<br>
  Das Problem mit "convex false" existiert auch bei Extrusion-basierten
  Knoten. Bei Extrusion-basierten Knoten existieren noch weitere 
  Darstellungsfehler.<br>
  Die Darstellung von mehreren durchsichtigen K&ouml;rpern hintereinander
  ist ebenfalls fehlerhaft.<br>
  Auch bei der Darstellung von PROTOs kann es zu Fehlern kommen.<br>
  <b>Nat&uuml;rlich bedeutet eine solche falsche Darstellung im 3D Preview
  eines 
  eingelesenen VRML Objekts nicht, dass sich ein Fehler in der eingelesenen 
  VRML Datei befindet</b>. <br>
  Mit <em>Datei-&gt;Vorschau</em> sollte man im Zweifelsfall 
  einen VRML Browser starten.
 </li>
</ul>
</p>
<h3><a name="navigation">Navigation</a></h3>
<p>
  Um im 3D Preview Fenster navigieren zu k&ouml;nnen steht zur Verf&uuml;gung:
  <ul>
   <li>
   Shift-Mouse 1: Zoom View
   </li>
   <li>
   ctrl-Mouse 1: Rotate View
   </li>
   <li>
   Shift-ctrl-Mouse 1: Move View
   </li>
  </ul>
  zus&auml;tzlich steht ab der Version 0.16 eine SGI artige Navigation
  zur Verf&uuml;gung. Bitte beachten Sie, dass ein fehlkonfigurierter
  Windowmanager diese Eingaben f&uuml;r seine eigenen Zwecke interpretieren
  k&ouml;nnte...
  <ul>
   <li>
   Alt-Mouse1: Rotate View
   </li>
   <li>
   Alt-Mouse2: Move View
   </li>
   <li>
   Alt-Mouse1-Mouse2: Zoom View
   </li>
  </ul>
  Ist ein 6D Eingabeger&auml;t aktiv, kann bei angew&auml;hltem 
  Scene-Icon <img src=sceneicon.jpg> im Scene Tree Fenster
  je nach der Auswahl der Transformicons <img src=schieb.png> <img src=rot.png>
  <img=6d.png> <img src=rocket.png> <img src=hover.png>
  durch das VRML File navigiert werden. 
</p>
<h3><a name="scenegraph">Ver&auml;ndern des Szenengraph</a></h3>
<p>
Einen neuen
VRML node mit eine Mausklick auf das entsprechenden Icon 
hinzuf&uuml;gen ist der einfachste Weg, den Szenengraph zu &auml;ndern.<br>
Um ein VRML Knoten Icon zu identifizieren, bewegen Sie den Mousezeiger 
&uuml;ber das Icon und warten Sie kurz. Ein beschreibender Text wird auf der
statusbar am unteren Ende des Fensters erscheinen.<br> 
White_dune versucht, entweder den neuen node am blau untermalten 
Selektionspunkt des Szenengraph<br> 
<img src=node_add_valid.jpg><br>
oder am root node des Scenengraph ("Scene" Icon) einzuf&uuml;gen.<br>
White_dune graut alle node Icons aus, die nicht eingef&uuml;gt werden 
k&ouml;nnen.<br>
<img src=node_add_invalid.jpg><br><br>
Die folgende Tabelle zeigt die Anforderung f&uuml;r die entsprechenden 
Knoten im VRML97 Standard:<br>
<ul>
<li>Appearance braucht Shape
<li>Material braucht Appearance
<li>ImageTexture braucht Appearance
<li>MovieTexture braucht Appearance
<li>PixelTexture braucht Appearance
<li>TextureTransform braucht Appearance
<li>Coordinate braucht IndexedFaceSet oder IndexedLineSet oder PointSet
<li>Color braucht IndexedFaceSet oder IndexedLineSet oder PointSet
<li>Normal braucht IndexedFaceSet
<li>TextureCoordinate braucht IndexedFaceSet
<li>FontStyle braucht Text
<li>AudioClip braucht Sound
</ul>
So muss zum Beispiel ein Appearence Knoten selektiert sein, damit ein 
ImageTexture Knoten eingef&uuml;gt werden kann, oder ein Shape Knoten
selektiert sein, damit ein Appearence Knoten eingef&uuml;gt werden kann.<br>
Alle die entsprechenden Felder im VRML97 Standard sind vom Datentyp
SFNode, deshalb kann nur ein Knoten eingef&uuml;gt werden.
Deshalb wird ein Icon auch dann ausgegr&auml;ut, wenn schon ein 
entsprechender Knoten vorhanden ist.<br>
Zum Beispiel k&ouml;nnen keine zwei ImageTexture Knoten zu einem
Appearence Knoten hinzugef&uumlt werden. 
Deswegen ist das ImageTexture Icon ebenfalls ausgegraut, 
wenn ein Appearence Knote selektiert wird, aber ein ImageTexture Knoten
schon vorhanden ist.<br>
Nach dem VRML97 Standard brauchen auch die K&ouml;rper Knoten Box, Sphere, 
Cone, Cylinder, IndexedFaceSet, IndexedLineSet, PointSet, ElevationGrid, 
Extrusion und Text als Vorraussetzung einen Shapeknoten. Da in der
Mehrzahl der F&auml;lle bei der Benutzung dieser Shape.geometry Knoten die 
ben&ouml;tigte Struktur klar ist, wird beim Klicken auf die Icons und
bei der Benutzung der <em>Erzeugen -&gt; Koerper -&gt; </em> Men&uuml;punkte  
eine vollst&auml;ndige Shape-Struktur (einschliesslich eines umschliessenden
Transform Knoten) aufgebaut.<br>
(Neu in Version 0.29beta) Ist bei der Erzeugung so eines Shape-Knotens
kein Knoten angew&auml;hlt in den der Shape-Knoten passt, so wird der
umschliessende Transform Knoten so aufgebaut, dass der neue Knoten direkt
vor dem aktuellen Kamerapunkt erscheint).
</p>
<p>
Die Kommandos <em>Bearbeiten -&gt; kopieren</em>, 
<em>Bearbeiten -&gt; einf&uuml;gen</em> und
<em>Bearbeiten -&gt; l&ouml;schen</em> arbeiten so wie die gleichen
Kommandos in vielen Programmen. Wenn der letzte Mausklick in den 
Scene Tree geht, k&ouml;nnen Sie benutzt werden, um den Szenengraph
wie erwartet zu ver&auml;ndern.
</p>
<p>
Ein ungew&ouml;hnliches Kommando ist das 
<em>Bearbeiten -gt; Kopiere Zweig bis zur Wurzel</em> Kommando.
Es kopiert alle Knoten entlang des Pfads bis zur Wurzel des aktuellen
Szenengraph Zweigs in den Einf&uuml;gen Puffer.
Das kann sehr n&uuml;tzlich sein, um einen Szenengraphzweig zu duplizieren
und aufzuspalten.
</p>
<p>
Ein anderer Weg, den Szenengraph zu ver&auml;ndern, ist Teile davon mit
der Maus herumzuschieben.<br>
White_dune zeigt das Icon eines Stopschildes,
wenn der Zielknoten dies nicht erlaubt.<br>
<img src=scenegraphchange_invalid.jpg><br>    
Wenn der Zielknoten es erlaubt, benutzt white_dune den normalen Mauszeiger.<br>
<img src=scenegraphchange_valid.jpg><br>
Ein Ziel ist nicht eindeutig, wenn der Ziel node mehrere SF/MFNode fields hat.
<br>
<img src=scenegraph_multiple_target.png><br>
Knoten mit mehreren Fields vom Typ SF/MFNode (zum Beispiel der collision 
Knoten) werden im Scenetree immer mit den entsprechenden Feldnamen 
dargestellt (auch wenn die Einstellungen im 
<em>Optionen -&gt; Allgemeine Einstellungen...</em> Dialog anders sind), damit 
die Field Namen als Ziel benutzt werden k&ouml;nnen.<br>
<img src=scenegraph_multiple_fields.png>
</p>
<p>
Genauso wie beim lokalen kopieren/verschieben im Explorerprogramm von 
M$Windows2000 und &auml;hnlichen Filemanagern kann man das Verhalten
beeinflussen, wenn man die Tastatur benutzt, nachdem man angefangen hat,
den VRML Knoten herumzuschieben:<br>
<ul>
 <li>
  Verschieben: <br>
  keine Taste dr&uuml;cken oder Shift Taste dr&uuml;cken
  (das Icon bleibt unver&auml;ndert)
  <br><img src=scenegraphchange_move.jpg><br>  
 </li>
 <li>
  Kopieren: 
  <br><img src=scenegraphchange_copy_ptr.jpg><br>  
  Crtl Taste dr&uuml;cken
  (das Icon zeigt zus&auml;tzlich ein "+" Zeichen)
  <br><img src=scenegraphchange_copy.jpg><br>  
 </li>
 <li>
  DEF/USE: 
  <br><img src=scenegraphchange_link_ptr.jpg><br>  
  Crtl Taste und Shift Taste gleichzeitig dr&uuml;cken
  (das Icon zeigt zus&auml;tzlich ein "Pfeil" Zeichen)
  <br><img src=scenegraphchange_link.jpg><br>  
 </li>
</ul>
</p>
<b><h4><a name="use">Die Benutzung von USE</a></h4></b><small>(neu in Version 0.29beta)</small><br>
 Neben der oben gezeigten drag and drop Methode gibt es einen weiteren
 Weg um das USE Konstrukt zu benutzen.
 Die USE Konstruktion ist so etwas wie ein ununterscheidbarer Zeiger, die
 nochmal-Benutzung eines bereits existierenden Knotens.
 Der Knoten, der ge-USE-t werden soll braucht einen DEF Namen, der mit
 <em>Bearbeiten -&gt; DEF</em> zugewiesen wird.
 <em>Bearbeiten -&gt; USE</em> (falls m&ouml;glich) erzeugt ein neues USE 
 des letzten ge-DEF-ten Knotens an der Stelle des angew&auml;hlten Knotens.<br>
 Wird der ge-DEF-te Knoten ge&auml;ndert, &auml;ndert sich der get-USE-te
 Knoten ebenfalls.<br>
 Wird der ge-USE-te Knoten ge&auml;ndert, &auml;ndert sich der get-DEF-te
 Knoten ebenfalls.<br>
 In white_dune (anders wie wenn man einen Texteditor f&uuml;r eine VRML97
 Datei benutzt), can man den ge-DEF-ten Knoten l&ouml;schen.
 Der zuerst geschreibene ge-USE-te Knoten wird dann zum neuen ge-DEF-ten
 Knoten, der Grund liegt daran, dass das DEF/USE ununscheidbare Zeiger
 bedeuten.
 <br>
 Die Benutzung von USE ist sinnvoll, um VRML Dateien klein zu halten
 (was bedeutet, dass die Dateien schneller im Internet &uuml:bertragen
 werden k&ouml;nnen), erh&ouml;ht die Wartbarkeit und kann von einem
 entsprechend programmierten VRML Browser dazu genutzt werden, dass
 Objekte schneller gezeichnet werden.<br>
 Zus&auml;tzlich Kommandos die USE benutzen sind das <a href="#array">
 array Werkzeug</a> und manche der folgenden "create" Szenegraph Operationen.
</p>
<p>
 <b><h4><a name="scenegraphoperations">Szenengraph Operationen</a></b></h4><small>(new in Version 0.27beta)</small><br>
 Es gibt (noch) keinen Weg, um mehrere Knoten im Szenengraph zu verschieben.
 Als Workaround gibt es Operationen, die auf alle Knoten im Szenengraph Zweig,
 der dem angew&auml;lten Knoten folgt (einschliesslich des 
 angew&auml;lten Knotens), wirken. <br>
 <img src=scenegraphbranch_start.png><br>  
 Die verf&uuml;gbaren Kommandos sind Sie unter dem Menupunkt
 <em>Aktion -&gt; Rest des Szenegraph-Zweigs</em> erreichbar:
 <ul>
  <li>
   <em>Verschieben in </em><br>
   Dieses Kommando verschiebt die Knoten in einen "grouping node" 
   (gruppierender Knoten) (wie Group, Transfrom usw.)<br>
   <img src=scenegraphbranch_transform.png><br>
   Es ist ebenfalls m&ouml;glich, Knoten in eine neue VRML97 Datei 
   auszulagern und diese Datei &uuml;ber den Inline Befehl in der aktuellen
   VRML97 anzusprechen, allerdings nur, wenn keine ROUTE die auszulagernden
   Knoten anspricht oder eine USE Konstruktion benutzt wird.
  </li>
  <li>
   <em>1 Ebene nach oben </em><br>
   Dieses Kommando verschiebt die Knoten in den gleichen Szenegraph 
   Zweig wie der "parent node" (Eltern Knoten) des angew&auml;lten Knotens.<br>
   <img src=scenegraphbranch_up.png> 
  </li>
  <li>
   <em>Erzeugen</em><br>
   Das Erzeugen Kommando erzeugt an jeder Stelle innerhalb des
   Scenengraphen an der das m&ouml;glich ist, den neuen Knoten
   (ImageTexture, Material, Appearance, Normal usw.). 
   Die zu erzeugenden Knoten geh&ouml;ren alle zum Shape Knoten. 
   Dabei muss unterschieden werden zwischen Knoten, die zum appearance Field
   von Shape geh&ouml;ren (ImageTexture, Material und Appearance) und Knoten, 
   die zum geometry Field von Shape geh&ouml;ren (Normal, TextureCoordinate).
   Bei Knoten, die zum appearance Field geh&ouml;ren, wird ein neuer Knoten
   bei der ersten M&ouml;glichkeit im Szenegraph angelegt und bei allen
   weiteren M&ouml;glichkeiten wird &uuml;ber USE dieser Knoten wiederverwendet.
   Das macht es m&ouml;glich, die Farbe, die Materialeigenschaften und
   die Textur eines ganzen Szenegraphzweigs mit wenig Aufwand zu 
   ver&auml;ndern. Bei Knoten, die zum geometry Field von Shape geh&ouml;ren,
   werden die Knoten jeweils aus den Daten des Shapes (zum Beispiel ein
   IndexedFaceSet) erzeugt.
  </li>
  <li>
   <em>Setzen</em><br>
   Das Setzen Kommando ver&auml;ndert einige Fields (creaseAngle, 
   transparency, usw.) im Szenengraph Zweig, die den Look eines Shape
   Knoten beeinflussen und einfach ge&auml;ndert werden k&ouml;nnen.
  </li>
  <li>
   <em>L&ouml;schen</em><br>
   Das L&ouml;schen Kommando l&ouml;scht einige Knoten 
   (ImageTexture, Material, Appearance, Normal etc.) im Szenengraph Zweig.
   Die meisten dieser Knoten korrespondieren mit den Knoten beim
   <em>Erzeugen</em> Kommando, denn das <em>Erzeugen</em> Kommando
   kann nur dann Knoten einf&uuml;gen, wenn das passende Field nicht durch
   einen bereits existierenden Knoten blockiert ist.
   Deswegen kann das <em>L&ouml;schen</em> Kommando der erste Schritt sein,
   um Werte im Szenengraphzweig zu ver&auml;ndern.
  </li>
  <li>
   <em>Zeige Polygon/Primitivzahl in der Anzeigeleiste</em>
    Dieses Kommando ist ein Informationskommando und &auml;ndert nichts
    im Szenegraph. Es kann dazu benutzt werden um den Teil des Szenegraphen
    zu finden, der den gr&ouml;ssten Teil der Polygone/Primitive enth&auml;lt.
    Das ist sehr wichtig um Performance Probleme in Realtime 3D Daten
    zu finden.
    Primitive sind Knoten wie Box (Quader), Cone (Kegel), Cylinder (Zylinder)
    und Sphere (Kugel).
    Bei Primitiven h&auml;gt Zahl der benutzten Polygone vom benutzten
    VRML Browser ab. Zum Beispiel kann ein VRML Browser 16 Polygone
    benutzen, um die obere Fl&auml;che eines Zylinders f&uuml;r einen
    bei schlechter Qualit&auml;t darzustellen oder 32 Polygone bei
    besserer Qualit&auml;t.<br>
    Um den Teil im Szenengraph zu finden, der die gr&ouml;sste 
    Anzahl von Polygonen/Primitive hat, kann ein Bin&auml;rer Suchalgorithmus
    verwendet werden:<br>
    <ul>
     <nl> 
      Klicke das Scene Icon an der Wurzel des Szenengraph an und benutze
      <em>Aktion -&gt; Rest des Szenengraph Zweigs -&gt; 
      Zeige Polygon-/Primitiv-Zahl in der Anzeigeleiste</em>.
      Angezeigt wird die Zahl der Polygone/Primitiven in der ganzen VRML Datei.
     </nl>
     <nl>
      W&auml;hlen Sie einen Knoten an, der ungef&auml;hr in der Mitte des
      aktuellen Bereichs des Szenengraph Zweigs ist und benutzen Sie
      <em>Aktion -&gt; Rest des Szenengraph Zweigs -&gt; 
      Zeige Polygon-/Primitiv-Zahl in der Anzeigeleiste</em>.<br>
      Wenn die Nummer gr&ouml:sser ist als die H&auml;lfte des Results
      des letzten Kommandos, dann ist die Mehrheit der Polygone/Primitiven
      im oberen Teil des aktuellen Bereichs des Szenengraph Zweigs.<br>      
      Wenn die Nummer kleiner ist als die H&auml;lfte des Results
      des letzten Kommandos, dann ist die Mehrheit der Polygone/Primitiven
      im unteren Teil des aktuellen Bereichs des Szenengraph Zweigs.<br>      
      Fahren sie mit dem Schema bei der Mitte des verbleibenden Bereichs
      des letzten Befehls weiter zu machen, fort bis man entweder den
      Knoten oder den Bereich von Knoten gefunden hat, die die meisten
      Polygone/Primitive in der Datei enth&auml;lt.
     </nl>
     <nl>
      Der Knoten (oder Bereich von Knoten) (z.B. wenn es ein Group oder
      Transform Knoten ist) kann seinerseitz andere Knoten enthalten.
      Wenn sie auf das Pluszeichen im Szenenbaum klicken k&ouml;nnen
      &ouml:ffnet sich ein neuer Bereich des Szenenbaum. 
      Wenn weiter nach dem Teil mit den meisten Polygonen/Primitiven 
      gesucht werden soll, benutzen Sie
      <em>Aktion -&gt; Rest des Szenengraph Zweigs -&gt; 
      Zeige Polygon-/Primitiv-Zahl in der Anzeigeleiste</em>.
      und machen Sie mit dem 2. Schritt weiter.
     </nl>
    </ul>
  </li>
 </ul>
 Leider sind einige dieser Operationen (noch) sehr langsam.
</p>
<h3><a name="route">Eingabe/L&ouml;schen von ROUTE's</a></h3>
<p>
In white_dune gibt es zwei verschiedene Einstellungen, die entscheiden,
wie eine ROUTE eingegeben werden kann.
<ul>
 <li>
  In <em> Optionen -&gt; RouteView Einstellungen...</em> ist das
  K&auml;stchen f&uuml;r "Zeige alle Knoten im Routeview" angeklickt:<br>
  Alle Knoten in der Szene werden im Routeview angezeigt.<br>
  Das ist sinnvoll f&uuml;r die Arbeit mit kleinen VRML Dateien, aber
  nicht f&uuml;r VRML Dateien mit vielen Knoten, dann kann es schwierig
  werden, das richtige Icon zu finden.
 </li>
 <li>
  In <em> Optionen -&gt; RouteView Einstellungen...</em> ist das
  K&auml;stchen f&uuml;r "Zeige alle Knoten im Routeview" nicht angeklickt:<br>
  Nur Knoten mit existierenden ROUTEs werden im Routeview gezeigt.<br>
  Um einen Knoten ohne ROUTEs im Routeview erscheinen zu lassen, muss man
  den entsprechenden Knoten im Scene Tree anw&auml;hlen und dann das
  <em>Route -&gt; Zeige Knoten ganz oben</em> Kommando verwenden.
 </li>
</ul>
</p>
<p>
ROUTEs werden in white_dune angelegt, indem man das entsprechende Icon
im RouteView Fenster findet (klicken auf die Icons selektiert die
entsprechenden Icons im Scene Tree Fenster), auf die K&aumlstchen
f&uuml;r die Events klickt. Dabei wird der Name des Events angezeigt
und es l&auml;sst sich eine Linie zum n&auml;chsten Icon/Event ziehen.
<br>
<img src=routemake1.jpg><img src=routemake2.jpg> <br>
Es k&ouml;nnen (wie im VRML Standard verlangt) nur Events mit gleichen
Datentypen (gleiche Farbe der K&auml;stchen) verbunden werden.<br>
Zum L&ouml;schen der ROUTEs kann die Linie einfach durchgestrichen 
werden.<br>
<img src=routecut1.jpg><img src=routecut2.jpg><br>
Als Vorschlag f&uuml;r Anf&auml;nger sind einige Event-K&auml;stchen mit
einem kleinen roten Punkt markiert. Der rote Punkt zeigt wichtige/oft
benutzte Events.<br>
Nat&uuml;rlich h&auml;ngt die Wichtigkeit/Benutzungsh&auml;ufigkeit 
eines Events vom
Thema der VRML Welt ab. Alle Sensor Knoten (die eigentlich Quelle bei der
Verarbeitung der meisten Events) haben mit roten Punkten markierte 
Event-K&auml;stchen.
</p>
<p>
Bei komplexen VRML Welten mit vielen Objekten (zum Beispiel dem VRML Export
aus einem 3D-Modelling-Programms wie Wings3D, Blender, AOI, Catia, 
3D Studio Max, Maya usw.) kann es sehr schwierig werden, die gew&uuml;schten
VRML Knoten im RouteView Fenster wiederzufinden. 
<br><img src=routeview_full.png><br>
Es gibt Befehle, um zum angew&auml;lten Knoten zu springen (mit
<em>Routes -&gt; Kein Zoom/Sprung zur Auswahl</em>)
<br><img src=routeview_jump.png><br>
oder die Ansicht des Routeview zu vergr&ouml;ssern 
(mit <em>Routes -&gt; Herauszoomen</em>)
<br><img src=routeview_zoom.png><br>
aber in diesem Fall 
empfiehlt sich der Einsatz des Inline VRML-Knotens.
Damit ist es m&ouml;glich
ist statische Objekte (die zum Beispiel Teil der Umgebung oder Teil von
starren Objekten sind) in eigene VRML Dateien auszulagern, so dass die
gesamte VRML-Welt nur noch aus sehr wenigen VRML Knoten besteht.
<br><img src=routeview_inline.png><br>
</p> 
<p>
<b>Befehle, die automatisch ROUTEs erzeugen</b><br>
Es gibt zwei Befehle, die automatisch neue ROUTEs erzeugen.
<ul>
 <li>
  <em> Aktion -&gt; Animation erstellen </em><br>
  Hierbei werden die ROUTEs <br>
  TimeSensor -&gt; *Interpolator -&gt; angew&auml;lter Knoten<br>
  erzeugt. Es &ouml;ffnet sich ein Dialog, der fragt, ob ein 
  neuer TimeSensor oder ob ein bereits existierender 
  TimeSensor benutzt werden soll. Der Dialog fragt auch danach, welches
  Zielevent (Field) im angew&auml;hlten Knoten benutzt werden soll. Nach dem
  Typ des Zielevents richtet es sich, welcher Interpolator erzeugt wird:
  <ul>
   <li>
    SFFloat: ScalarInterpolator
   </li>
   <li>
    SFVec3f: PositionInterpolator
   </li>
   <li>
    SFRotation: OrientationInterpolator
   </li>
   <li>
    SFColor: ColorInterpolator
   </li>
   <li>
    MFVec3f: CoordinateInterpolator (ausser der Zielknoten ist ein Normal 
             Knoten ist und es wird deswegen ein NormalInterpolator erzeugt)
   </li>
  </ul>
  Wenn der Inhalt des Zielevents ermittelt werden kann, wird ein erster
  Eintrag in den Interpolator mit key=0.0 und keyValue=wert_zielfeld erzeugt.
 </li>
 <li>
  <em> Aktion -&gt; Interaktion erstellen </em><small>(neu in Version 0.29beta)<br></small>
  Hierbei werden die ROUTE <br>
  Sensor -&gt; angew&auml;lter Knoten<br>
  erzeugt.<br>
  Da es in der Regel mehrere Zielevents im angew&auml;hlten Knoten gibt 
  und anders als bei den 
  Interpolatoren die Zuordnung Zielevent zu Sensor oft nicht eindeutig ist,
  ergeben sich sehr viele M&ouml;glichkeiten, von denen viele nur selten
  einen Sinn ergeben. Deswegen gibt es zwei Listboxen: eine Listbox
  mit dem zwischen
  empfohlenen Zielevents und allen Zielevents ausgew&auml;hlt werden kann,
  und eine Listbox, mit der bereits existierende Sensoren ausgew&auml;hlt
  werden k&ouml;nnen.<br>
  In einem Fenster werden entsprechend der Auswahl in den Listboxen 
  anklickbare K&auml;stchen f&uuml;r alle Sensorevent/Zielevent
  Kombinationen dargestellt, aus denen die neue Interaktion ausgew&auml;lt
  werden kann.
 </li>
</ul>
</p>
<h3><a name="fields">Fieldwerte ver&auml;ndern</a></h3>
<p>
Es gibt mehrere M&ouml;glichkeiten, Fieldwerte zu ver&auml;ndern:<br>
<ul>
 <li>
  <b><a name="keyboard">Tastatureingabe</a></b><br>
  &Uuml;ber das klicken mit der Maus auf den entsprechenden Wert
  und dem Loslassen der Maustaste. Dann &ouml;ffnet sich ein 
  Texteingabefenster und man kann Werte &uuml;ber die Tastatur eingeben.
 </li>
 <li>
   <b><a name="mouse">Mauseingabe</a></b><br>
  &Uuml;ber das klicken mit der Maus auf den entsprechenden Wert,
  dem Festhalten der Maustaste und der Bewegung des Mauszeigers nach
  links oder rechts. Dies erh&ouml;ht oder erniedrigt den Wert.<br>
   <img src=fieldchange.jpg><br>
 </li>
 <li>
  <b><a name="MF">"MF"-Fieldwerte &auml;ndern</a></b><small>(new in version 0.27beta)</small><br>
  Im Fieldview Window, markiert ein "+"-Zeichen auf der linken Seite
  ein "MF"-field 
  wie MFFloat, MFInt32, MFVec3f, MFRotation, MFString usw.
  "MF"-Fields sind Datenfelder, man kann den Inhalt abz&auml;hlen: ein, zwei,
  drei usw.<br>
  Um ein "MF"-Field anzuschauen/zu ver&auml;ndern, muss man auf das
  "+"-Zeichen auf der linken Seite klicken.<br>
  Wie in einer VRML Datei wird ein "MF"-field mit nur einem Dateneintrag
  &auml;hnlich behandelt wie ein normales "SF"-Field mit nur einem Datum.<br>
  Um Daten zu einem "MF"-field hinzuzuf&uuml;gen, muss man auf die zweite
  Spalte von "+"-Zeichen klicken. Dann wird ein neuer Dateneintrag 
  in die n&auml;chste Stelle im Datenfeld eingef&uuml;gt.<br>
  Um Daten an erster Stelle einzuf&uuml;gen, muss man im ge&ouml;ffneten
  "MF"-field auf die rechte Seite des FieldView Fensters &uuml;ber dem 
  ersten Eintrag klicken.<br>
  Um von einem "MF"-Field zu l&ouml;schen, muss auf die linke Seite
  des FieldView Fensters in der Reihe mit dem zu l&ouml;schenden 
  Dateneintrag klicken und danach den Men&uuml;punkt 
  <em>Bearbeiten -&gt; Loeschen</em> benutzen.
 </li>
 <li>
  <b><a name="3DWindow">Fieldwerte ver&auml;ndern im 3D Preview Fenster</a></b><br>
   Ver&auml;nderungen im 3D Preview Fenster bedeuten auch eine 
   Ver&auml;nderung der
   Fieldwerte. Haupts&auml;chlich wird dabei ein Transformknoten 
   ver&auml;ndert.<br>
   Mit den Werkzeugen <img src=transform.jpg> legen Sie beim interaktiven
   Arbeiten fest, ob das Arbeit mit der Maus auf einem Transformknoten
   eine 
   <ul>
   <li> Verschiebung <img src=schieb.png> </li>
   <li> Drehung <img src=rot.png> </li>
   <li> Skalierung <img src=scale.jpg> </li>
   <li> Mittelpunktsverschiebung <img src=center.jpg>
        <small>(neu in Version 0.19beta)</small> </li>
   </ul>
   aktiviert wird. <br>
   <strong>Beachten Sie, dass Sie diese Werkzeuge nicht benutzen
   k&ouml;nnen, wenn kein Transformknoten <img src=transform2.jpg> 
   im entsprechenden Zweig 
   des Szenengraphs vorhanden ist</strong>.<br>
   Ausser dem Transformknoten k&ouml;nnen auch andere Fieldwerte im 3D 
   Preview Fenster
   ver&auml;ndert werden. Dabei lassen sich kleine weisse K&auml;stchen 
   verschieben, wie z.B. bei Box, Cone, Cylinder, Sphere, ElevationGrid, 
   Extrusion, PointLight
   oder den VRML97 Amendment 1 NurbSurface/NurbsCurve Knoten.
 </li>
 <li>
  <b><a name="6D">6D Input</a></b> <small>(neu in Version 0.19beta)</small><br>
  Seit Version 0.19beta unterst&uuml;tzt White_dune 6D Eingabeger&auml;te
  (6D bezieht sich auf die 6 Freiheitsgrade) unter Unix/Linux.<br> 
  Ist ein 6D Eingabeger&auml;t konfiguriert und das Icon <img src=6d.png> 
  gedr&uuml;ckt, kann ein Transform-Knoten
  (und die darin enthaltenen Objekte) in allen 6 Freiheitsgraden bewegt 
  werden. Das Icon <img src=schieb.png> beschr&auml;nkt sich auf
  Verschiebung, das Icon <img src=rot.png> auf Drehung.
  <br>
  Das klassische 
  6D Eingabeger&auml;t
  ist der Spaceball, eine Art Joystick, der nur kleine Auslenkungen erlaubt,
  diese aber in alle Raumrichtungen, einschliesslich Drehungen.<br>
  <img src=spaceball.jpg><br>
  Dr&uuml;ckt man zum Beispiel auf den Spaceball, bewegt sich das Objekt
  nach unten. Verdreht man den Spaceball, folgt das Objekt dieser
  Bewegung.<br>
  Die Konfiguration der 6D Eingabeger&auml;te funktioniert (noch) 
  ausschliesslich &uuml;ber Kommandozeilenparameter. Dabei
  muss neben der Art des Eingabeger&auml;ts auch die Skalierung
  (Multiplikation) der Eingabewerte angegeben werden, zum Beispiel:
<br>
<pre>
   white_dune -xinput spaceball -allxyz=20,200 -allrot=40,400
</pre>
<br>
  Es ist auch m&ouml;glich, den Einfluss der Eingabeger&auml;te zu
  vergr&ouml;ssern/verkleinern w&auml;hrend das Programm l&auml;uft.
  Benutzen Sie 
  <em>Modus -&gt; Eingabegeraet -&gt; Vergroessere Eingabegeraet-Daten</em>
  (icon <img src=faster.png>) oder 
  <em>Modus -&gt; Eingabegeraet -&gt; Verkleinere Eingabegeraet-Daten</em>
  (icon <img src=slower.png>).
  <br>
  Wenn die Bewegung auf Verschiegungen (<img src=schieb.png>)
  begrenzt wird, wird nur der "allxyz" Bereich ver&auml;ndert.
  Wenn die Bewegung auf Drehungen (<img src=rot.png>)
  begrenzt wird, wird nur der "allrot" Bereich ver&auml;ndert.
<br>
  Ausser der Unterst&uuml;tzung &uuml;ber das Xinput Protokoll werden
  Spaceballger&auml;te
  auch &uuml;ber Linux Joystick und libsball unterst&uuml;tzt. Details zu
  den Kommandozeilenparametern sind in der 
  <a href=white_dune.1.html#lbAF>man page</a> zu finden. <br>
  Ein anderes 6D Eingabeger&auml;t sind sogenannte Dials (verf&uuml;gbar
  z.B. unter SGI IRIX).
  In der Defaulteinstellung sind die Eingabeachsen etwas ung&uuml;nstig
  angeordnet<br>
  <img src=dials_default.jpg><br>
  &Uuml;ber Kommandozeilenparameter 
<br>
<pre>
   white_dune -xinput dialbox-1 -x=0 -y=2 -z=4 -xrot=1 -yrot=3 -zrot=5 -all=100,100,wheel
</pre>
<br>
  lassen sich die Achsen vertauschen.<br>
  <img src=dials_normal.jpg><br>
 </li>
 <li>
  <b><a name="6Dlocal">6D Local Mode Input:</a></b><small> Kennen Sie Funkfernsteuerungen? (neu in Version 0.19beta)</small><br>
  Ist das 6D Local Icon <img src=6dloc.png> gedr&uuml;ckt, so kann man damit
  die lokalen Achsen eines Transformknoten steuern. <br>
  Bewegt man zum
  Beispiel einen Spaceball in z-Richtung ("in den Schirm hinein", so bewegt 
  sich der Transformknoten (und die enthaltenen Objekte) in Richtung seiner 
  lokalen Z-Achse, folgt also der Richtung des blauen Z-Pfeils.<br>
  Bewegt man zum
  Beispiel einen Spaceball in y-Richtung ("nach oben", so bewegt 
  sich der Transformknoten (und die enthaltenen Objekte) in Richtung seiner 
  lokalen Z-Achse, folgt also der Richtung des gr&uuml;nen Y-Pfeils.<br>
  <img src=6dlocal_right3.jpg><br>
  Das kann sehr sinnvoll sein, wenn man Objekt und Transformknoten 
  entsprechend anordnet. Im Normalfall liegt allerdings ein Objekt 
  nicht in der Richtung der Pfeile seines Transformknotens,<br>
  <img src=6dlocal_wrong.jpg><br>
  deshalb sollte dieser Transformknoten in einen anderen Transformknoten
  gepackt werden und dann der Transformknoten des Objekts entsprechend
  gedreht werden, so dass die Pfeile des neue Transformknotens in 
  Richtung des Objekts liegt.<br>
  <img src=6dlocal_right1.jpg><br>
  <img src=6dlocal_right2.jpg><br>
  Bei der Benutzung zeigt sich ein Effekt, der f&uuml;r Benutzer von
  funkgesteuerten Modellflugzeugen keine &Uuml;berraschung darstellt:
  kommt das Objekt "auf einen zu", f&uuml;hrt eine Rollbewegung des
  Spaceballs nach links zu einer Rollbewegung des Objekts nach rechts.
  <br>
  Ein &auml;hnlicher Bewegungsmodus ist der rocket <img src=rocket.png> 
  (Racketen) Modus. Im rocket modus, sind Verschiebungen nur in der
  lokalen Z-Richtung erlaubt.
  Das is n&uuml;tzlich, um ein Object entlang eines Pfades zu steuern
  und dabei alle Drehungen zu erlauben.<br>
  Ein anderer &auml;hnlicher Bewegungsmodus ist der hover <img src=hover.png> 
  (schwebe) Modus. Im hover modus, sind Drehungen nur um die lokale 
  y-Achse erlaubt.
  Das is n&uuml;tzlich, um ein Object auf einer Ebene zu steuern.<br>
  Andere Bewegungsmodi, die im lokalen Modus arbeiten (&Auml;nderungen nur 
  in Richtung der lokalen Achsen), sind der scale <img src=scale.jpg> 
  (Skalierung) und changing center <img src=center.jpg> (Zentrum 
  ver&auml;ndern) Modus.
 </li>
 <li>
  <b><a name="joystick">Linux joystick Input:</a></b><br>
  Leider sind 6D Eingabeger&auml;te nicht besonders verbreitet. 
  Deshalb bietet white_dune unter Linux Support f&uuml;r joysticks an.
  Eine ganze Anzahl unterschiedlicher Ger&auml;te (darunter auch der Spaceball)
  kann unter Linux als Joystick angesprochen werden. 
  Dabei muss man 6D (z.B. Labtec Spaceball), 4D (z.B. Gamepads mit 2 
  Daumensticks), 3D (z.B. Joystick mit Drehgriff 
  (z.B. Micro$oft Sidewinder Pro))
  und "normale" 2D joysticks unterscheiden.
  <ul>
  <li>
  6D Joysticks (z.B. Labtec Spaceball) sind wie alle anderen 6D 
  Eingabeger&auml;te zu behandeln.<br>
  </li>
  <li>
  4D Joysticks (z.B. Gamepads mit 2 Daumensticks) erlauben keinen 6D und 
  6D Local Modus. Ausser Verschiebung <img src=schieb.png>, 
  Drehung <img src=rot.png>, Skalierung <img src=scale.jpg> und
  Mittelpunktsverschiebung <img src=center.jpg> unterst&uuml;tzen sie noch
  hover <img src=hover.png>
  (schwebe) Modus und rocket <img src=rocket.png> (Racketen) Modus.<br>
  Dabei werden je nach Modus Rotation und Verschiebung auf die 
  entsprechenden Achsen gelegt.
  </li>
  <li>
  Bei 3D Joysticks (z.B. Joystick mit Drehgriff)
  ist die Lage etwas komplizierter. In der default Einstellung erzeugt
  eine Eingabe &uuml;ber die dritte Achse (also eine Drehung am Griff) 
  eine Bewegung in Richtung der z-Achse.<br>
  <img src=joystick_3D_move.jpg> <img src=joystick_3D_rot.jpg>
  </li>
  <li>
  Beim 2D Joystick stehen nicht gen&uuml;gend Achsen f&uuml;r 
  eine 3D Eingabe zur Verf&uuml;gung. Deshalb muss zwischen 
  einer Interpretation der 2. Achse als z-Richtung (near/far 
  <img src=near_far.png> (nah-fern) Modus) und als y-Richtung 
  (up/down <img src=up_down.png> (oben-unten) Modus) &uuml;ber die 
  Icons umgeschaltet werden. <br>
  Bei Drehungen bedeutet der near/far <img src=near_far.png> (nah-fern) 
  Modus eine Drehung um die y-Achse, der up/down <img src=up_down.png> 
  (oben-unten) Modus eine Drehung um die z-Achse.<br>
  </li>
  <li>
  Der rocket <img src=rocket.png> (Racketen) Modus ben&ouml;tigt eigentlich
  4 Achsen. Damit er mit einem 3D joystick benutzt werden kann, wird
  hier ebenfalls die Drehungsinformation des near/far  
  <img src=near_far.png> (nah-fern) Modus und up/down <img src=up_down.png>
  (oben-unten) Modus benutzt.<br>
  Beim 2D Joystick steht der rocket <img src=rocket.png> (Racketen) Modus 
  nicht zur Verf&uuml;gung.
  </li>
  </ul><br>
  Es kommt vor, dass bei eine Joystick-Achse wenig brauchbar erscheint 
  (wie z.B. beim Micro$oft Sidewinder Pro der Schubregler). <br>
  <img src=joystick_sidewinder.jpg><br>
  Deshalb kann die Anzahl der Achsen beschr&auml;nkt werden. Um z.B. 
  den Micro$oft Sidewinder Pro als 3-achsigen Joystick zu behandeln,
  kann man die -axes -Option in der Kommandozeile benutzen.
<br>
<pre>
   white_dune -joystick /dev/input/js0 -axes=3
</pre>
<br>
  Gamepads sind h&auml;ufig mit wenig sinnvollen Achsen &uuml;berfrachtet.
  Das Logitech Wingman Cordless Gamepad meldet zum Beispiel beim Test mit dem
  jstest Programm 9 Achsen. Um die 6 sinnvollen Achsen
  (2 Daumensticks und das Eingabekreuz) sinnvoll einzusetzen, muss die
  Achsenzuordnung in der Kommandozeile ver&auml;ndert werden.
<br>
<pre>
   white_dune -joystick /dev/input/js0 -y=4 -z=-1 -xrot=6 -yrot=3 -zrot=5
</pre>
<br>
  Dabei bedeutet die Angabe "-z=-1" dass die z-Achse auf die Achse Nummer
  1 (also die 2. Achse, da die Z&auml;hlung bei 0 beginnt) gelegt wird,
  die Eingaberichtung aber umgedreht wird. 
 </li>
 <li>
  <b><a name="joystick_windows">M$Windows joystick Input:</a></b><br>
  Die Unterst&uuml;tzung f&uuml;r einen M$Windows joystick ist sehr
  &auml;hnlich zum Linux joystick.<br>
  Bei den speziellen Eigenschaften der
  mit M$Windows gelieferten joystick Treiber sollte man sich nicht
  dar&uuml;ber wundern, wenn z.B. der 2. Daumenstick eines Gamepads
  &uuml;berhaupt keine Werte liefern kann, oder Joystickachsen gemeldet 
  werden, aber nur Fehler zur&uuml;ckliefern.<br> 
  Ausserdem hat die Weisheit der Authoren der M$Windows joystick 
  Programmierschnittstelle dazu gef&uuml;hrt, dass ein Fehler 
  als Vollausschlag interpretiert werden muss (ein &auml;hnliches Problem
  f&uuml;hrte &uuml;brigens zur Explosion der ersten Ariane 5 Rakete...).<br>
  Deshalb sollte man unter M$Windows beim Testen mit 2 Achsen beginnen.
  F&uuml;r den ersten M$Windows joystick (Nummer 0) kann die Kommandozeile
  dann zum Beispiel so lauten:
<br>
<pre>
   white_dune.exe -joystick 0 -axes=2 -none=2 -allxyz=20,,,0.000001 -allrot=0.2,,,0.0000001
</pre>
 </li>
 <li>
   <b><a name="channelview">Fieldwerte ver&auml;ndern im ChannelView Window</a></b><br>
   Das ChannelView Window wird zur Anzeige oder Ver&auml;nderung von 
   Interpolator-Knoten
   benutzt. Bei einem Interpolator-Knoten sind Eingabewerten zwischen 0 und 1
   eine Reihe von Ausgabewerten zugeordnet.<br>
   Interpolatoren werden in VRML bei einfachen Animationen in der Form
<br>
<pre>
   ROUTE TimeSensorDEFNAME.fraction_changed TO ???InterpolatorDEFNAME.set_fraction
   ROUTE ???InterpolatorDEFNAME.value_changed TO ???DEFNAME.set_???
</pre>
<br>
   verwendet. Der Ausgang "fraction_changed" eines TimeSensor-Knoten 
   (der Werte zwischen 0 und 1 liefert) wird dabei in den "set_fraction" 
   Eingang eines Interpolator-Knoten geleitet. Der Interpolator-Knoten
   w&auml;hlt einen passenden Zwischenwert der Ausgabewerten, der
   in andere VRML-Knoten geleitet werden kann, so dass
   eine Animation ruckfrei abl&auml;ft. 
  <br>
   Im folgenden Beispiel:<br>
   <img src=interpolator.jpg><br>
   wird die Ausgabe eines PositionInterpolators mit den Eingabewerten
   0, 0.3, 1 und den Ausgabewerten x=1 y=0 z=3, x=1 y=2 z=3, x=3 y=3 z=0
   auf den set_translation Eingang eines Transform-Knotens (also eine
   Verschiebung) geleitet. Das bedeutet zum Beispiel, dass sich der 
   Transform-Knoten 
   (und der darin enthaltene K&ouml;rper) bei Zeitzykluswerten zwischen 
   0 und 0.3 von y=0 nach y=2 (also nach oben) bewegt.<br>
  <ul>
   <li>
   Einfach benutzbar sind alle SF-Interpolatoren:
   <ul>
    <li>
     ColorInterpolator:<br>
     Interpoliert zwischen Farben.<br>
     Farben finden sich z.B. bei Shape-&gt;Appearance-&gt;Material    
    </li>
    <li>
     PositionInterpolator:<br>
     Interpoliert zwischen Positionen.<br>
     Ziel kann z.B. Transform.set_translation sein.
    </li>
    <li>
     OrientationInterpolator:<br>
     Interpoliert zwischen Drehungen.<br>
     Ziel kann z.B. Transform.set_rotation sein.
    </li>
    <li>
     ScalarInterpolator:<br>
     Interpoliert zwischen einzelnen Zahlen.<br> 
     Einzelne Zahlen kommen oft in Knoten als EventIn vor.<br>
     Daher gibt es viele Verwendungsm&ouml;glichkeiten.
    </li>
   </ul>
   <li>
   Die folgenden MF-Interpolatoren sind nicht so einfach im ChannelView
   darstellbar, es w&uuml;rde eine grosse Menge an Daten geben, die das 
   Fenster einfach &uuml;berfluten w&uuml;rden.
   Deswegen werden nur Ver&auml;nderungen &uuml;ber die Zeit
   dargestellt. Wenn es keine Ver&auml;nderungen gibt, wird der erste
   Wert immer dargestellt<br>
   <img src=morphing_start.png><br>
   um es zu erlauben, dass zus&auml;tzliche Werte mit der Maus eingetragen
   werden k&ouml;nnen <br>
   <img src=morphing_last.png><br>
   (zum Beispiel um den ersten Zeitschritt als letzten Zeitschritt zu
   wiederholen)<br>.
   <img src=morphing_result.png><br>
   Es gibt eine obere Grenze der Zahl der dargestellten Werte.
   Unter "Limit keys in Channelview"
   im <em>Optionen -&gt; Allgemeine Einstellungen</em> dialog l&auml;sst sie 
   sich &auml;ndern. 
   Setzen Sie diese Grenze entsprechend der Geschwindigkeit Ihres Systems.
   <ul>
     <li>
      CoordinateInterpolator:<br>
      Interpoliert typischerweise zwischen den Positionen von Punkten eines 
      IndexFaceSet.<br>
      Das heisst das pro Punkt eines zusammengesetzten 
      K&ouml;rpers und Zeitschritt ein 3D Vektor Wert eingetragen werden muss.
      Animationen mit der Hilfe des CoordinateInterpolator nennt man
      normalerweise "Morphing".
     </li>
     <li>
     NormalInterpolator:<br>
     Interpoliert zwischen den Oberfl&auml;chennormalen eines
     aus Einzelflaechen zusammengesetzten K&ouml;rpers. <br>
     Das heisst das pro Punkt (oder Polygon) eines zusammengesetzten 
     K&ouml;rpers und Zeitschritt ein 3D Vektor Wert eingetragen werden muss.
     </li>
   </ul>
   </li>
  </ul> 
  Bestimmte einfache Interpolator-Animationen k&ouml;nnnen in 
  White_dune auch &uuml;ber Ver&auml;nderungen im 3D Preview Fenster erstellt werden.
  PositionInterpolator/Transform.set_translation
  und OrientationInterpolator/Transform.set_rotation basierte 
  Animationen k&ouml;nnen auch &uuml;ber die Aufnahme von 6D 
  Eingabeger&auml;ten eingegeben werden.<br><br>
  Damit mit den Werkzeugen <img src=recording.jpg>
  wie mit einem Kassettenrecorder Animationen aufgenommen und abgespielt
  werden k&ouml;nnen sind folgende Vorraussetzungen n&ouml;tig:
  <ul>
  <li>
  Es m&uuml;ssen ROUTEs in der Form
  <br>
<pre>
   ROUTE TimeSensor.fraction_changed TO ???Interpolator.set_fraction
   ROUTE ???Interpolator.value_changed TO ???.set_???
</pre>
  vorhanden sein.
  </li>
  <li>
  Im Timesensor-Knoten muss der Fieldwert "loop" auf "TRUE" gesetzt sein
  (die Animation wiederholt sich immer wieder). 
  </li>
  <br><img src=timesensor.jpg><br>
  <li>
  Der Fieldwert "starttime" des Timesensor-Knoten muss gr&ouml;sser oder 
  gleich dem Fieldwert "stoptime" des Timesensor-Knoten sein.
  </li>
  </ul><br>  
  Seit Version 0.27beta existiert in white_dune der Men&uuml;punkt
  <em>Aktion -&gt; Animation erstellen</em>, der genau diese Struktur 
  f&uuml;r den angew&auml;lten Knoten erzeugt, wenn dieser Knoten 
  EventIn/ExposedField-Felder hat, f&uuml;r 
  die ein Interpolator existiert. Im entsprechenden Dialog wird nachgefragt,
  <br><img src=animationdialog.jpg><br>
  ob ein neuer TimeSensor mit einer bestimmten Animationsdauer erzeugt werden
  soll bzw. ob ein bestehender TimeSensor wiederverwendet werden soll und
  welche Felder animiert werden sollen.
  <br>
  Wird beim Erstellen einer Animation nur das Aufnahmeicon gedr&uuml;ckt 
  <img src="recording_one.jpg">, 
  muss der Zeitcursor jeweils ver&auml;ndert
  werden und danach der entsprechende Wert (&uuml;ber Tastatur, Maus oder
  u. U. 6D Eingabeger&auml;t) ver&auml;ndert werden.<br>
  <img src="animation_onetime.png">
  <br><br>
  <img src="animation_onetime2.png">
  <br><br>
  Wird das Aufnahmeicon zusammen mit dem Abspielicon gedr&uuml;ckt 
  <img src="recording.jpg">, wird dauernd die Ver&auml;nderung der Werte
  (durch <a href="#mouse">Mauseingabe</a> oder u. U. 6D Eingabeger&auml;t) 
   aufgenommen. 
  <br>
  <img src="animation_recording.jpg">
  <br>
  Die Mauseingabe bei der Aufname erfordert eine ruhige Hand. 
  Es ist nicht ungew&ouml;hnlich, dass man nach der Aufnahme einige 
  aufgenommene Werte loeschen will.
  <br>
  <img src="delete_keys1.jpg">
  <br>
  Dazu kann man einen Zeitbereich im Channelview Fenster durch Klicken und 
  gleichzeitigem Verschieben der Maus anw&auml;hen und den Men&uuml;epunkt
  <em>Bearbeiten -&gt; Loeschen </em> bzw. das L&ouml;schen Icon benutzen.
  <br>
  <img src="delete_keys2.jpg">
  <br>
  Dadurch werden die entsprechenden Werte gel&ouml;scht.
  <br>
  <img src="delete_keys3.jpg">
  <br>
 </li>
 <li>
  <b><a name="colorcircle">Farbkreis</a></b> <small>(neu in Version 0.19beta)</small><br>
  F&uuml;r Farbwerte gibt es einen spezielles Eingabefenster, das an die
  Stelle des FieldView Fensters tritt, wenn darin ein Farbwert 
  ausgew&auml;hlt ist und das Colorcircle Icon gedr&uuml;ckt ist.<br>
  <img src=colorcircle1.png><br>
  Im Farbkreis kann man dann mit einem Mausklick eine bestimmte Farbe 
  und im Farbbalken daneben anschliessend eine dunklere Variante 
  ausw&auml;hlen.<br> 
e  <img src=colorcircle2.png><br>
  Der Aufbau des Farbkreises ist zur Zeit noch ziemlich langsam, wenn unter
  Unix/Linux kein True/Directcolor Display zur Verf&uuml;gung steht...<br>
  &Uuml;ber den "OK" Button kehrt man zum normalen FieldView Fenster
  zur&uuml;ck.
 </li>
 <li>
  <b><a name="scriptedit">Script Editor</a></b> <small>(neu in Version 0.22beta)</small><br>
  Es gibt zwei M&ouml;glichkeiten, den Scripteditor zu starten:<br>
  <img src=scriptedit_icon1.jpg><br>
  <ul>
    <li>
      Um einen neuen Scriptknoten zu erzeugen:<br>
      &Uuml;ber das "Script" icon (Men&uuml;punkt 
      <em>Erzeugen -&gt; Programmierung -&gt; Script</em>), 
    </li>
    <li>
      Um einen selektierten Scriptknoten zu ver&auml;ndern:<br>
      &Uuml;ber das "Object Edit" icon 
      (Men&uuml;punkt <em>Aktion -&gt; Objekt editieren</em>), 
    </li>
  </ul>
  Der ge&ouml;ffnete Scripteditor Dialog<br>
  <img src=scripteditor.jpg><br>
  erlaubt es, neue Felder/Events zum Scriptknoten hinzuzuf&uuml;gen (add),
  sie zu ver&auml;ndern (change) oder zu l&ouml;schen (delete).<br>
  Dr&uuml;cken Sie "OK" um die Arbeit am Scriptknoten zu beenden.
 </li>
 <li>
   <b><a name="urledit">URL Editor</a></b> <small>(neu in Version 0.22beta)</small><br>
  Das "url"-Feld (das den ECMAscript (javascript) Code eines Scriptknotens
  enthalten kann) kann in einem Texteditor ver&auml;ndert werden (edit).
  &Uuml;ber den Men&uuml;punkt 
  <em>Optionen -&gt; Text/Objekteditor Einstellungen</em>
  kann der Texteditor ausgew&auml;hlt werden.<br>
  Ist das "url"-Feld leer, wird ein Schema eines ECMAscripts erzeugt.<br>
  Um den Texteditor zu starten, muss ein Script Knoten angew&auml;hlt werden
  und das "URL editieren" icon (oder Menuepunkt 
  <em>Aktion -&gt; URL editieren</em> benutzt werden).<br>
  <img src=urledit.jpg><br>  
 </li>
 <li>
  <b><a name="fieldpipe">Field pipe</a></b><small>(neu in version 0.29beta)</small>
  Einer der m&auml;chtigsten M&ouml;glichkeiten um Feldwerte zu &auml;ndern
  ist die Field pipe. Damit ist es m&ouml;glich, Feldwerte mit einem 
  beliebigen externen Programm zu ver&auml;ndern.<br>
  Im Normalfall hat man dieses externe Programm noch nicht, die Field pipe ist
  also vor allem wichtig f&uuml;r einen Benutzer mit 
  Programmierf&auml;higkeiten.<br>
  Wenn ein SF-Field oder MF-Field im Fieldview Fenster angew&auml;hlt ist
  und <em>Aktion -&gt; field pipe</em> benutzt wird, dann wird im Fall eines
  SF-Field eine Zeile mit dem Fieldwert in eine Datei geschrieben. 
  Im Fall eines MF-Field werden genausoviele Zeilen wie die Zahl der 
  SF-Werte im MF-Field geschrieben.<br>
  Wird zum Beispiel das folgende TextureTransform.scale Field<br>
  <img src=sffieldpipeselect.jpg><br>  
  (ein SFVec2f Field) angew&auml;hlt, werden die Werte<br>
  <pre>
      1 1
  </pre> 
  in die Datei geschrieben.<br>
  Wird zum Beispiel das folgende Color.color Field <br>
  <img src=mffieldpipeselect.jpg><br>  
  (ein MFColor Field) angew&auml;hlt, werden die Werte<br>
  <pre>
      0 0.5 0
      0.5 0 0
      0 0 0.5
      0.5 0.5 0
      0.5 0 0.5
      0 0.5 0.5
  </pre> 
  in die Datei geschrieben.<br>
  Die Datei endet mit dem Zeichen f&uuml;r eine neue Zeile.<br>
  Wenn <em>Aktion -&gt; field pipe</em> benutzt wird, &ouml;ffnet sich ein
  Dialog, der nach eine Kommandozeile fragt. Diese Kommandozeile kann
  benutzt werden um ein kompiliertes Programm (zum Beispiel geschrieben
  Programmier Sprachen wie Ada, C, C++ oder Fortran) oder einen Interpreter 
  mit einem Programm in einer interpretierten Sprache (zum Beispiel geschrieben
  in einer Programmiersprache wie awk, perl or python) zu starten.<br>
  Die Kommandzeile wir intern gestart mit<br>
  <pre>
  Kommandozeile &lt; file &gt; outputfile
  </pre>
  was dazu f&uuml;hrt, dass jede Zeile der Datei file als Standardeingabe
  mit der Kommandozeile verarbeitet wird und das Ergebnis von der 
  Standartausgabe in der Datei outputfile geschrieben wird.<br>
  Wenn die geschriebene Datei outputfile die gleiche oder passende 
  Struktur wie die das verarbeitete field/die Eingabedatei hat (zum Beispiel
  fuer das SFVec3f Beispiel)<br>
  <pre>
      2 1
  </pre> 
  oder fuer das MFColor Beispiel<br>
  <pre>
      1 0.5 0
      0.5 1 0
      0 0 0.5
      0.5 0.5 0
      0.5 0 0.5
      0 0.5 0.5
  </pre>
  Dabei ist es wichtig, dass Farbwert Fliesskommazahlen im Bereich 0 bis
  1 sind. Der Inhalt der Ausgabedatei wird als neuer Field-Wert benutzt 
  und die zwischenzeitlich angelegten Eingabe/Ausgabe-Dateien werden 
  gel&ouml;scht.<br>
  Das allereinfachste Beispiel einer field pipe ist die Benutzung des
  "echo" Systemkommandos.<br>
  Die Kommandozeile<br>
  <pre>
       echo ir gend was
  </pre> 
  gibt einfach die Argumente<br>
  <pre>
       ir gend was
  </pre> 
  zur&uuml;ck. In einem einfachen Beispiel kann das genutzt werden, um
  die Werte "1 1" in "2 1" durch Benutzung von<br>
  <pre>
       echo 2 1
  </pre> 
  als die Kommandozeile im Field pipe dialog zu ver&auml;ndern.<br>
  F&uuml;r das folgende kompliziertere (aber auch sinnvollere) Beispiel
  wird die awk Programmiersprache benutzt. Awk ist eine interpretierte
  Sprache, die ziemlich &auml;hnlich wie die Programmiersprache C aussieht.
  Awk ist sehr praktisch f&uuml;r diesen Zweck, denn es zerhackt eine
  Eingabezeile automatisch in einzelne Werte und man kann komplette
  Programme in der Eingabezeile angeben.<br>
  Wird die folgende Kommandozeile<br> 
  <pre>
       awk '{print $1 + 0.1 , $2 + 0.2 , $3 + 0.35}'
  </pre> 
  als Field pipe f&uuml;r das folgende MFColor Feld<br>
  <pre>
      0 0.5 0
      0.5 0 0
      0 0 0.5
      0.5 0.5 0
      0.5 0 0.5
      0 0.5 0.5
  </pre> 
  benutzt, dann ist das Resultat<br>
  <pre>
      0.1 0.7 0.35
      0.6 0.2 0.35
      0.1 0.2 0.85
      0.6 0.7 0.35
      0.6 0.2 0.85
      0.1 0.7 0.85
  </pre>
  Wird dieses MFColor Feld f&uuml;r die Farben der Ecken eines 
  IndexedFaceSet W&uuml;rfels benutzt, dann werden alles Farben ein bisschen
  heller, ein bisschen gr&uuml;ner und blauer.<br>
  <img src=mffieldpiperesult.jpg><br>  
  Das gleiche Beispiel in der Sprache C erfordert, dass man ein Programm
  wie das folgende schreibt:<br>
<pre>
#include <stdio.h>

int main(int argc, char** argv)
{
   while(!feof(stdin)) {
      float c1, c2, c3;
      scanf("%f %f %f", &c1, &c2, &c3);
      printf("%g %g %g\n", c1 + 0.1, c2 + 0.2, c3 + 0.35); 
   }
   return 0;
}
</pre>
  Dieses Programm muss kompiliert werden, wenn zum Beispiel diese Datei 
  main.c genannt wird, dann braucht man ein Kommando wie<br>
  <pre>
      cc -o /tmp/a.exe main.c
  </pre> 
  auf der Kommandozeile) und man m&uuml;sste sowas wie
<br>
  <pre>
   /tmp/a.exe
  </pre> 
  im Field pipe Dialog benutzen.
 </li>
</ul>
</p> 
<h3><a name="simplescript">Vereinfachtes Skriptbau-Verfahren</a> <small>(neu in Version 0.22beta)</small></h3>
<p>
Bevor man den Scripteditor Dialog benutzen kann, muss man planen,
welche Datentypen und eventIn/eventOut Informationen die Knoten 
haben, die man anschliessen will. Dazu muss man 
<a href=http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1/part1/nodesRef.html>
die Knotenbeschreibung des 
VRML standards</a> (zum Beispiel &uuml;ber den Men&uuml;punkt
<em>Help -&gt; <i>Name des gerade selektierten Knoten</i></em> lesen
(oder ein entsprechendes Buch benutzen).<br>
Zum schnellen Ausprobieren kann es dagegen angenehmer sein, das
vereinfachte Skriptbau-Verfahren zu benutzen.<br>
Erzeugen Sie einen "leeren" Scriptknoten mit dem "Script" icon
(oder benutzen Sie den Men&uuml;punkt <em>Erzeugen -&gt; Programmierung -&gt; Script</em>).
<br>
Gem&auml;ss der 
<a href="http://dune.sourceforge.net/philosophy.html" target="new">
"Weg da!" Philosophie</a> des urspr&uuml;nglichen dune Projekts
dr&uuml;cken Sie einfach nur "OK" im Scripteditor Dialog (siehe oben).<br>
Jetzt wird das RouteView Fenster f&uuml;r die weitere Arbeit benutzt.
<br><br><img src=simple_scriptbuild1.jpg><br><br>
Scriptknoten haben ein spezielles "connect anything" ("verbinde alles")
eventOut.
Wenn man draufklickt, die Maustaste festh&auml;lt und die Maus verschiebt
("drag") wird eine weisse Route gezeichent
<br><br><img src=simple_scriptbuild2.jpg><br><br>
Wenn man die Maustaste gedr&uuml;ckt h&auml;lt, kann man sehen, dass man diese
Route (wie beim "normalen" Routing) an eventIns anderer Knoten anschliessen
kann,
<br><br><img src=simple_scriptbuild3.jpg><br><br>
dass aber (im Gegensatz zum "normal" Routing) die Farbe dieser Route
(also eigentlich der Datentyp) mit dem abgefragten eventIn wechselt.
<br><br><img src=simple_scriptbuild4.jpg><br><br>
Wenn man die Maustaste losl&auml;sst, wird die Route vollendet.
<br><br><img src=simple_scriptbuild5.jpg><br><br>
Entsprechend l&auml;sst sich der spezielle "connect anything" eventIn
des Scriptknotens benutzen
<br><br><img src=simple_scriptbuild6.jpg><br><br>
und mit dem eventOut eines anderen Knoten verbunden.
<br><br><img src=simple_scriptbuild7.jpg><br><br>
Jetzt m&uuml;ssen Sie noch das "url" Feld des Scriptknoten ver&auml;ndern.
Neben der Benutzung von <a href="#urledit">urledit</a> k&ouml;nnen sie
auch den Scriptknoten im SceneTree Fenster und das
"url" Feld im FieldView Fenster selektieren und dann
<br><br><img src=simple_scriptbuild8.jpg><br><br>
das "Object Edit" Icon dr&uuml;cken (oder benutzen den Men&uuml;punkt
<em>Aktion -&gt; Objekt editieren</em>). 
<br><br><img src=simple_scriptbuild9.jpg><br><br>
Nun wird "white_dune" versuchen einen externen Editor zu starten - 
eingefleischte UNIX Benutzer benutzen "xterm -e vi", das ist der
Default unter Linux/UNIX ("xedit" f&uuml;r MacOSX, "edit" f&uuml;r M$Windows)
wenn $WINEDITOR nicht beim ersten Programmlauf gesetzt war. 
Man kann die Editoreinstellung mit dem 
<em>Options -&gt; Texteditor Settings ...</em> Men&uuml;punkt &auml;ndern. <br>
Im Edit Fenster sehen Sie ein Schema des ben&ouml;tigten javascript Codes.
<br> Benutzen Sie <em>Options -&gt; ECMAscript settings</em> um einzustellen,
welche erweiterten Kommentare Sie im Schema haben wollen.
<br><br><img src=simple_scriptbuild10.jpg><br><br>
Benutzen Sie den Editor, um den Javascript code zu vervollst&auml;ndigen,
dann speichern und verlassen Sie den Editor
- im Fall des vi Editors benutzen Sie die Tastenkombination :wq 
</p> 
<h3><a name="nurbs">NURBS Modellierung</a> <small>
                          (zum Teil neu in Version 0.25beta)</small></h3>
<ul>
<li> <h4><a name="nurbsbasics">NURBS Grundlagen</a></h4>
<p>
In der Computergraphik bedeuten NURBS eine komplizierte Rechenvorschrift, 
mit deren Hilfe sich beliebige Fl&auml;chen und Linien/Kurven im Raum sehr 
kompakt darstellen lassen. <br>
Gerade f&uuml;r eine Netzwerkstandard wie VRML ist die Unterst&uuml;tzung 
von NURBS deshalb ein grosser Vorteil, da dabei nicht die Daten aller Eckpunkte 
eines Fl&auml;chennetzes &uuml;ber ein Netzwerk
&uuml;bertragen werden m&uuml;ssen, sondern nur eine relative kleiner
Anzahl von Zahlenwerten, mit denen die Eckpunkte berechnet werden 
k&ouml;nnen. <br>
Das lohnt sich, da in der Vergangenheit die Rechenleistung sehr viel 
st&auml;rker 
gestiegen ist als die Netzwerkgeschwindigkeit (zum Vergleich: der Rechner 
der 1969 das erste Zeichen ("L" von "LOGIN") &uuml;ber das Internetprotokoll 
&uuml;bertragen hat, war ein Honeywell DDP-516 minicomputer mit 12KB Speicher,
einer Taktfrequenz von 1.1 Mhz (wobei viele Takte f&uuml;r einen Computerbefehl
ben&ouml;tigt wurden) und dem Gewicht einer halben Tonne. Dieser
Rechner benutzte eine Netzwerkleitung mit 50000 baud. Das entspricht 
ungef&auml;hr der Rechenleistung eines einfachen Taschenrechners und der 
Netzwerkverbindung eines modernen Telefonmodems).
</p>
<p>
Piegl und Tiller schreiben in "The NURBS book", NURBS  w&auml;re ein Akronym 
f&uuml;r "Nobody Understands nonuniform Rational B-Splines" (niemand versteht 
nicht-gleichartige rationale B-Splines).<br>
Um mit einem NURBS Modeller zu arbeiten, braucht man die entsprechende
Mathematik nat&uuml;rlich nicht komplett zu verstehen. Allerdings kann
es f&uuml;r die Benutzung eines Programms wie white_dune (das Zugriff
auf alle Zahlenwerte der NURBS Fl&auml;chen/Kurven bietet) ein Einblick 
in die NURBS Grundlagen sinnvoll sein.
</p>
<p>
Erstellt man in white_dune eine NURBS-Kurve (mit 
<em>Erzeugen-&gt;VRML97 Amendment 1-&gt;NurbsCurve </em>/OK), verschiebt eines
der weissen K&auml;stchen und klappt alle Zahlenwerte im FieldView auf
<br><br><img src=nurbscurve.jpg><br><br>
so erkennt man, dass eine NURBS-Kurve im wesentlichen aus 4 Datenarten
besteht.
<ul>
<li>
Kontrollpunkte (controlPoint):<br>
Das sind die mit weissen K&auml;stchen markierten Punkte.
Verschiebt man ein K&auml;stchen, verschiebt sich ein Teil der Kurve
entsprechend.
<br><br><img src=controlpoint.jpg><br><br>
Kontrollpunkte sind die wichtigsten Elemente in white_dune, um NURBS
zu beeinflussen.
</li>
<li>
Gewichte (weight):<br>
Diese Werten bestimmen den Einfluss eines einzelnen Kontrollpunkts
auf die Kurve. Das Wort Gewicht erinnert an die Zeit vor dem Computerzeitalter,
als Graphiker Kurven mit Holzlatten (sogennanten Straklatten) und 
Bleigewichten gestaltet haben.
Bleibt der Kontrollpunkt auf der gleichen Stelle und
erh&ouml;ht man das entsprechende Gewicht
<br><br><img src=weight.jpg><br><br>
so wird die Kurve zum Kontrollpunkt hingezogen.<br>
Obwohl hier der Kontrollpunkt auf der gleichen Stelle liegt, hat sich 
sein Wert ver&auml;ndert. Das liegt daran, dass es zwei mathematisch
gleichwertige NURBS-Formeln gibt. White_dune benutzt die bei VRML 
&uuml;bliche Formel.
</li>
<li>
Knotenvektoren (knot): <br>
Knotenvektoren bestimmen unter anderem (<small>***</small>)
ob ein Kontrollpunkt von der
Kurve getroffen wird und ob eine Kante auftritt. Dazu m&uuml;ssen die
Werte an der entsprechenden Stelle "Grad" "(Ordnung -1)" mal wiederholt werden.
<br><br><img src=knot.jpg><br><br>
</li>
<li>
Ordnung (order): (auch Grad+1 (degree+1))<br>
Ueber diese Zahl wird festgelegt, wie weit der Einfluss eines 
Kontrollpunkts reicht.
<br><br><img src=order.jpg><br><br>
</li>
</ul>
Der verbliebene Wert "tessellation" hat keinen mathematischen, sondern
einen praktischen Hintergrund. Er legt fest, mit wievielen Punkten/Ecken
die Kurve dargestellt wird. 
<br><br><img src=tess3.jpg><br><br>
Das Ver&auml;ndern dieses Werts erlaubt eine einfache Anpassung an
die Graphikleistung eines Rechners.
<br><br><img src=tess11.jpg><br><br>
Per default (Wert "0") benutzt white_dune (das auch auf schwachen Rechnern 
laufen soll) bei Objekten mit sehr vielen Kontrollpunkten zu kleine Werte
f&uuml;r "tessellation".<br>
Ein Beispiel zeigt eine Nurbsfl&auml;che, die aus einer Kugel konvertiert
wurde und bei der einige Kontrollpunkte herausgezogen wurden.
<br><br><img src=tess0.jpg><br><br>
Nur mit einem hohen Wert f&uuml;r "tessellation" zeigt sich die 
"wahre" Form des Objekts.
<br><br><img src=tess181.jpg><br><br>
</p> 
</li>
<li> <h4><a name="nurbssymetric">X symetrisches Modellieren</a>
<small>(neu in Version 0.25beta)</small></h4>
<p>
Mit White_dune kann man NurbsSurface Knoten erstellen 
(z.B. mit <em>Erzeugen -&gt; VRML97 Amendment 1 -&gt; NurbsSurface -&gt; plain/OK</em>). 
Man kann die entstandene Fl&auml;che ver&auml;ndern, indem man die weissen
K&auml;stchen mit der Maus verschiebt.<br>
<br><br><img src=nurbsurface1.jpg><br><br>
Das ver&auml;ndert die Kontrolpunkte des NurbsSurface Knotens.
<br><br><img src=nurbsurface2.jpg><br><br>
Mit dieser Methode kann man white_dune am sinnvollsten bei der Herstellung von
Landschaften mit D&uuml;nen 
<br><br><img src=dunes.jpg><br><br>
einsetzen, die Methode ist aber nicht sehr sinnvoll f&uuml;r die meisten
anderen Aufgaben.
</p>
<p>
Viele Objekte erfordern symetrische Modellierung, die eine Seite
des Objekts soll so aussehen, wie die andere Seite.
In white_dune, kann das mit dem Men&uuml;punkt 
<em>Aktion -&gt; X symetric modelling</em> erreicht werden.
Wenn dieser Men&uuml;punkt aktiviert ist, wird jede Bewegung von den
Kontrollpunkten der einen Seite
<br><br><img src=symetric1.jpg><br><br>
auf die andere Seite &uuml;bertragen,
<br><br><img src=symetric2.jpg><br><br>
und es ist ziemlich einfach, eine ziemlich komplizierte symetrische
NurbsSurface Fl&auml;che zu erzeugen.
<br><br><img src=mantasurface.jpg><br><br>
Die X Richtung f&uuml;r die symetrische Modellierung
wurde wegen des
<a href="#6Dlocal">Local Input Mode</a> gew&auml;hlt.
</p>
<p>
Es ist m&ouml;glich, das Verschieben der Kontrollpunkte auf
eine Linie oder Fl&auml;che zu beschr&auml;nkten.<br>
Wird nur eine der Settings <em>Modus -> nur x</em>, <em>Modus -> nur y</em>
oder <em>Modus -> nur z</em> (bzw. ihre Icons mit jeweils einem Pfeil
in x (rot), y (gruen) oder z (blau)) benutzt, so lassen sich die Punkte
nur in dieser Richtung verschieben. Dabei wird allerdings nicht die 
Ausrichtung im gesamten Raum benutzt, sondern die Ausrichtung der 
entsprechenden Geometrie. Es &auml;ndert sich also einweder nur der
x, der y oder der z Wert des verschobenen Kontrollpunkts.<br>
Ist zum Beispiel nur <em>Modus -> nur y</em> bzw. das zweite der
Pfeilicons benutzt
<br><br><img src=yonly.jpg><br><br>
ist die Bewegung der Kontrollpunkte auf die y-Richtung beschr&auml;nkt.
Das ist auch die Richtung, auf die der gr&uuml;ne Pfeil des letzten 
f&uuml;r den entsprechenden K&ouml;rper zust&auml;ndigen Transform-Knotens 
zeigt.
<br><br><img src=yonly1.jpg>&nbsp;&nbsp;<img src=yonly2.jpg><br><br>
Werden zwei der Settings <em>Modus -> nur x</em>, <em>Modus -> nur y</em>
oder <em>Modus -> nur z</em> (bzw. ihre Icons mit jeweils einem Pfeil
f&uuml;r die x (rot), y (gruen) oder z (blau) Richtung) benutzt, so lassen 
sich die Punkte innerhalb der entsprechenden Ebene verschieben.<br>
Ist zum Beispiel nur <em>Modus -> nur x</em> und  <em>Modus -> nur z</em> 
bzw. das Erste und das Dritte der Pfeilicons benutzt
<br><br><img src=xzonly.jpg><br><br>
ist die Bewegung der Kontrollpunkte auf die xz-Ebene beschr&auml;nkt.<br>
Sind alle oder kein Icon benutzt, 
<br><br><img src=no_only.jpg>&nbsp;&nbsp;<img src=xyzonly.jpg><br><br>
dann besteht keine Beschr&auml;nkung, bei einem Verschieben mit der Maus
k&ouml;nnen sowohl die x, y und z Werte ge&auml;ndert werden.
</p>
<p>
Die Entscheidung ob der symetrische Teil eines NurbsSurface Knoten
mitbewegt wird, h&auml;ngt von der Entscheidung ab, ob die Zahlenwerte der 
Kontrollpunkte/Gewichte fast gleich ist.
Sie sind fast gleich, wenn der Abstand der absoluten Werte kleiner ist
als der Wert "Epsilon". Die Gr&ouml;&szlig;e von "Epsilon" kann &uuml;ber
den <em>Options -&gt; Preferences</em> Dialog eingestellt werden.<br>
Wenn symetrische Modellierung angew&auml;hlt ist, schnappen fast gleiche 
Punkte zusammen und werden zusammen bewegt.
Das kann benutzt werden, um offene NurbsSurface Fl&auml;chen zu schliessen,
aber mehrere Kontrollpunkte auf einem Platz erzeugen eine Ecke/Kante.
<br><br><img src=closedpeak.jpg><br><br>
Eine neu entstandene NurbsSurface Fl&auml;che existiert (in Einklang mit den
VRML Standards) per default nur einseitig (was wichtig ist, 
wenn die Oberfl&auml;che nicht geschlossen ist): das Feld "solid" hat den
Wert TRUE (wahr).
<br><br><img src=mantasurface1side.jpg><br><br>
In den meisten F&auml;llen ist das nicht sehr sinnvoll:
Um die Oberfl&auml;che doppelseitig zu machen, wird das Feld "solid" 
im FieldView Fenster auf FALSE (falsch) gesetzt.
<br><br><img src=mantasurface2side.jpg><br><br>
Oft ist auch eine zweiseitige Fl&auml;che nicht besonders n&uuml;tzlich, um 
einen volumin&ouml;sen K&ouml;rper zu bilden.
In diesem Fall ist es sinnvoll, einen Group- (Gruppen-)Knoten zu erzeugen,
<br><br><img src=nurbsgroup1.jpg><br><br>
den K&ouml;rper mit dem NurbsSurface Knoten in den Group-Knoten zu 
verschieben
<br><br><img src=nurbsgroup2.jpg><br><br>
und eine Kopie des K&ouml;rpers mit dem NurbsSurface Knoten
zus&auml;tzlich im Group-Knoten zu erzeugen.
Um eine Kopie anzulegen, zieht man das Shape Icon mit der Maus ins
Group icon und h&auml;lt dann die Kontroltaste ("Ctrl") gedr&uuml;ckt,
w&auml;hrend die Maustaste noch gegedr&uuml;ckt ist.
<br><br><img src=nurbsgroup3.jpg><br><br>
Weil in diesem Beispiel das Feld "solid" immer noch FALSE ist, kann man
ein weit verbreitetes Problem des realtime 3D demonstrieren, wenn die
Farbe eines K&ouml;rpers ver&auml;ndert wird.
<br><br><img src=zfight1.jpg><br><br>
<b>Zu d&uuml;nne W&auml;nde</b> (auch "z-fighting" genannt). <br>
Wenn sie einen Kontrollpunkt von einem NurbsSurface Knoten etwas
nach oben verschieben, um dem K&ouml;rper mehr Volumen zu geben,
kann die bilderzeugende Hardware und Software nicht mehr so leicht 
entscheiden, welche der beiden nah aneinanderliegende Fl&auml;chen
mit welcher Farbe n&auml;her zum Betrachter angeordnet ist.
<br><br><img src=zfight2.jpg><br><br>
Der Effekt ist im allgemeinen nicht vorhersehbar, er kann sich mit dem
Betrachtungswinkel, der benutzten Software (zum Beispiel VRML Browser
oder Graphiktreiber) und sogar mit der benutzten Graphikkarte &auml;ndern.
<br>
Um das Problem zu vermeiden, m&uuml;ssen beide "solid" Felder zu TRUE
zur&uuml;ckgeschalten werden und das "ccw" ("Counter Clock Wise", "gegen
den Uhrzeitersinn") Feld muss sich zwischen der oberen und unteren 
einseitigen Fl&auml;che unterscheiden.
<br><br><img src=zfightok.jpg><br><br>
Jetzt k&ouml;nnen die nichtbegrenzenden Kontrollpunkte der NurbsSurface 
Knoten verschoben werden, um dem K&ouml;rper mehr Volumen zu geben.
Jetzt sollte man die Shape Knoten mit den NurbsSurface Knoten von einem
Group Knoten in einen NurbsGroup Knoten.
<br><br><a href="../../logo/manta.wrl"><img src=nurbsgroup4.jpg></a><br><br>
Der NurbsGroup Knoten ist im VRML Standard verantwortlich daf&uuml;r, dass
die Begrenzungen der enthaltenen NurbsSurface Knoten ohne L&uuml;cken 
gezeichnet werden,
wenn die Kontrollpunkte der Begrenzungen der NurbsSurface Knoten identisch 
sind.<br>
In white_dune, erlaubt der NurbsGroup Knoten auch X symetrische Modellierung.
&Auml;nderungen eines Kontrollpunkts werden an alle NurbsSurface Knoten
weitergegeben,
die direkt (oder &uuml;ber einem Shape Knoten) einem NurbsGroup Knoten
enthalten sind.<br>
Das macht es m&ouml;glich, die Kontrollpunkte der Begrenzungen zu verschieben
und das ganze Objekt geschlossen zu halten.
<br><br><a href="../../logo/manta2.wrl"><img src=nurbsgroup5.jpg></a><br><br>
Am Ende sollte man nicht vergessen, den NurbGroup Knoten in einen
Transform Knoten zu verschieben, sonst kann das Objekt nicht 
verschoben/rotiert/skaliert usw. werden.
<br><br><img src=nurbsgroup6.jpg><br><br>
</p> 
</li>
<li> <h4><a name="nurbsconversion">NURBS Konversion</a>
<small>(neu in Version 0.25beta)</small></h4>
<p>
Wenn geschlossene NurbsSurface Knoten das Ziel sind, kann es n&uuml;tzlich
sein, schon mit einem geschlossenen K&ouml;rper zu beginnen.
White_dune erlaubt es (noch) nicht, einen IndexedFaceSet Knoten in einen
NurbsSurface Knoten zu konvertieren, aber es erlaubt es
die primitiven VRML Knoten
(box, cone, cylinder und sphere) in einen NurbsSurface Knoten zu 
konvertieren. White_dune erlaubt auch, einen NurbsCurve Knoten in
einen NurbsSurface Knoten (als Rotationsk&ouml;rper) zu konvertieren.<br>
Seit Version 0.27beta erlaubt es white_dune auch einen NurbsCurve Knoten 
in ein Superextrusion PROTO (siehe unten) zu konvertieren 
und erlaubt es, ein SuperEllipsoid PROTO oder SuperShape PROTO (siehe unten) 
in einen NurbsSurface Knoten zu konvertieren (durch Ann&auml;herung).
<ul>
<li>
Box<br>
Um einen Box (W&uuml;rfel) Knoten in einen NurbsSurface Knoten zu konvertieren,
muss ein Box Knoten im Szenengraph angew&auml;hlt werden
<br><br><img src=box.jpg><br><br>
und der Men&uuml;punkt <em>Konvertieren -&gt; convert to NurbsSurface</em> benutzt
werden.
<br><br><img src=box2nurbsdialog.jpg><br><br>
Wenn die "6 Plains" (6 Fl&auml;chen) Schaltfl&auml;che nicht gedr&uuml;ckt 
ist, 
wird ein einziger NurbsSurface Knoten erzeugt.
<br><br><img src=oneboxnurbs.jpg><br><br>
Wenn die "6 Plains" Schaltfl&auml;che gedr&uuml;ckt ist, werden 6 
Fl&auml;chen in einem NurbsGroup Knoten erzeugt.
<br><br><img src=sixboxnurbs.jpg><br><br>
</li>
<li>
Cone, Cylinder und Sphere<br>
Die Konversion dieser primitiven K&ouml;rper ist &auml;hnlich zu der 
Konversion eines Box Knotens, aber die Objekte werden intern mit einer
drehenden Linie (besser NurbsCurve) erzeugt.
Zum Beispiel beim Ergebnis einer Cylinder Konversion eines 
<br><br><img src=cylinder.jpg><br><br>
sieht man, dass es Kontrollpunkte gibt, die die Oberfl&auml;che 
ber&uuml;hren. Dies wird erreicht, indem Werte im Knotenvektor 
wiederholt werden. Als Konsequenz entsteht eine Kante, wenn der
Kontrollpunkt verschoben wird.
<br><br><img src=cylinderedge.jpg><br><br>
</li>
<li>
NurbsSurface aus NurbsCurve (&uuml;ber Drehung)<br>
Zur Zeit bietet dieses Methode die meisten Modellierungsm&ouml;glichkeiten. 
<br>
Zuerst muss ein NurbsCurve Knoten im 
Scenengraph angew&auml;hlt werden
<br><br><img src=nurbscurve_scenegraph.jpg><br><br>
Wenn ein NurbsCurve Knoten erzeugt wird (e.g. via <em>Erzeugen -&gt; 
VRML97 Amendment 1 -&gt; NurbsCurve </em>) muss in Betracht gezogen werden,
ob X symetrische Modellierung benutzt wird.<br>
Der NurbsCurve Erzeugungsdialog 
<br><br><img src=nurbscurvedialog.jpg><br><br>
bietet drei M&ouml;glichkeiten: Kurve entlang x, entlang y, entlang z Achse.
Nur wenn die Kurve um die y oder z Achse gedreht wird, ist 
X symetrische Modellierung m&ouml;glich. Deswegen ist es m&ouml;glicherweise
vorzuziehen, einen NurbsCurve Knoten entlang der y oder z Achse zu 
erzeugen.<br>
<br><br><img src=nurbscurverotationy.jpg><br><br>
Die Kurvenpunkte bilden die Seitenansicht des Drehk&ouml;rpers.
<br><br><img src=nurbscurverotation2.jpg><br><br>
Mit <em>Umwandeln -&gt; In NurbsSurface umwandeln</em> geht es weiter.
<br><br><img src=nurbsrotationdialog.jpg><br><br>
Um X symetrische Modellierung m&ouml;glich zu machen, sollte die
Schaltfl&auml;che  
"Kurve vor der Drehung plaetten"
gedr&uuml;ckt bleiben. Dabei werden alle Punkte in eine Ebene verschoben,
wobei der Abstand vom Nullpunkt erhalten bleibt.
<br><br><img src=nurbsrotationsurface.jpg><br><br>
Genau wie bei konvertierten Sphere, Cylinder und Cone Knoten, kann eine
Ecke entstehen, wenn die Kontrollpunkte verschoben werden.
<br><br><img src=nurbsrotationsurface2.jpg><br><br>
</li>
</ul>
</p>
<li> <h4><a name="elevatedegree">Grad Erh&ouml;hung</a>
<small>(new in Version 0.27beta)</small></h4>
<p>
Bei Modellieren mit NURBS Knoten kommt oft der Wunsch auf, neue 
Kontrollpunkte in einer Richtung einzuf&uuml;gen.
<br><br><img src=elevate_before.jpg><br><br>
Mit dem Men&uuml;punkt <em>Aktion -&gt; Elevate (U/V) Degree up </em> ist 
das m&ouml;glich, ohne die &auml;ssere Form zu ver&auml;ndern.
<br><br><img src=elevate_after.jpg><br><br>
Mit den neuen Kontrollpunkten lassen sich neue Ausbuchtungen verwirklichen.
<br><br><img src=elevate_target.jpg><br><br>
</p>
<li> <h4><a name="nurbsindexedfaceset">IndexedFaceSet Knoten erzeugen</a>
<small>(new in Version 0.25beta)</small></h4>
<p>
NURBS Fl&auml;chen werden oft als abgerundete Fl&auml;chen angesehen.
Aber neben mehrfachen Kontrollpunkten und Knotvektor Werten,
kann das Setzen der u/vTesselation Wert einfach dazu benutzt werden,
um Objekte aus Einzelfl&auml;chen (IndexedFaceSet Knoten) zu erzeugen.<br>

<br><br><img src=spherefaceset1.jpg><br><br>
Wenn zum Beispiel ein Sphere Knoten mit
<em>Umwandeln -&gt; In NurbsSurface umwandeln</em> konvertiert wird
<br><br><img src=spherefaceset2.jpg><br><br>
und kleine u/vTesselation Werte gesetzt werden, 
entstehen nur sehr wenige Fl&auml;chen.
<br><br><img src=spherefaceset3.jpg><br><br>
Mit <em>Umwandeln -&gt; In IndexedFaceSet umwandeln</em> kann das Resultat
in einem IndexedFaceSet Knoten verwandelt werden.
<br><br><img src=spherefaceset4.jpg><br><br>
Um die Normalenvektoren loszuwerden, die die Farben der Fl&auml;chen
verschwimmen lassen, muss der Normal Knoten vom IndexedFaceSet Knoten
entfernt werden.

<br><br><img src=spherefaceset5.jpg><br><br>
</p>
<p>
Die folgende Tabelle zeigt, welche grunds&auml;tzlichen K&ouml;rper 
mit dem Setzen von u/vTesselation in NurbsSurface Knoten 
aus konvertierten Primitiven erzeugt werden k&ouml;nnen.
<table>
<tr><td>K&ouml;per</td><td>Konvertiert von</td><td>uTesselation</td><td>vTesselation</td></tr>
<tr><td>Tetraeder</td><td>Cone</td><td>3</td><td>4</td></tr>
<tr><td>4-eckige Pyramide</td><td>Cone</td><td>4</td><td>4</td></tr>
<tr><td>Hexaeder</td><td>Sphere/Cylinder</td><td>3</td><td>2</td></tr>
<tr><td>Octaeder</td><td>Sphere/Cylinder</td><td>4</td><td>2</td></tr>
<tr><td>n-eckiges Prisma</td><td>Cylinder</td><td>n</td><td>&gt;1</td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
</p>
<p>
Die Implementierung von IndexedFaceSet in white_dune hat (noch) keine
Handles ("Anfasser", zum Beispiel weisse K&auml;stchen, die mit der
Maus verschoben werden k&ouml;nnen).
Wenn eine NurbsSurface Fl&auml;che
Plain (<em>Erzeugen -&gt; VRML97 Amendment 1 -&gt; NurbsSurface -&gt; Plain (Nurbs)</em>)
mit Grad 1 erzeugt wird
<br><br><img src=degree1faceset1.jpg><br><br>
und uTesselation auf den Wert uDimension-1 und vTesselation auf
den Wert vDimension-1 gesetzt wird,
sind die sichtbaren Ecken und die Position der Handles (des 
nurbsSurface Knotens) identisch, genauso, wie es bei einem 
IndexedFaceSet Knoten w&auml;re.
<br><br><img src=degree1faceset2.jpg><br><br>
Mit dem Men&uuml;punkt <em>Umwandeln -&gt; In IndexedFaceSet umwandeln</em> 
kann das Result in einen IndexedFaceSet Knoten verwandelt werden.
<br><br><img src=degree1faceset3.jpg><br><br>
Um die Normalenvektoren loszuwerden, die die Farben der Fl&auml;chen
verschwimmen lassen, muss der Normal Knoten vom IndexedFaceSet Knoten
entfernt werden.
<br><br><img src=degree1faceset4.jpg><br><br>
Ungl&uuml;cklicherweise ist die Konversion von einem IndexedFaceSet Knoten
zur&uuml;ck in einen NurbsSurface Knoten not nicht implementiert...
</p>
</li>
</ul>
<p>
<h3><a name="super">Superformula Modellierung</a> 
                                  <small>(neu in Version 0.27beta)</small></h3>
 <ul>
  <li>
   <h4><a name="superformula">Superformula Grundlagen</a></h4>

   White_dune unterst&uuml;tzt 3D-modelling, die auf der sogenannten
   "superformula" ("Superformel") basiert.
<br>
<pre>
        pow(pow(fabs(cos(m * angle / 4.0) / a), n2) + 
            pow(fabs(cos(m * angle / 4.0) / b), n3), -1.0 / n1)
</pre>
<br>
Diese Formel wurde vor einigen Jahren von einem Biologen gefunden und
kann benutzt werden, um n-symetrische Formen zu erzeugen, die Dingen aus der
Natur wie Blumen, Blaettern, Insektenk&ouml;rpern, Muscheln 
oder Seesternen &auml;hnlich sehen.
<br><br><img src=supershapes.jpg><br><br>
Diese <a href="supershapes.wrl" target="_blank">Formen</a>
wurden alle mit dem SuperShape PROTO erzeugt.
<br><br>
Superformula basierte Formen sind nicht von sich aus Teil von VRML97,
sondern sind &uuml;ber ein PROTO (selbst definierter VRML Knoten)
mit Scriptcode ("scripted PROTO") implementiert.<br>
Superformula basierte K&ouml;rper k&ouml;nnen entweder in einen
Extrusion Knoten oder in einen IndexedFaceSet Knoten umgewandelt werden. 
IndexedFaceSet basierte superformula K&ouml;rper k&ouml;nnen auch
einem NurbsSurface Knoten angen&auml;hert werden, um so einen Startpunkt
f&uuml;r weiteres NURBS-modelling zu haben.
 <ul>
  <li>
   <h4><a name="superextrusion">SuperExtrusion</a></h4>
   
   Das SuperExtrusion PROTO benutzt die Superformel um ein 2D Polygon
   in der X-Z-Fl&auml;che zu berechnen und formt daraus einen K&ouml;rper
   indem dieses Polygon in der Y-Richtung entlang einer Kurve wiederholt
   wird.
   Diese Kurve funktioniert entsprechend einer NurbsCurve und kann
   ver&auml;ndert werden, indem man die Kontrollpunkte bewegt.<br> 
   Dieser K&ouml;rper kann in eine Extrusion umgewandelt werden und 
   einige seiner Parameter funktionieren wie bei einer Extrusion.
   Anders als bei einer Extrusion werden die scale Parameter nicht
   pro spine Punkt angewandt sondern &uuml;ber den ganzen spine 
   verschmiert.
   <br><br><img src=superextrusion.png><br><br>
  </li>
  <li>
   <h4><a name="supershape">SuperShape</a></h4>
   
   Das SuperShape PROTO benutzt die Superformel um ein 2D Polygon
   in der X-Z-Fl&auml;che zu berechnen und formt einen K&ouml;rper
   indem die Superformel auch in der Y-Z-Fl&auml;che &auml;hnlich
   wie bei Kugelkoordinaten berechnet wird.<br> 
   <br><br><img src=supershape.png><br><br>
   Dieser K&ouml;rper kann in ein IndexedFaceSet umgewandelt werden
  </li>
  <li>
   <h4><a name="superellipsoid">SuperEllipsoid</a></h4>
   
   White_dune hat auch ein PROTO f&uuml;r ein Superellipsoid, 
   ein spezieller Fall des SuperShape. Es kann benutzt werden, um eine
   Kugel, 
   <br><br><img src=superellipsoid_sphere.jpg><br><br>
   eine Box, ein Zylinder, 
   <br><br><img src=superellipsoid_cylinder.jpg><br><br>
   ein Oktaeder und abgerundete Formen dieser K&uuml;rper    
   <br><br><img src=superellipsoid_box_smooth.jpg><br><br>
   <br><br><img src=superellipsoid_cylinder_smooth.jpg><br><br>
   mit nur 2 Parametern zu erzeugen.<br> 
   Wie das SuperShape PROTO hat das SuperEllpsoid PROTO ein Feld "border",
   um z.B. auch Halbkugeln modellieren zu k&ouml;nnen.
   <br><br><img src=superellipsoid_sphere_half.jpg><br><br>
   Dieser K&ouml;rper kann in ein IndexedFaceSet umgewandelt werden
  </li>
 </ul>
</p>
<h3><a name="coordinate">&Auml;ndern von Coordinate basierten Knoten</a><small> (neu in Version 0.29beta)</small></h3>
<p>
Seit Version 0.29beta k&ouml;nnen auch Coordinate basierte Knoten 
(wie IndexedFaceSet ("Mesh"), IndexedLineSet oder PointSet)
genauso im 3D Preview Fenster interaktiv ver&auml;ndert werden wie die 
Kontrollpunkte eines NURBS K&ouml;rpers.<br>
Bei Knoten mit sehr vielen Punkten, ist das nur sinnvoll um kleinere
Details zu ver&auml;ndern.
</p>
<h3><a name="flip">Umklappen/austauschen und Setze Drehpunkt Aktionen</a><small></h3>
<p>
Es gibt einige n&uuml;tzliche modelling Aktionen im <em>Aktion</em> Men&uuml;:
<ul>
 <li>
  <em>Umklappen (x/y/z)</em><br>
  Das Umklappen Kommando kann f&uuml;r ganze Szenengraph Zweige benutzt werden.
  Es &auml;ndert alle Transform und Shape (Unter-)Knoten von x zu -x,
  y zu -y oder z zu -z. Das ist n&uuml;tzlich um eine Zweig von Objekten
  nach einer Verdopplung zu spiegeln.
  Bei schwierigen Objekten wie Cone oder IndexedFaceSet wird versucht,
  das Ergebnis konsistent zu halten. Ein Cone (Kegel) kann nicht in
  der y-Richtung umgeklappt werden, deswegen wird er in diesem Fall
  vorher in einen NurbsSurface Knoten umgewandelt.
  F&uuml;r einen Oberfl&auml;chenknoten wie IndexedFaceSet, das Umklappen
  Kommando beachtet die normal und ccw Fields. Ein Coordinate Knoten
  in einem IndexedFaceSet unterst&uuml;tzt auch das <em>Umklappen</em>
  Kommando, aber dann muss man selber auf das normal und ccw Field aufpassen.
 </li>
 <li>
  <em>Austauschen (xy/yz/xz)</em><br>
  Das Austauschen Kommando kann auch f&uuml;r ganze Scenengraph Zweige benutzt
  werden.
  Zum Beispiel vertauscht das xy Kommando die x und y Wert von allen passenden
  Knoten.
 </li>
 <li>
  <em>Abflachen (x/y/z)</em><br>
  Dieses Kommando funktioniert nur f&uuml;r NURBS und Coordinate
  Knoten. Es setzt alle Punkte in der x, y oder z Richtung auf den 
  Durchschnittswert aller Punkte in dieser Richtung.
 </li>
 <li>
  <em>Abflachen nach Null (x/y/z)</em><br>
  Dieses Kommando funktioniert nur f&uuml;r NURBS und Coordinate
  Knoten. Es setzt alle Punkte in der x, y oder z Richtung auf Null.
 </li>
 <li>
  <em>Setze Drehpunkt zu (Mitte min/max x/y/z)</em><br>
  Dieses Kommando erfordert die Kombination<br>
  Transform -&gt; Shape -&gt; Geometrieknoten<br>
  wobei der Geometrieknoten (e.g. Box, Sphere, IndexedFaceSet etc.)
  angew&auml;hlt sein muss.
  Das Kommando setzt den Mittelpunkt (Drehpunkt) des Transform Knotens auf
  den Mittelpunkt oder die Grenzen des umschliessenden Quaders. Das ist
  n&uuml;tzlich, wenn man mit Modellierungwerkzeugen arbeitet, die VRML
  Objekte mit einem Drehpunkt exportieren, der weit weg vom Objekt liegt.
 </li>
</ul>
</p>
<h3><a name="array">Array Werkzeug</a><small>(new in Version 0.27beta)</small></h3>
<p>
White_dune erlaubt es Objekte zu vervielf&auml;lltigen. 
Im Unterschied zu &auml;hnlichen Funktionen in einigen 3D-Modellers 
(wie dem "Art of Illusion" Programm) werden dabei nicht N Kopien des
gleichen Objekts erzeugt. Es werden N VRML Transform Knoten (f&uuml;r
Verschiebung (translation), Drehung (rotation), Vergr&ouml;ssern/Verkleinern
(scale) und Mittelpunkt (scale) abh&auml;ngig vom Arraydialog) mit
einem VRML USE Konstrukt erzeugt. Ein USE Konstrukt ist ein kompakter
Weg um Dinge in VRML zu wiederholen. Es ist eine Art "Zeiger ohne
Unterschied", &auml;hnlich wie ein Hardlink zu einer UNIX Datei (wenn
Sie nur M$Windows kennen: eine cleverer Abart eines Shortcut zu einer
Datei). Ein ge-USE-ter Knoten &auml;ndert sich ebenfalls, wenn sich das 
Orginal ver&auml;ndert.
<br>
Um das Array Werkzeug zu benutzen, muss das Objekt ausgew&auml;hlt werden,
das vervielf&auml;lltigt werden soll.
<br><br><img src=array_start.png><br><br>
Danach wird der Men&uuml;punkt <em>Aktion -&gt; Vervielfaeltigen</em> benutzt. 
Im folgenden Array Dialog
<br><br><img src=array_dialog.png><br><br>
kann die Zahl der Objekte (Numbers Objects) und die Parameter f&uuml;r die
Transform Knoten eingetragen werden.
<br><br><img src=array_result.png><br><br>
Wenn das Orginal ge&auml;ndert wird, &auml;ndern sich alle ge-USE-ten
Knoten ebenfalls.
<br><br><img src=array_changed.png><br><br>
</p>
<h4><a name="upload"><em>Datei -&gt; Upload</em></a> </h4> <small>(new in Version 0.27beta)</small>
<p>
White_dune hat einen Befehl (Men&uuml;punkt <em>Datei -&gt; Upload</em>) 
um eine VRML Datei auf einen Internet Server heraufzuladen.<br>
Beim heraufladen einer Datei ins Internet wird man &uuml;blicherweise
nach einem Passwort gefragt. White_dune kann das Passwort so speichern,
dass es von den Auslagerungsdaten (swapspace) durch mlock/vlock Aufrufe
gesch&uuml;tzt ist.<br>
Auslagerungsdaten ist der Inhalt von Computerspeicher der auf Platte 
ausgelagert wird um Platz f&uuml;r andere laufende Programme zu machen.
Ein Eindringling kann die Auslagerungsdaten nach Passworten durchsuchen.<br>
Die &Uuml;bertragung eines Passworts von einer Anwendung (white_dune)
zu einer anderen Anwendung (dem Herauflade-Kommando) auf einem
sicheren Weg ist keine leichte Aufgabe, wenn man an Probleme wie
die Auslagerungsdaten denkt.<br>
Im upload settings dialog (<em>Options -&gt; Upload settings...</em>)
<br><br><img src=upload.png><br><br>
kann das upload Kommando zwei Parameter haben. Jeder parameter der
upload Kommandozeil wird mit Hilfe der Buchstaben "%s" gesetzt.
<ul>
<li>
Im Fall von nur einem "%s" wird dieser Parameter ersetzt mit dem
Pfad der VRML Datei, die aus den aktuellen Daten in white_dune
erzeugt wurde.<br>
Wenn kein Passwort benutzt wird, kann des  Herauflade-Kommando entweder
jedes Mal nach dem Passwort fragen oder es wird ein fortgeschrittener
Authentifizierungsalgorithmus wie z.B. ssh passphrase benutzt.
</li>
<li>
Im Fall von nur einem "%s" und wenn es ein Passwort gibt, wird diese
Passwort &uuml;ber standardin an das  Herauflade-Kommando geschickt.
Normalerweise ist der Inhalt von standartin/standardout nicht vom
den Auslagerungsdaten gesch&uuml;tzt, so dass es ein m&ouml;gliches
Sicherheitsrisiko gibt.
</li>
<li>
Im Fall von zwei "%s" wird das Password as Kommandozeilen Option benutzt.
Auf den meisten Operationsystemen, bedeutet das ein hohes Sicherheitsrisiko,
denn die Kommandozeilen kann von jedem anderen Benutzer auf dem gleichen
System gelesen werden.
</li>
</ul>
Die letzte Zeile im upload settings Dialog enth&auml;lt die M&ouml;glichkeit,
eine html-webpage nach dem Heraufladen aufzurufen. Um das zu nutzen,
m&uuml;ssen die entsprechenden HTML tags eingetippt werden, die dann
in ein HTML file eingetragen werden.<br>
Zum Beispiel ist im folgenden Dialog eingetragen, dass die Daten aus
white_dune in eine VRML Datei mit einem vorbestimmten Namen kopiert
wird und dann diese VRML Datei zusammen mit der Zeichenkette "hello"
im Webbrowser beim n&auml;chsten <em>Datei -&gt; Upload</em> Kommando 
dargestellt wird.
<br><br><img src=upload_copy.png><br><br>
Die Zeile mit den HTML tags kann "%s" einhalten, was dann durch
das Passwort ersetzt wird. Dadurch wird ein HTML file mit einem
Passwort erzeugt. Das ist ein sehr hohes Sicherheitsrisiko, benutzen
diese M&ouml;glichkeit nicht, wenn Sie nicht genau wissen, was Sie tun !
</p>
<small>*** 
Der Knotenvektoren ist der Vektor, &uuml;ber dem die NURBS-Kurve definiert ist. 
Ohne darauf n&auml;her einzugehen, soll nur kurz und beispielhaft sein 
Einflu&szlig; 
gezeigt werden. Betrachtet man den im Bild gezeigten Knotenvektor, so 
f&auml;llt auf, dass sich  die ersten sowie die letzten Werte des Knotenvektors 
wiederholen. Das hat zu Folge, dass die Kurve wirklich bis zum ersten (letzten) 
Kontrollpunkt geht, und die erste (letzte) Seite des Kontrollpolygons (Polygon, 
dass durch die Kontrollpunkte gebildet wird) als Tangente besitzt, wodurch man 
bequem und "kontrolliert" modellieren kann (Man kennt die Endpunkte des 
Splines). 
Vervielfacht man Werte des Knotenvektors in seinem Inneren, so erzeugt man 
einen 
Stetigkeitabfall in der Kurve. Tritt ein Knoten so oft auf, wievielten Grades 
die 
Kurve ist, so kann man, wie im Bild zu sehen, eine Ecke in der Kurve erzeugen.
</small>
</body>