"White_dune" was ist das ?

White_dune ist ein graphischer VRML97/X3DV Editor, ein simpler (NURBS) 3D Modeller und ein Animationwerkzeug in Entwicklung.
Es kann ein VRML97/X3DV file lesen, stellt dessen Szenengraph dar und erlaubt es dem Benutzer, den Szenengraph, die Fieldwerte und Routes zu verändern.
White_dune kann benutzt werden, um 3D-Modelle, Animationen und Interaktionen in VRML97/X3DV zu verbessern oder zu erstellen.
Als einziges 3D Modelling Werkzeug ist es verglichen mit der Konkurrenz noch etwas schwach. Es ist sinnvoll, noch zusätzlich einen statischen 3D Modeller mit VRML97/X3D Export (wie z.B. wings3D oder Art Of Illusion) einzusetzen.
Der Vorteil von white_dune gegenüber den meisten anderen 3D Modellern ist, dass das Beleuchtungsmodell und der innere Aufbau von white_dune auf den VRML97/X3DV Standards basiert. Dadurch lassen sich die Möglichkeiten von VRML97/X3DV bei einer Nachbearbeitung oder Erstellung mit white_dune besser nutzen.
Verglichen mit den allgemein einsetzbaren 3D Modellern (die meinstens nur Mesh (IndexedFaceSet) und Interpolatorknoten exportieren können) unterstützt white_dune alle VRML97 Knoten und alle Knoten des X3D Standards "X3D 3.3" (ISO/IEC 19775-1:2013), auch wenn nicht alle Knoten dargestellt werden.
white_dune ist ein open source Programm, das bedeutet dass jeder das Programm kopieren und verändern darf. Die offizielle Version ist unter https://wdune.ourproject.org verfügbar.

"White_dune" abgestürzt, bisherige Arbeit verloren ?

White_dune wird dauernd weiterentwickelt und läuft daher nicht immer so stabil, wie es sollte.

Wenn white_dune abgestürzt ist, ist die bisherige Arbeit verloren ?

Nein, nicht zwingend.

"white_dune" versucht noch, die VRML97/X3D 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ört hat (das passiert allerdings eher selten). Wenn die Datei erfolgreich geschrieben worden ist, schreibt white_dune unter Unix/Linux

   Internal Crash !
   Try to save Files
   attempt to write file to /home/someone/.dune_crash_NUMBER_NUMBER.wrl
   write sucessfull
auf die Standartfehlerausgabe des white_dune starteten Fensters und auf die Systemkonsole (z.B. das Fenster der "xconsole" Anwendung).
Die wichige Zeile ist dabei die Zeile "write successfull" ("erfolgreich geschrieben").
Unter M$Windows erscheint (ggf. nach Drücken von "ignorieren/ignore", falls man nach einer Debugger gefragt wird) eine entsprechende Messagebox

Wenn sie dann white_dune neu starten und das file Menü öffnen, sollten Sie den Dateinamen des .dune_crash Files sehen.

Klicken Sie darauf und speichern Sie in eine andere Datei.

Wenn der Fehler, der zum Absturz geführt hat, die interne Datenstruktur im Programm beschädigt hat, kann diese Methode versagen.
In diesem Fall lohnt es sich nach temporären Daten (".dune_*") im Verzeichnis der VRML-Datei zu suchen, die bei der Ausführung von Datei->Vorschau oder Datei->Textedit entstanden sind.
Diese Dateien werden bei einem normalen Programmende gelöscht, nicht aber bei einem Programmabsturz.
Wenn white_dune sehr oft abstürtzt, aber alle Daten erfolgreich gerettet werden konnten, kann es Sinn machen, diese überflüssigen Datein zu suchen und löschen, um verschwendeten Plattenplatz zurückzugewinnen.
Neben Dateien zur Vorschau und zum Editieren mit einem Texteditor speichert white_dune auch den Inhalt eines editierten Script-Knotens zur Verwendung in einem Texteditor in temporären Dateien.

"White_dune" mit deutschen Menüs starten

Um white_dune mit deutschen Menüs zu starten, muss die Kommandozeilenoption "-german" benutzt werden.
Zur Zeit sind 4 Kommandozeilen-Optionen für Sprachen verfügbar:

Ausserdem gibt es noch die -portuguese Option für Portugisisch, die gilt aber nur für die 4kids Menüs.
Da es unpraktisch ist, das dauernd in eine Kommandozeile einzutippen, gibt es einen zweiten Weg, um die Sprache auszuwählen. Unter Linux/UNIX wird das über die Umgebungsvariable LANG erledigt. Wenn die ersten beiden Zeichen dieser Umgebungsvariable "de" ist, werden deutsche Men&umml;s benutzt, sind sie "it", werden italienische Men&umml;s benutzt ("fr" fü französchische Men&umml;s).
Wenn man mit einer deutschen Umgebung arbeiten will, bei der $LANG entsprechend gesetzt ist, man aber trotzdem mit englischen Menüs arbeiten will, muss man die -english Kommandozeilenoption benutzt werden.
Das kann das über ein Shellskript (Linux/UNIX/MacOSX) oder Batchfile (M$Windows) gemacht werden.
Wenn Sie kein entsprechendes File (z.B. "germandune") finden, können Sie sie sich eines mit den Kommandozeilen: anlegen. Für MacOSX können Sie in der Datei white_dune.app/Contents/MacOS/dunestarter die Zeilen mit den Optionen für den Programmstart
   DUNEOPTIONS=" "
   export DUNEOPTIONS
um die -german Option ergänzen:
   DUNEOPTIONS="-german "
   export DUNEOPTIONS
Für andere exotische UNIX desktops finden sich entsprechende Optionen in den folgenden Dateien: Auf ähnlicher Weise ist es möglich, andere Kommandozeilenoptionen von white_dune zu benutzen. Die man page von white_dune (in englischer Sprache) zeigt andere Optionen.
Die wichtigsten Optionen sind: Die Menüs und Dialoge von white_dune können in andere Fremdsprachen übersetzt werden, ohne dass besondere Programmierfähigkeiten benötigt werden.
Wenn Sie sich dafür interessieren, die Menüs und Fehlermeldungen von white_dune in ein neue Fremdsprache zu übersetzen (dazu sind keine Programmierfähigkeiten notwendig), dann lesen Sie bitte das Schritt für Schritt Kochrezept in englischer Sprache in der Entwicklerdokumentation.

Was bedeuten Szenengraph, Fieldwerte und Routes usw. ?

White_dune (ohne -4kids oder -4catt option) ist ein Lowlevel Werkzeug zum Bearbeiten von VRML97 und X3DV Files. Dabei wird vorausgesetzt, dass dem Benutzer die grundlegende Struktur von VRML/X3D bekannt ist.
Natürlich kann white_dune dazu benutzt werden, um sich in VRML/X3D einzuarbeiten. Ein guter Startpunkt ist natürlich das "-4kids" Kommandozeilenargument, aber damit lassen sich nur 3D-Objekte erzeugen und animieren, die interessanteren VRML/X3D Features wie Interaktion und Scripting bleiben aussen vor.

Man findet einige typischen VRML/X3D Beispiele (die man in white_dune) laden kann hier, aber man muss sich darüber im Klaren sein, dass diese Beispiele keine Modelling- oder Animations-Features zeigen, sie zeigen hauptsächlich VRML97 Beispiele mit Interaktion und Scripting. Das sind Features die in white_dune (noch) nicht korrekt angezeigt werden können.
Die Beispiele dienen als Ausgangsbasis, um mit white_dune interaktive 3D-Welten zu erstellen, die dann später mit einen "richtigen" VRML/X3D Browser angezeigt werden können.
Das "Route"-Fenster und der Script-Code sind für einen Anfäger am interessantesten.

Ausführliche technische Informationen zu VRML97 findet man in der offiziellen ISO Spezifikation unter http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1. Für die Benutzung von White_dune ist vor allem die Node Referenz http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-IS-VRML97WithAmendment1/part1/nodesRef.html wichtig.
X3D ist der Nachfolger von VRML97. Trotz einigen minimalen technischen Unterschieden (die von white_dune automatisch abgehandelt werden) sind alle Befehle des VRML97 Standards von 1997 in X3D weiter vorhanden.
Für den "vergessenen" VRML97 Amendment 1 Standard von 2002 gilt dies nicht z.B. der CoordinateDeformer Knoten existiert nicht mehr in X3D. Die meisten weiter existierenden VRML97 Amendment 1 Befehle werden aber automatisch von white_dune abgehandelt, wenn eine VRML97-Datei als X3D(V)-Datei abgespeichert wird.

X3D compiler und Open Wonderland Unterstützung

White_dune kann die Daten des VRML97/X3DV Szenengraphen in den Programmiersprachen C, C++ oder java exportieren ("X3D-compiler").
Details dazu findet man in der Manpage von white_dune.
Für die Programmiersprachen C/C++ gibt es jeweils eine Bibleothek, mit deren Hilfe man 3D-Objekte und Animationen mit Hilfe von OpenGL rendern kann. Beispiele dazu finden sich im Verzeichnis docs/export_example_c/opengl_example des Sourcearchives. Die entsprechenden Beispiele für die Programmiersprache C++ finden sich im Verzeichnis docs/export_example_c++/oepngl_example.
Für die Programmiersprachen C/C++ gibt es jeweils eine Bibleothek, mit deren Hilfe man 3D-Objekte und Animationen mit Hilfe von OpenGL rendern kann. Beispiele dazu finden sich im Verzeichnis docs/export_example_c/opengl_example bzw. docs/export_example_c++/opengl_example des Sourcearchives.

Was "white_dune" nicht kann und was es kann

Die 5 Fenster von "white_dune"


Neben diversen Toolbars für Icons und Nachrichten besteht "white_dune" (ohne die -kids oder -4catt Startoptionen) im wesentlichen aus 5 Fenstern. Ausser dem "3D Preview" Fenster lassen sich die Fenster über den Menüpunkt "View" angepasst an den jeweiligen Arbeitsschritt ein- und ausschalten.

Überblick übers Menü

The main menu of white_dune is seperated into the following submenus:

Navigation

Um im 3D Preview Fenster navigieren zu können steht zur Verfügung:

zusätzlich steht ab der Version 0.16 eine SGI artige Navigation zur Verfügung. Bitte beachten Sie, dass es nicht selten ist, dass ein entsprechend konfigurierter Windowmanager diese Eingaben für seine eigenen Zwecke interpretieren könnte... Ist ein 6D Eingabegerät aktiv, kann bei angewähltem Scene-Icon im Scene Tree Fenster je nach der Auswahl der Transformicons durch das VRML File navigiert werden.
Das Scene-Icon wird ausgewählt, wenn ins Leere des 3D Preview Fensters geklickt wird.
Zusätzlich existiert je ein Icon das Navigation mit der Maus oder dem Eingabegerät erzwingt.

Verändern des Szenengraph

Einen neuen VRML node mit eine Mausklick auf das entsprechenden Icon hinzufügen ist der einfachste Weg, den Szenengraph zu ändern.
Um ein VRML Knoten Icon zu identifizieren, bewegen Sie den Mousezeiger über das Icon und warten Sie kurz. Ein beschreibender Text wird auf der Statusbar am unteren Ende des Fensters erscheinen.
White_dune versucht, entweder den neuen node am blau untermalten Selektionspunkt des Szenengraph

oder am root node des Scenengraph ("Scene" Icon) einzufügen.
White_dune graut alle node Icons aus, die nicht eingefügt werden können.


Die folgende Tabelle zeigt die Anforderung für die entsprechenden Knoten im VRML97 Standard:

So muss zum Beispiel ein Appearence Knoten selektiert sein, damit ein ImageTexture Knoten eingefügt werden kann, oder ein Shape Knoten selektiert sein, damit ein Appearence Knoten eingefügt werden kann.
Alle die entsprechenden Felder im VRML97 Standard sind vom Datentyp SFNode, deshalb kann nur ein Knoten eingefügt werden. Deshalb wird ein Icon auch dann ausgegräut, wenn schon ein entsprechender Knoten vorhanden ist.
Zum Beispiel können keine zwei ImageTexture Knoten zu einem Appearence Knoten hinzugefüt werden. Deswegen ist das ImageTexture Icon ebenfalls ausgegraut, wenn ein Appearence Knote selektiert wird, aber ein ImageTexture Knoten schon vorhanden ist.
Nach dem VRML97 Standard brauchen auch die Körper Knoten Box, Sphere, Cone, Cylinder, IndexedFaceSet, IndexedLineSet, PointSet, ElevationGrid, Extrusion und Text als Vorraussetzung einen Shapeknoten. Da bei der Benutzung dieser Shape.geometry Knoten die benötigte Struktur klar ist, wird beim Klicken auf die Icons und bei der Benutzung der Erzeugen -> Koerper -> Menüpunkte eine vollständige Shape-Struktur (einschliesslich default Appearance/Material Knoten und einem umschliessenden Transform Knoten) aufgebaut.
Ist bei der Erzeugung so eines Shape-Knotens kein Knoten angewä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).
Für die im VRML97 Amendment 1 Standard hinzugekommenen, aber inzwischen veralteten Knoten gilt zusätzlich: Die Erweiterungen und zusätzlichen Knoten des immersiven Cover VRML97 Browsers brauchen ebenfalls zusätzliche Regeln: Die Erweiterungen und zusätzlichen Knoten der kambi VRML game engine braucht auch eine zusätzliche Regel: White_dune hat selbst eine Scripted PROTO Erweiterung, die auch eine zusätzliche Regel braucht: Weil es sehr viel mehr X3D Knoten als VRML97 Knoten gibt, ist die Liste der benötigten Knoten bei X3D sehr viel länger als bei VRML97: Zusätzlich dazu gibt es noch die Regeln für die X3D Knoten der Rigid Body Physics Kompontente, die getrennt aufgelistet werden, da diese Regeln allein für eine sinnvolle Benutzung dieser Knoten nicht ausreichen: Diese Regeln reichen deshalb nicht aus, weil eine sinnvolle Anwendung den Aufbau einer Struktur erfordern, bei der CollideableShape und CollideableOffset Knoten im Wurzelknoten des Szenengraphen stehen und in verschiedenen Knoten ge-USE-d werden, die dann ihrerseits in weiterer Stellen ge-USE-d werden. Um die Erstellung dieser Struktur zu vereinfachen, gibt es eine entsprechende Operation f&umml;r Szenengraphzweige.

Die Kommandos Bearbeiten -> kopieren, Bearbeiten -> einfügen und Bearbeiten -> löschen arbeiten so wie die gleichen Kommandos in vielen Programmen.
Natürlich sind nur Änderungen des Szenengraphen möglich, die den oben vorgestellten "Knoten A braucht Knoten B"-Regeln entsprechen. Je nach selektiertem Knoten im Szenengraphen (dem Ziel einer Bearbeiten -> einfügen Aktion) wird also der Menüpunkt Bearbeiten -> einfügen ausgegraut oder nicht.
Es kann vorkommen, dass es bei einem unveränderten Szenengraphen nicht sofort möglich ist, einen kopierten Knoten einzufügen, weil ein Knoten fehlt, der zum Kopieren dieses Knotens gebraucht wird. Dieser fehlende Knoten muss dann zuerst neu erzeugt werden, bevor die Kopieraktion erfolgreich beendet werden kann.

Ein ungewöhnliches Kommando ist das Bearbeiten -> Kopiere Zweig bis zur Wurzel Kommando. Es kopiert alle Knoten entlang des Pfads bis zur Wurzel des aktuellen Szenengraph Zweigs in den Einfügen-Puffer.
Das kann sehr nützlich sein, um einen Szenengraphzweig zu duplizieren und aufzuspalten.

Ein anderer Weg, den Szenengraph zu verändern, ist Teile davon mit der Maus herumzuschieben.
White_dune zeigt das Icon eines Stopschildes, wenn der Zielknoten dies wegen der "fehlenden Knotenregel" nicht erlaubt.

Wenn der Zielknoten es erlaubt, benutzt white_dune den normalen Mauszeiger.

Ein Ziel ist nicht eindeutig, wenn der Ziel node mehrere SF/MFNode fields hat.

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 Optionen -> Allgemeine Einstellungen... Dialog anders sind), damit die Field Namen als Ziel benutzt werden können.

Genauso wie beim lokalen kopieren/verschieben im Explorerprogramm von M$Windows2000 und ähnlichen Filemanagern kann man das Verhalten beeinflussen, wenn man die Tastatur benutzt, nachdem man angefangen hat, den VRML Knoten herumzuschieben:

Die Benutzung von USE


Neben der oben gezeigten drag and drop Methode gibt es einen weiteren Weg um das USE Konstrukt zu benutzen. Der Knoten, der ge-USE-t werden soll braucht einen DEF Namen, der mit Bearbeiten -> DEF zugewiesen wird. Bearbeiten -> USE (falls möglich) erzeugt ein neues USE des letzten ge-DEF-ten Knotens an der Stelle des angewählten Knotens.
In white_dune (anders wie wenn man einen Texteditor für eine VRML97 Datei benutzt), kann man den ge-DEF-ten Knoten problemlos löschen. Der zuerst geschreibene ge-USE-te Knoten wird dann zum neuen ge-DEF-ten Knoten.
Die Benutzung von USE ist sinnvoll, um VRML Dateien klein zu halten (was bedeutet, dass die Dateien schneller im Internet ü:bertragen werden können), erhöht die Wartbarkeit und kann unter Umständen von einem geschickt programmierten VRML Browser dazu genutzt werden, dass Objekte schneller gezeichnet werden (zum Beispiel durch die Verwendung von glLists bei OpenGL rendering).
Zusätzlich Kommandos die USE benutzen sind das array Werkzeug und manche der folgenden "create" Szenegraph Operationen.

Szenengraph Operationen


Es gibt (noch) keinen Weg, um mehrere Knoten im Szenengraph zu verschieben. Als Workaround gibt es Operationen um den aktuellen Szenegraphzweig umzusortieren (Aktion -> bewege Geschwisterknoten -> nach oben/nach unten/zur ersten/letzten Position) und Operationen, die auf alle Knoten im Szenengraph Zweig wirken, der dem angewälten Knoten folgt (einschliesslich des angewälten Knotens).

Die verfügbaren Kommandos sind Sie unter dem Menupunkt Aktion -> Rest des Szenegraph-Zweigs erreichbar: Leider sind einige dieser Operationen (noch) sehr langsam.

Eingabe/Löschen von ROUTE's

In white_dune gibt es zwei verschiedene Einstellungen, die entscheiden, wie eine ROUTE eingegeben werden kann.

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) oder mit Route -> Zeige Knoten ganz oben im RouteView Fenster erscheinen läßt und auf die Kästchen für die Events klickt. Dabei wird der Name des Events angezeigt und es lässt sich eine Linie zum nächsten Icon/Event ziehen.

Es können (wie im VRML Standard verlangt) nur Events mit gleichen Datentypen (gleiche Farbe der Kästchen) verbunden werden.
Zum Löschen der ROUTEs kann die Linie einfach durchgestrichen werden.

Als Vorschlag für Anfänger sind einige Event-Kästchen mit einem kleinen roten Punkt markiert. Der rote Punkt zeigt wichtige/oft benutzte Events.
Natürlich hängt die Wichtigkeit/Benutzungshä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ästchen.

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üschten VRML Knoten im RouteView Fenster wiederzufinden.

Es gibt Befehle, um zum angewälten Knoten zu springen (mit Routes -> Kein Zoom/Sprung zur Auswahl)

oder die Ansicht des Routeview zu vergrössern (mit Routes -> Herauszoomen)

aber in diesem Fall empfiehlt sich der Einsatz des Inline VRML-Knotens. Damit ist es mö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.

Befehle, die automatisch ROUTEs erzeugen
Es gibt zwei Befehle, die automatisch neue ROUTEs erzeugen.

Fieldwerte verändern

Es gibt mehrere Möglichkeiten, Fieldwerte zu verändern:

Vereinfachtes Skriptbau-Verfahren

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 die Knotenbeschreibung des VRML standards (zum Beispiel über den Menüpunkt Hilfe -> Name des gerade selektierten Knoten lesen (oder ein entsprechendes Buch benutzen).
Zum schnellen Ausprobieren kann es dagegen angenehmer sein, das vereinfachte Skriptbau-Verfahren zu benutzen.
Erzeugen Sie einen "leeren" Scriptknoten mit dem "Script" icon (oder benutzen Sie den Menüpunkt Erzeugen -> Programmierung -> Script).
Gemäss der "Weg da!" Philosophie des ursprünglichen dune Projekts drücken Sie einfach nur "OK" im Scripteditor Dialog (siehe oben).
Jetzt wird das RouteView Fenster für die weitere Arbeit benutzt.



Scriptknoten haben ein spezielles "connect anything" ("verbinde alles") eventOut. Wenn man draufklickt, die Maustaste festhält und die Maus verschiebt ("drag") wird eine weisse Route gezeichent



Wenn man die Maustaste gedrückt hält, kann man sehen, dass man diese Route (wie beim "normalen" Routing) an eventIns anderer Knoten anschliessen kann,



dass aber (im Gegensatz zum "normal" Routing) die Farbe dieser Route (also eigentlich der Datentyp) mit dem abgefragten eventIn wechselt.



Wenn man die Maustaste loslässt, wird die Route vollendet.



Entsprechend lässt sich der spezielle "connect anything" eventIn des Scriptknotens benutzen



und mit dem eventOut eines anderen Knoten verbunden.



Jetzt müssen Sie noch das "url" Feld des Scriptknoten verändern. Neben der Benutzung von urledit können sie auch den Scriptknoten im SceneTree Fenster und das "url" Feld im FieldView Fenster selektieren und dann



das "Object Edit" Icon drücken (oder benutzen den Menüpunkt Aktion -> Objekt editieren).



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ür MacOSX, "edit" für M$Windows) wenn $WINEDITOR nicht beim ersten Programmlauf gesetzt war. Man kann die Editoreinstellung mit dem Options -> Texteditor Settings ... Menüpunkt ändern.
Im Edit Fenster sehen Sie ein Schema des benötigten javascript Codes.


Benutzen Sie den Editor, um den Javascript code zu vervollständigen, dann speichern und verlassen Sie den Editor - im Fall des vi Editors benutzen Sie die Tastenkombination :wq
Benutzen Sie Options -> ECMAscript settings um einzustellen, welche erweiterten Kommentare Sie im Schema haben wollen.
Per default werden sehr viele Kommentare in das Skript geschrieben. Das ist zwar sehr nützlich für Anfänger, weil dann sofort alle mit den benutzten Datentypen möglichen Befehle schon im Script bereitstehen. Allerdings ist es auch ziemlich unübersichtlich.
Benutzer mit etwas Programmiererfahrung tendieren dazu, die Einstellungen in Options -> ECMAscript settings so zu setzen, dass nur der fest verdrahte Kommentar über den jeweils benutzen Datentyp übrig bleibt.

X3DOM scripting

X3DOM, ein X3D browser im Webbrowser, unterstützt keine X3D Script-Knoten, sondern nur javascript Knoten. Trotzdem kann im X3DOM mode (initiert durch die "Starte das naechste Mal mit X3DOM Unterstuetzung" Option oder die Kommandozeilenoption "-x3dom") das vereinfachte Skriptbau-Verfahren angewendet werden.
Dabei geht man wie beim vereinfachte Skriptbau-Verfahren vor, nur dass ein neuer "x3domscript:"-Eintrag in der Script-URL entsteht.

Da X3DOM nur Skripting analog "directOutput" unterstützt, muss dabei statt der eventOut-Variablen ein Zugriff über den "DEF" name (bzw. "id") des Ziel-Knotens und des Ziel-Feldnamens angegeben werden.

Beim Preview/Export nach X3DOM werden dann alle nötigen Einträge für X3DOM in der X3D-Datei angepasst.

NURBS Modellierung

NURBS Trimming

In Version 0.99pl1050 wird der NurbsTrimmedSurface Knoten wirklich einsetzbar.
Die Defaults und das Verhalten von NurbsCurve2D sind darauf ausgelegt.
Wenn Sie NURBS Trimming ausprobieren wollen, steht dieses Beispiel zur Verfügung.
Die Abkürzung "ccw" beim NurbsCurve2D Dialog bedeutet übrigens, dass die erzeugte geschlossene Kurve entgegen dem Urzeigersinn (Counter Clock Wise) orientiert ist. Ist sie im Urzeigersinn orientiert, wird der Inhalt der Kurve ausgeschnitten, sonst der Rest abgeschnitten. Uebrigens muss diese Kurve immer geschlossen bleiben, sonst kann es zu einem Absturz in der Graphikbibleothel "libGLU" kommen 8-(
Wird die Kurve ueber Griffe in white_dune verändert, bleibt sie geschlossen.

Superformula Modellierung

Superformula Grundlagen

White_dune unterstützt 3D-modelling, die auf der sogenannten "superformula" ("Superformel") basiert.

        pow(pow(fabs(cos(m * angle / 4.0) / a), n2) + 
            pow(fabs(sin(m * angle / 4.0) / b), n3), -1.0 / n1)

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, Blättern, Insektenkörpern, Muscheln oder Seesternen ähnlich sehen.



Diese Formen wurden alle mit dem SuperShape PROTO erzeugt.

Superformula basierte Formen sind nicht von sich aus Teil von VRML97, sondern sind über ein PROTO (selbst definierter VRML Knoten) mit Scriptcode ("scripted PROTO") implementiert.
Superformula basierte Körper können entweder in einen Extrusion Knoten oder in einen IndexedFaceSet Knoten umgewandelt werden. IndexedFaceSet basierte superformula Körper können auch einem Nurbs(Patch)Surface Knoten angenähert werden, um so einen Startpunkt für weiteres NURBS-modelling zu haben.

Subdivide Modellierung

Subdivide Modellierung ist verfügbar via (IndexedFace)Set -> subdivide Kommando oder drücken von "s" wenn ein mesh basierter Knoten (z.B. IndexedFaceSet, Box oder NurbsSurface) ausgewäht ist. Subdivide benutzt den Catmull-Clark Algorithm um Objekte weicher zu machen.
Starten Sie mit einer ausgewähten Box mit passender Größe:



Benutzen Sie (IndexedFace)Set -> subdivide oder drücken Sie "s"



Benutzen Sie Auswahl -> Flächen und ziehen Sie die angeklickete Fläche heraus noch mit der linken Maustaste festgehalten.



Um das Objekt noch weicher zu machen, benutzen Sie Aktion -> subdivide oder drücken Sie "s"



Um die Flächen zu verstecken, können Sie creaseAngle von IndexedFaceSet setzen.



Seien Sie sich bewusst, dass es kein "eckiger" Kommando in white_dune gibt ausser den "tessellation" Feldern in Nurbs(Patch)Surface or superformula basierten Knoten.



Deswegen ist es nützlich, oft edit -> undo zu benutzen um ein subdivided objekt zu testen and zu modifizieren.
Leider funktioniert Subdivide nicht mit allen Flächen, sondern nur mit geschlossenen Objekten. Deswegen ist Subdivide bei Auswahl eines SuperExtrusion Knotens ausgegraut.
Analog zu Flächen, Linien können ausgewählt werden mit Auswahl -> Linien .



Ausgewählte Linien lines können mit der Maus verschoben werden.



IndexedFaceSet Extrusion

Wenn der angewälte X3D-Befehl ein IndexedFaceSet ist (oder zum IndexedFacedSet konvertiert wurde),steht ein spezielle Form der Extrusion zur Verfügung. Dabei kann eine oder mehrere Flächen eines IndexedFaceSet herausgezogen oder hineingedrückt werden.
Dazu muss Auswahl -> Flächen und Coordinate von IndexedFaceSet ausgewählt sein.



Mit der mittleren Maustaste lassen sich ein oder mehrere Flächen anwählen.



Nach (IndexedFace)Set -> Extrude Face lassen sich mit der linken Maustaste Flächen herausziehen. Ist das X Symetrie icon angewählt, werden auch aus der anderen Seite Flächen herausgezogen.



Genauso lassen sich Flächen in den Körper hineindrücken.



Das macht Sinn im Zusammenhang mit Subdivide Modellierung. Actions -> (IndexedFace)Set -> Extrude Face



(IndexedFace)Set -> Subdivide



(IndexedFace)Set -> Subdivide



Das Ganze mit angepasstem IndexedFaceSet.creaseAngle



Ändern von Coordinate basierten Knoten

Seit Version 0.29beta können auch Coordinate basierte Knoten (wie IndexedFaceSet ("Mesh"), IndexedLineSet oder PointSet) genauso im 3D Preview Fenster interaktiv verändert werden wie die Kontrollpunkte eines NURBS Körpers.
Bei Knoten mit sehr vielen Punkten, ist das (noch) nur sinnvoll um kleinere Details zu verändern.
Es ist auch möglich die Punkte zu skalieren und zu drehen (beachten sie dabei die "center"-Position) in dem man das Scale oder Rotation-Icon auswählt.

Umklappen/austauschen und Setze Drehpunkt Aktionen

Es gibt einige nützliche modelling Aktionen im Aktion Menü:

"Fenster" in Würfel schneiden (neu in Version 1.876)

In white_dune besteht die M&öglichkeit, aus einer Fläche eine kleinere Fläche auszuschneiden ("inset").
Bei einem Würfel konvertiert zu IndexedFaceSet besteht auch die Möglichkeit, mehrere "Fenster" auszuschneiden.
Dazu muss eine Fläche des Würfels angewählt werden.

Benutzen Sie (IndexedFace)Set -> Flaeche(n) einfuegen

Es erscheint ein Dialog, bei dem Sie x und y innerhalt gewisser Grenzen bestimmen können.
In der nächsten Darstellung sind alle Flächen dieser Seite angewählt.

In der nächsten Darstellung sind alle "Fenster" dieser Seite angewählt.

Benutzen Sie (IndexedFace)Set -> Flaechen abspalten , wählen Sie den 2. Shape

und benutzen Sie Bearbeiten -> loeschen um die Fenster auszuschneiden.

Konvexe Hülle(neu in Version 1.256)

Aktion -> Konvexe Huelle erzeugt ein bauchiges IndexedFaceSet aus Objekten in einem Szenegraph Zweig (es kann auch für einen ganzen Scenengraph benutzt werden, aber das ist oft nicht sinnvoll). Nur die Transform Knoten Daten, die Mesh-Punkte, Linien-Punkte und PointSet Knoten Punkte werden benutzt um ein neues IndexedFaceSet zu erzeugen.
Im folgenden Beispiel wird eine Kugel und ein PointSet mit 2 Punkten gezeigt:

Die Benutzung von Actions -> Convex hull resultiert in

Es werden 2 symetrische NurbsSurface und 2 symetrische NurbsCurve hinzugefügt

Die Benutzung von Actions -> Convex hull resultiert in

Vergessen Sie nicht, IndexedFaceSet.creaseAngle anzupassen:

Ein anderes Einsatzgebiet für konvexe Hülle ist das Verbinden von Objekten.
Dazu muss ein Objekt angewählt werden.

Danach werden mit der rechten Maustaste mehrere Eckpunkte des ersten Objekts ausgewählt.

Nach dem Loslassen der Maustaste:

Danach benutzt man Auswahl -> Sammle Eckpunkte für konvexe Huelle. Dann müssen Eckpunkte des zweiten Objekts angewählt weden.

Danach benutzt man Auswahl -> Sammle Eckpunkte für konvexe Huelle. Danach benutzt man Aktion -> Konvexe Huelle

Eine Verbindung zwischen den Objekten ist entstanden.
Der Szenengraph kann z.B. mit boolscher Modellierung (zusammenbauen) vereinfacht werden.

Eine andere Art der Verbindung zwischen Objekten bekommt man mit Aktion -> Extrusion Konvexe Huelle.

Flächen Reduzierer

Arbeitet man mit Subdivide Modellierung (oder einem 3D-Scanner), kann die Zahl der entstehenden Flächen explodieren. Als kleine Abhilfe steht ein Flächen Reduzierer zur Verfügung. Als Beispiel das Resultat einer konvexen Hülle Operation:

Wählt man IndexedFaceSet an, wird (IndexedFace)Set ->: Flaechen Reduzierer verfügbar.

Klickt man es an, wird in einem Dialog nach dem Prozentsatz der verbliebenen Flächen gefragt. Wird z.B. 5 Prozent angegeben, verbleiben 1/20 der Flächen.

Es ist zu beachten, dass der Flächen Reduzierer genau wie das konvexe Hülle Werkzeug keine symetrischen Ergebnisse liefern. Als einziger Ausweg hilft die symetrische Modellierung.

Symetrische Modellierung

Mit (IndexedFace)Set -> mache symetrisch kann man die eine (plus) oder andere (plus abgewählt) Seite eines IndexedFaceSet spiegeln.

Skin and bones Modellierung

"Skin and bones" bedeutet dass Sie eine Oberfläche als Haut (skin) und Gelenke/Knochen (bones) haben, um die Oberfläche zu manipulieren. Skin and bones Techniken in X3D sind verbunden mit dem HAnimHumanoid Befehl, weil die hauptsächliche Anwendung die menschliche Animation ist.
Aber menschliche Animation erfordert eine Menge Gelenke, deswegen wird eine Blume mit zwei Gelenken gezeigt.
Wenn Sie menschliche Animation ausprobieren wollen, können Sie ein 3D-Modell (hergestellt mit "makehuman") im human.x3d im docs/usage_docs Directory benutzen.
Eine Geh-Animation (erweitert mit der "Nancy"-Animation von Cindy Ballreich) ist verfügbar als human.x3dv im docs/usage_docs Directory. Diese Animation wurde an der Hüfte verändert, um die breitbeinige Position der Ausgabe von "makehuman" auszugleichen.
Zurück zur verbogenen Blume:
Zuerst starten wir mit einem IndexedFaceSet einer Blume (erzeugt mit einem SuperRevolver, konvertiert zu einem modifizierten Nurbs(Patch)Surface konvertiert zu IndexedFaceSet).
Natürlich funktioniert das Verfahren auch mit einem anderen IndexedFaceSet.

Als nächstes HAnimHumanoid Knoten mit Erzeugen -> X3D misc components -> H-Anim -> HAnimHumanoid und ziehen Sie den Shape Befehl in HAnimHumanoid.skin.

Bitte stören Sie sich nicht daran, dass die Blume aus dem preview 3D-Fenster verschwindet.
wählen sie den Coordinate Befehl an und benutzen Sie Auswahl -> Eckpunkte (oder besser: Auswahl -> HAnimJoint ohne weight).

Wenn Aktion ->X symetrisches Modelling angeklickt ist, klicken Sie auf das Icon.
Benutzen Sie die rechte Maus-Taste um eine Box um die Hälfte der Blume aufzuziehen.

Benutze Erzeugen -> X3D misc components -> H-Anim -> HAnimJoint.
Ein Dialog öffnet sich:

Klicken Sie OK.

Ein DEF Dialog öffnet sich. Klicken Sie OK.

Wählen Sie das HAnimHumanoid.skeleton Feld an. Benutzen Sie Bearbeiten -> USE.

Wählen Sie "Scene".

Wählen Sie den Coordinate Befehl an und benutzen Sie die rechte Maustaste um eine Box um den Rest der Blume aufzuziehen.


Ein Dialog öffnet sich:

Click to OK.
Ein DEF Dialog öffnet sich. Klicken Sie OK.

Wählen Sie das HAnim_Humanoid.skeleton.HAnimJoint1.children Feld an. Benutzen Sie Bearbeiten -> USE.

Die Blume und ihr Gelenk ist fertig. Benutzen Sie Modus -> Drehpunkt verschieben um den Drehpunkt des Gelenks zu verschieben.

Benutzen Sie Modus -> Drehen, dann benutzen Sie den Drehgriff um den oberen Teil der Blume zu drehen.


Um HAnimJoint.skinCoordWeight kleiner 1 zu setzen, wählen Sie den HAnimJoint aus (wählen Sie "Scene" um diese Auswahl zu vergessen), dann wählen Sie den Coordinate Knoten.

Benutzen Sie die rechte Maustaste um eine Box um die Eckpunkte aufzuziehen, deren HAnimJoint.skinCoordWeight sie setzen wollen.

Setzen sie den weight Wert im Dialog, das "node" und "parent" Dialog Element wurde gesetzt durch die vorherige HAnimJoint-Auswahl. Klicken Sie OK.

Die Blume ist fertig, aber HAnimHumanoid.skinCoord muss gesetzt werden.

Sie müssen HAnimHumanoid.skin.Shape.IndexedFaceSet.Coordinate anwählen und Bearbeiten -> DEF benutzen.

Klicken Sie OK.
Wählen Sie HAnimHumanoid.skinCoord an und benutzen Sie Bearbeiten -> USE.

Boolsche Modellierung

White_dune erlaubt die boolsche Modellierung von IndexedFaceSets.
Dabei werden eine Gruppe (Knoten Group) von 2 Meshes (graphische Objekte außer Text (und andere Flächen)) voneinander abgezogen, eine Schnittmenge gebildet oder zusammengebaut. Dabei entsteht ein neues IndexedFaceSet. Erlaubt sind nur geschlossene Objekte, die sich nicht selbst überschneiden dürfen.

Begonnen wird mit einer Box

Als nächstes muß "Scene" angewählt werden.

Dann wird eine Kugel hinzugefügt. Sie ist zwar nicht sichtbar, aber die Griffe sind noch sichtbar.

Die Kugel wird leicht vergrößert indem man an den Griffen zieht.

Als nächstes wird das erste Transform angewählt.

Danach wird Aktion -> Rest des Szenengraph Zweigs -> Verschieben in -> Group benutzt. Natürlich gibt es auch einfachere Wege um eine Gruppe mit zwei Meshes herzustellen.
Als nächstes wird die Group angewählt.

Danach wird (IndexedFace)Set -> Boolsche Operationen -> Schneiden angewendet.

Es entsteht ein IndexedFaceSet mit der Schnittmenge der beiden Objekte.
Danach wird "Scene" angewählt.

Als nächstes wird noch eine Kugel eingefügt...

... und vergrößert

Als nächstes wird das erste Transform angewählt.

Danach wird Aktion -> Rest des Szenengraph Zweigs -> Verschieben in -> Group benutzt.
Als nächstes wird die Group angewählt.

Danach wird (IndexedFace)Set -> Boolsche Operationen -> Abziehen angewendet. Dabei einsteht ein IndexedFaceSet.

Vertex Modifier(neu in Version 1.300)

Der Vertex Modifier kann eingesetzt werden, um Eckpunkte zu verändern.
Dazu muss NurbsSurface oder Coordinate angewählt werden.
Ein Beispiel ausgehend vom SuperEllipsoid Knoten:

Dieser Knoten muss in eine NurbsSurface umgewandelt werden mit Umwandeln -> In Nurbs(Patch)Surface umwandeln

Im Dialog muss eine hohe Zahl an Eckpunkten eingegeben werden, mit wenigen Eckpunkten ist der Vertex Modifier witzlos.

Danach ist der Nurbs(Patch)Surface Knoten angewählt.
Es muss das Vertex Modifier Icon () angeklickt werden.
Dabei muss X symetrisches Modellieren eingeschaltet sein.

Danach muss "jump" angeklickt werden, radius und amount auf 0.5 gestellt werden und das Objekt an der Position des Pfeils angeklickt werden.
Die genaue Drehung des Objekts ist hier wichtig.

Danach haben sich einige Eckpunkte am Rand des Objekts verschoben.
Jetzt klickt man auf "normal".

3 Slider werden angezeigt, die die Richtung des Verschiebens angeben.
Die Ausgangseinstellung bedeutet (0, -1, 0) also nach unten. Danach muss ungefähr die gleiche Stelle angeklickt werden.


Danach klickt man "OK", die Eckpunkte werden wieder selektiert und das Objekt kann weiter bearbeitet werden.

Array Werkzeug

White_dune erlaubt es Objekte zu vervielfältigen. Im Unterschied zu ä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ür Verschiebung (translation), Drehung (rotation), Vergrössern/Verkleinern (scale) und Mittelpunkt (scale) abhä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", ä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 ändert sich ebenfalls, wenn sich das Orginal verändert.
Um das Array Werkzeug zu benutzen, muss das Objekt ausgewählt werden, das vervielfälltigt werden soll.



Danach wird der Menüpunkt Aktion -> Vervielfaeltigen benutzt. Im folgenden Array Dialog



kann die Zahl der Objekte (Numbers Objects) und die Parameter für die Transform Knoten eingetragen werden.



Wenn das Orginal geändert wird, ändern sich alle ge-USE-ten Knoten ebenfalls.



Reparatur-Kommandos im "Aktion" Menü

Die folgenden Kommandos sind nützlich, wenn man mit VRML/X3D Dateien arbeitet, die aus anderen Werkzeugen stammen. Sie dienen zur Korrektur von einigen kleineren Fehlern oder Problemen.

Weitere Kommandos im "Aktion" Menü

PROTO Erstellung/Veränderung

Um ein PROTO zu erstellen, muss zuerst ein Szenengraphzweig erstellt werden, deren Knoten den Grossteil des PROTOs ausmachen.
In diesem Beispiel sind ein Shape/Box, ein Shape/Sphere und ein Viewpoint Knoten in diesem Szenengraphzweig.



Um ein PROTO mit diesen Knoten zu erstellen, muss Actions->Rest of scenegraph branch->Move to->new PROTO angeklickt werden.




Es folgt ein Dialog, der nach dem Namen des PROTOs fragt, hier wählt man "DOME" (Kuppelgebäude)



Als nächstes folgt ein Dialog, der die Argumente des PROTOs bestimmt. An diesen Dialog kommt man später wieder mit Selektieren des PROTOs und Edit -> Object edit heran. Als field Argument wählt man SFColor color und drückt "Add".




Danach drückt man "ok" um den Dialog abzuschliessen.




Als nächstes öffnet sich das RouteView/IS-Fenster, dabei ist das PROTO "DOME" selektiert.



Es is jetzt möglich, die Knoten des PROTOs in den Szenengraph zu verschieben oder neue Knoten hinzuzufügen. In diesem Fall wird der Viewpoint Knoten aus dem PROTO in die normale Szene verschoben.
Als nächstes benutzt man Create -> PROTO usage -> DOME um den DOME im Szenengraph darzustellen.



Als nächstes selektiert man den einen Material-Knoten im PROTO und benutzt Routes/IS -> Show node on top .



Dananch verschiebt man Material-Knoten und PROTO im Route/IS view um color und diffuseColor zu verbinden.



Als nächstes selektiert man den anderen Material-Knoten im PROTO und benutzt Routes/IS -> Show node on top .



Dananch verschiebt man den anderen Material-Knoten und PROTO im Route/IS view um color und diffuseColor zu verbinden.



Danach lässt sich "color" im DOME-Knoten verändern und ein weiteres Transform und DOME Paar einfügen.



VrmlCut scripted Proto

In VRML/X3D ist es erstaunlich schwierig eine Folge von Animationen zu erzeugen, die man üblicherweise "Film" nennt. Passend zur Echtzeit 3D Natur von VRML/X3D können Animationen interaktiv und unabhändig voneinander gestartet werden, deswegen ist es schwierig, eine allumfallende timeline (wie beim cutten eines Films) zu erzeugen.
Ein Ansatz, um das Problem in white_dune zu erleichtern ist die Benutzung des scripted PROTO Knoten VrmlCut. Dieser Knoten hat ein Field "scenes", in dem einzelne VRML/X3D Animationsdaten in einem anderen scripted PROTO Knoten namens VrmlScene abgelegt werden kann. Der Inhalt so eines VrmlScene Knoten kann man als Inhalt einer einzelnen Scene in einem Film ansehen. Der VrmlCut Knoten schaltet von einer VrmlScene zu der nächsten, versucht zur ersten Kamera(Viewpoint) zu springen und alle Animationen in der aktuellen VrmlScne zu starten.
Genau wie die SuperShape, SuperEllipsoid, usw. Knoten ist der VrmlCut Knoten ein eigentlicher VRML Knoten. Es ist ein PROTO, ein Verbund von VRML Knoten, er besteht aus einem Switch Knoten, einem Script Knoten und einem TimeSensor.
Genau wie ein Script Konten hat er einen Veränderlichen Satz von fields/events. Weil mehrere VrmlCut Knoten mehrere verschiedene Sätze von fields/events hätten, can man nur eine Proto Definition von VrmlCut und deshalb nur ein VrmlCut Knoten pro VRML-file haben.
Der VrmlCut Knoten schaltet die Abfolge von VrmlScene Knoten (ein Group artiger Knoten mit einem Script Knoten für routing) angetrieben von TimeSenor und Script.
Alle Informationen zwischen VrmlCut, VrmlScene, TimeSensoren (für Animationen) und Viewpoints (Kameras) werden über ROUTE Verbindungen übertragen. Das macht das Konzept flexibel (zum Beispiel können die ROUTE sourcen benutzt werden um andere Knoten wie Sound oder Fog zu versorgen), aber die Erzeugung von vielen Routes bedeutet viel Arbeit.
Um die Arbeit zu reduzieren, kann die folgende Methode benutzt werden:

Am Schluss kann man mit dem "play" icon oder über "Datei -> Vorschau the Kette von Animationen starten.
Mit den sceneNumber, numberPreviousScenes und numberNextScenes Fields des VrmlCut Knotens kann ein reduzierter Bereich der Animationen angeschaut werden. Das ist sinnvoll, um die Längen der Scenen im sceneLengths field des VrmlCut Knoten zu optimieren.

Benutzung des X_ITE X3D browsers

X_ITE X3D ist ein im Webbrowser laufender X3D browser, der (anders als X3DOM) den X3D Script Knoten versteht.
Moderne Webbrowser Sandbox Probleme machen es unmöglich, den X_ITE X3D browser für die Vorschau von X3D Dateien zu benutzen.
Stattdessen müssen Sie Datei -> Exportiere als... -> Exportiere als X_ITE html/X3DV... benutzen, um eine .html Datei und eine .x3dv Datei zu exportieren. Dann muss die .html Datei und die .x3dv Datei auf einen webserver ins gleiche Verzeichnis hochgeladen werden, damit die .html Datei in den Webbrowser geladen werden kann.

Film-Erzeugung

Um mit white->dune einen .mp4 oder .webm Film zu erzeugen, steht unter UNIX/Linux das scipt run_dune_and_aqsis.sh bzw. run_dune_povray.sh zur Verfügung.
Dabei werden mit white_dune .RIB Dateien oder eine povray Datei erzeugt. Diese Dateien werden mit aqsis oder povray auf allen Prozessoren in Bild-Dateien umgewandelt, die bei installiertem mencoder in ein .mp4 File (oder bei installierten yuv2png und installiertem vpxenc in ein .webm File) umgwandelt wird.

Datei -> Upload

White_dune hat einen Befehl (Menüpunkt Datei -> Upload) um eine VRML Datei auf einen Internet Server heraufzuladen.
Beim heraufladen einer Datei ins Internet wird man üblicherweise nach einem Passwort gefragt. White_dune kann das Passwort so speichern, dass es von den Auslagerungsdaten (swapspace) durch mlock/vlock Aufrufe geschützt ist.
Auslagerungsdaten ist der Inhalt von Computerspeicher der auf Platte ausgelagert wird um Platz für andere laufende Programme zu machen. Ein Eindringling kann die Auslagerungsdaten nach Passworten durchsuchen.
Die Ü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.
Im upload settings dialog (Options -> Upload settings...)



kann das upload Kommando zwei Parameter haben. Jeder parameter der upload Kommandozeil wird mit Hilfe der Buchstaben "%s" gesetzt.

Die letzte Zeile im upload settings Dialog enthält die Möglichkeit, eine html-webpage nach dem Heraufladen aufzurufen. Um das zu nutzen, müssen die entsprechenden HTML tags eingetippt werden, die dann in ein HTML file eingetragen werden.
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ächsten Datei -> Upload Kommando dargestellt wird.



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öglichkeit nicht, wenn Sie nicht genau wissen, was Sie tun !

*** Der Knotenvektoren ist der Vektor, über dem die NURBS-Kurve definiert ist. Ohne darauf näher einzugehen, soll nur kurz und beispielhaft sein Einfluß gezeigt werden. Betrachtet man den im Bild gezeigten Knotenvektor, so fä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.