Superscape hat zum Erstellen von 3D Web Seiten verschiedene Entwicklungs-Tools entwickelt. Eines davon ist der 3D Webmaster, welchen man als semi-professionelles Tool bezeichnen kann. Dieses Tool wird in dieser Arbeit vorgestellt. Für professionelle Entwickler wird von Superscape das Tool VRT 5.60 empfohlen, welches gegenüber 3D Webmaster noch einige zusätzliche Features besitzt. Alle Entwicklungs-Tools von Superscape unterstützen ein von Superscape entwickeltes 3D Format namens VRT bzw. SVR. Bei SVR handelt es sich um ein komprimiertes VRT Format. Bei VRT 5.60 hat man die Möglichkeit, zu wählen, in welchem Format eine selbst entwickelte 3D Welt abgespeichert werden soll. Soll eine Welt über Internet zugänglich gemacht werden, so empfiehlt es sich hier, das komprimierte Format zu wählen, um lange Ladezeiten zu vermeiden. 3D Webmaster speichert grundsätzlich im SVR Format ab.
Um sich 3D Web Seiten im Superscape Format ansehen zu können, benötigt man einen entsprechenden Browser. Superscape entwickelte dafür einen eigenen Browser - genannt VISCAPE - als Plugin für Netscape Navigator und Microsoft Internet Explorer. Dieser ist - wie auch 3D Webmaste Evaluation Version - im Internet unter www.superscape.com als Download erhältlich. Unter VISCAPE kann man sich mit Hilfe der Move Bar frei in 3D Welten bewegen. Man kann nach oben und unten schauen bzw. sich selbst - also seinen Viewpoint (siehe weiter unten) - hoch und runter bewegen. Wenn man sich einmal verirrt haben sollte, so kann man sich mit dem Reset-Button wieder in seine Ausgangsposition versetzen. dabei wird auch die ganze Welt in ihren Initialzustand zurückversetzt.
Desweiteren existieren zwei neuere 3D Formate, Java 3D und Microsoft Chrome. Alle diese 3D Formate haben ihre Vor- und Nachteile. Die weitere Entwicklung von interaktiven 3D Web Formaten ist bei weitem nicht klar. Performence, Zuverlässigkeit, Standards und applikationsspezifische Eignung spielen eine wichtige Rolle bei der Weiterentwicklung dieser Formate.
Mit mehr als 11 Jahren Erfahrung in Echtzeit 3D Software bemüht sich Superscape darum, die beiden verbreitesten Formate - VRML und SVR - zu unterstützen. Superscapes 3D Browser Viscape unterstützt sowohl VRML als auch SVR. Viscape ist damit der erste Browser, der dies kann. Allerdings lässt dessen Performance bei VRML Welten viele Wünsche offen. Es besteht die Möglichkeit, bei der Arbeit mit Superscape Entwicklungs-Tools 3D Welten im VRML Format zu ex- und importieren. Allerdings gehen dabei bestimmte Informationen, wie z.B. bestimmte Objekteigenschaften, wegen der Unterschiede zwischen beiden Formate verloren.
In Zukunft wird Superscape auch die neueren Formate, wie Java 3D und Microsoft Chrome, unterstützen, um dem Kunden bei der Auswahl des geeigneten Formats freie Hand zu lassen.
3D Webmaster verwendet ein 3 dimensionales orthogonales Koordinatensystem. Das heisst, die Position jedes Objekts etc. wird mit einem Tripel (x,y,z) angegeben. X definiert die horizontale Position eines Objekts mit dem Ursprung links, Y die vertikale Position mit dem Ursprung unten und Z die Position in die Welt hinein mit dem Ursprung vorne.
Ein Punkt ist eine Position in der 3D Welt, dei durch das Koordinatensystem definiert wird. Shapes und Objekte werden durch mindestens zwei oder mehr Punkte definiert. Jeder Punkt hat eine x, y, und z-Koordinate.
Facets sind die sichtbaren Teile eines Objekts. Ein Facet wird durch zwei oder mehrere zusammenhängende Punkte definiert. Facets sind flach, d.h. zweidimensional, und nur zu einer Seite hin sichtbar.
Als Objekt bezeichnet man alles in einer virtuellen Welt, was Platz beansprucht und Attribute wie Farbe, Texturen, Sound und Eigenschaften besitzt. Im World Editor erstellt man seine virtuelle Welt, indem man Objekte in diese einfügt. Diese Objekte können entweder schon vorgefertigt und als Clipart im Warehouse abgespeichert sein oder man erstellt eigene Objekte mit dem Shape Editor. Diese Objekte nennt man dann Shapes. Ein Objekt kann auch eine Gruppe sein.
Shapes werden im Shape Editor erzeugt. Im Shape Editor kann man Punkte und Facets definieren. Diese sind die elementaren Komponenten eines Shapes.
Gruppen sind eine spezielle Form eines Shapes. Sie enthalten selbst wieder mehrere individuelle Shapes. Ein Stuhl Objekt enthält z.B. vier Beine, einen Sitz und eine Lehne. Gruppen werden benutzt um komplexere Shapes aus mehreren einfachen Shapes zusammenzusetzen.
3D Webmaster ermöglicht es, jedem Objekt einfache oder komplexe
Eigenschaften zuzuweisen. Einfache Eigenschaften so wie z.B. Bewegung kann
man erzeugen, wenn man einem Objekt Angular Velocity oder Dynamics zuweist.
Um Objekte rotieren zu lassen, gibt man ihnen ein Angular Velocity Attribut.
Dabei wird angegeben, um welche Achse und um wieviel Grad pro Frame gedreht
werden soll. Mit einem Dynamics Attribut kann man Objekte sich in eine
bestimmte Richtung bewegen lassen, Gravitation auf sie wirken lassen etc..
Um komplexe Eigenschaften für ein Objekt zu erzeugen, verwendet
man eine von Superscape entwickelte Sprache namens Superscape Control Language
(SCL).
Bei 3D Webmaster ist es möglich, von einem komplexen Shape mehrere Shapes in verschiedenen Detailstufen zu erstellen. Dies ermöglicht, dass Objekte, die sich in weiter Entfernung vom Betrachter befinden, durch eine weniger detaillierte Version dieses Shapes ersetzt werden können. Das hat den Vorteil, dass man somit unnötige Rechenzeit spart, da unser Auge auf die Entfernung immer weniger Details erkennen kann und es daher nichts ausmacht , ob das betreffende Objekt in allen Details berechnet oder durch eine weniger detaillierte Version ersetzt wird. Man erzeugt also eine einfachere Version des Originalobjekts und gibt dann eine Entfernung relativ zum Betrachter an, bei der das Original durch die weniger detaillierte Version ersetzt werden soll. Diesen Prozess kann man mehrmals wiederholen, so dass man, wenn nötig, mehrere Versionen eines Shapes erhält.
Ein weiterer wichtiger Begriff ist der des Viewpoints. Man spaziert nämlich nicht selbst durch eine virtuelle Welt. Eigentlich bewegt man nur seinen Viewpoint. In 3D Webmaster ist es möglich verschiedene Viewpoints zu definieren. Es gibt z.B. Viewpoints, mit denen man frei in der Welt navigieren kann, welche, die nur eine Rotation um die eigene Achse erlauben oder welche, die als Verfolgungskamera ein bestimmtes Objekt, das sich in der Welt bewegt (z.B. Auto), von hinten verfolgen. Innerhalb von Viscape kann man dann auswählen, von welchem Viewpoint man seine Welt betrachten will.
Eine wichtige Frage ist noch der Bildaufbau im Browser. Sorting bezeichnet
hier die Reihenfolge in der die Objekte bei jedem Frame auf dem Bildschirm
gezeichnet werden. 3D Webmaster bzw. Viscape berechnet den aktuellen Standort
der Objekte in der Welt relativ zum aktuellen Viewpoint und zeichnet dann
die Objekte beginnend mit denen, die am weitesten entfernt sind. Somit
ist sichergestellt, dass kein Objekt ein anderes Objekt überdeckt,
das sich zwischen ihm und dem aktuellen Viewpoint befindet.
Abb. 1 zeigt weiterhin noch das Drag 'n' Drop Warehouse, in welchem vorgefertigte Shapes, Texturen und Geräusche gespeichert sind. Diese drei Kategorien sind selbst noch einmal in Unterkategorien aufgeteilt, wie z.B. Möbel, Strassen etc.. Einen vorgefertigten Shape kann man nun einfach im Warehouse anklicken und irgendwo in seine Welt ziehen. Lässt man die Maustaste los, so ist das Objekt platziert. Steht das neue Objekt jetzt nicht an der richtigen Position oder stimmt seine Grösse nicht, so kann man dies wie oben erläutert per Hand ändern, was zu einer nervenden Fummelei ausarten kann. Eine Alternative dazu bietet die exakte Positionierung über Menüs. Abb. 2 zeigt ein solches Menü.
Im Menü Standard Attributes kann nun die exakte Position und Grösse des Objekts bzw. der Gruppe angegeben werden. Die folgende Abbildung 3 zeigt das Position and Size Menü. Hier kann ein Objekt in einer bestimmten Schrittweite verändert werden. Man kann zum Beispiel ein Objekt um exakt 1000 Einheiten in eine Richtung bewegen oder um 10 Einheiten in eine Richtung ausdehnen bzw. verkleinern. Was für einfache Objekte gilt, gilt auch für Gruppen von Objekten. Ich werde daher im weiteren Verlauf nur noch von Objekten sprechen.
Man kann auch selbst mehrere Objekte zu einer Gruppe zusammenfassen. In Abb. 4 wurde der Stuhl aus dem obigen Beispiel dupliziert und aus der Vogelperspektive neben den ersten Stuhl platziert. Wählt man nun unter Menüpunkt Object den Befehl create, so kann man nun angeben, dass man eine neue Gruppe erzeugen will. Es erscheint nun ein blaues Quadrat, das die Box für die neue Gruppe darstellt, welches man nun so vergrössern und verschieben muss, dass es beide Stühle umfasst.
Hat man dies erledigt, kehrt man wieder zur 3D Darstellung zurück. Dies ist in Abb. 5 dargestellt. Manchmal kommt es vor, dass die Box nicht hoch genug ist. Also zieht man diese in die Höhe, bis sie die komplette Gruppe umfasst. Nun braucht man nur noch per Pop Up Menü angeben, dass alle umschlossenen Objekte zu einer neuen Gruppe zusammengefasst werden sollen. Wenn man will, kann man auch noch die Box genau an die Grösse der enthaltenen Objekte anpassen. In Abb.5 ist diese Box noch etwas zu gross. Dies geschieht automatisch mit der Funktion Object>Grouping>Group around all children.
Es ist auch möglich über ein Menü einen bzw mehrere Viewpoints zu setzen. Man bewegt dazu den aktuellen Viewoint an die gewünschte Position, klickt das Menü Viewpoints an und gibt die entsprechenden Optionen an. Abb. 8 zeigt hier den Standardviewpoint. Wie oben schon erwähnt gibt es mehrere verschiedene Arten von Viewpoints (Verfolgungskameras etc). Eine Auflistung davon zeigt Abb. 9.
Abb. 10: Shape Editor
Bei der Erstellung eines Shapes muss man nun zunächst dessen Punkte definieren. Punkte sin von sich aus statisch. Um allerdings animierte Shapes erzeugen zu können, kann man sie in dynamische Punkte umwandeln. Es gibt zwei Arten von Punkten: relative Punkte und geometrische Punkte. Relative Punkte werden einfach durch Angabe ihrer x, y und z Koordinaten erzeugt (siehe Abb. 11). Es können dabei Werte von 0 bis 10000 eingegeben werden. Der Punkt aus Abb. 11 liegt hier genau in der Mitte des Bounding Cubes.
Abb. 11: Relative Point Position
Geometrische Punkte werden dadurch erzeugt, dass man zwei vorhandene Punkte durch Anklicken auswählt und aus der Menüleiste Points>createGeometric auswählt. Als Ergebnis erhält man einen neuen Punkt, der sich genau in der Mitte der blauen Konstruktionslinie befindet (siehe Abb. 12).
Abb. 12: Geometrischer Punkt erzeugt
Geometrische Punkte müssen nicht immer genau in der Mitte zwischen zwei anderen Punkten liegen. Man kann sie auch in bestimmten Intervallen verschieben. Abb. 13 zeigt das Fenster in dem man die Einstellungen für einen ausgewählten geometrischen Punkt vornehmen kann. Der Punkt befindet sich hier zwischen den Punkten 6 und 2 (Punkte werden im Shape Editor durchnummeriert.). Die neue Position des geometrischen Punktes liegt hier im Beispiel genau bei einem achtel der Entfernung von Punkt 6 zu Punkt 2 auf der Konstruktionslinie. Der Vorteil von geometrischen Punkten gegenüber relativen liegt in der Rechenzeit, die ein Punkt beansprucht. Diese ist bei geometrischen Punkten kleiner als bei relativen. Warum dies so ist wurde leider in der Literatur nicht erwähnt.
Facets erzeugt man einfach durch Anklicken der dazugehörigen Punkte und dem Befehl Facets>create. Ein Beispiel dafür zeigt Abb. 14.
Soll ein Shape eine Bewegung ausführen, so sind mehrere Zellen
erforderlich, um die Bewegung flüssig erscheinen zu lassen. Das heisst,
um einen Shape von A nach B zu bewegen, werden z.B. 5 Zellen erzeugt, von
denen die erste und die fünfte die Start- bzw. Endposition des Shapes
enthalten und die restlichen drei die Positionen dazwischen. Bei einem
linearen Bewegungsablauf ist es möglich die Zellen zwischen Start-
und Endposition automatisch zu generieren.
Abb. 16 zeigt einen Pfeil in seiner Start- und zugleich Endposition.
Der Pfeil soll sich von oben nach unten bewegen und wieder zurück.
Dafür wurden hier zehn Zellen verwendet. Die Zellen 1 und 10 enthalten
die Start- bzw Endposition. Zelle 5 enthält eine Zwischenposition
(Abb. 16). Alle anderen Zellen wurden automatisch generiert.
Abb. 16: Animierter Shape in seiner Start- und Endposition
Abb. 17: Animierter Shape in einer Zwischenposition
Hat man diesen Shape fertiggestellt, so kann man ihn in seiner Welt verwenden. Allerdings ist von Animation noch nichts zu sehen. Hierzu muss ihm erst ein Animationsattribut mitgegeben werden. Im daraufhin erscheinenden Fenster kann dann die Geschwindigkeit der Bewegung eingegeben werden.
Abb. 18: Geschwindigkeit für Animation festlegen
Diese Animation kann dann sofort in Viscape bewundert werden. Man sieht einen Pfeil, der sich kontinuierlich von oben nach unten und wieder zurück bewegt.
Um die Erstellung von komplexen Shapes mit vielen Facets zu vereinfachen, gibt es noch einige Funktionen, mit denen man z.B. ein zweidimensionalses Gebilde um seine eigene Achse rotieren lassen kann und somit ein dreidimensionales fast rundes Gebilde, wie z.B. einen Kegel zu erzeugen. Mit 'fast rund' meine ich, dass dieser Kegel nicht richtig rund ist. Sonst würde die Anzahl der benötigten Punkte und Facets unnötig in die Höhe getrieben. Stattdessen gibt es hier wiederum Funktionen, die ein nicht ganz rundes Objekt glatt und rund erscheinen lassen. Hier sei auf die angegebene Literatur verwiesen.
Abb. 19: Image Editor
Abb. 20: Sound Editor
SCL arbeitet mit den gängigen Datentypen wie Integer, Float etc.. Man kann auch Felder und Zeiger verwenden. Es gibt Zuweisungen, Schleifen etc.. Ich möchte jetzt an zwei Beispielen einige für SCL typische Anweisungen vorstellen. Das erste Beispiel ist ganz einfach. Der Code lautet:
if (activate(me,0))
invis(me);
Hierbei soll das betreffende Objekt, wenn es mit der Maus angeklickt wird, unsichtbar werden. Danach bleibt es unsichtbar, bis die Welt wieder in ihren ursprünglichen Zustand zurückversetzt wird. Die Funktion activate besitzt zwei Parameter. Der erste Parameter bezeichnet das Objekt, das aktiviert wird. Hier hat dieser Parameter den Wert 'me', also das Objekt selbst. Der zweite Parameter gibt an, wie das Objekt aktiviert werden soll. Er hat hier den Wert '0', was bedeutet, dass das Objekt per Mausklick aktiviert wird. Die Funktion invis hat nur einen Parameter. Dieser gibt an, welches Objekt hier unsichtbar werden soll.
Das zweite Beispiel soll verdeutlichen, dass jedes SCL Programm in jeden Frame ausgeführt wird:
repeat(5)
zrot(me)=zrot(me)+5;
repeat(5)
zrot(me)=zrot(me)-5;
Hier soll das Objekt, zu dem dieses SCL Programm gehört, sich zuerst fünfmal um 5 Grad weiter um die z-Achse drehen. Danach soll es sich fünfmal um 5 Grad wieder zurückdrehen. Aber da das ganze Programm in jeden Frame ausgeführt wird ist unter Viscape keine Bewegung zu erkennen. Man muss dieses Programm also über mehrere Frames aufteilen. Der korrekte Code lautet so:
resume(0,1)
repeat(5)
{
zrot(me)=zrot(me)+5;
waitf;
}
repeat(5)
{
zrot(me)=zrot(me)-5;
waitf;
}
Die resume Anweisung führt das Programm an der Stelle fort, bei der es zuletzt angehalten wurde. Die beiden Parameter werden in den Online Reference Books genauer erklärt. Das erste repeat wiederholt die folgenden in Klammern eingeschlossenen Anweisungen fünfmal. Zuerst wird die Rotationsanweisung einmal ausgeführt. Danach wird waitf ausgeführt. Waitf stoppt das Programm und wartet auf den nächsten Frame. Beim nächsten Frame wird das Programm wegen der resume Anweisung an der Stelle weitergeführt, an der es vorher gestoppt wurde. Also wird nun die erste repeat Schleife zum zweitenmal durchlaufen und danach wieder auf den nächsten Frame gewartet usw..Ist die erste repeat Schleife beendet, wird bei der zweiten repeat Anweisung wie oben fortgefahren.
<HTML><CENTER>
This world is visible under Netscape Navigator and Microsoft Internet
Explorer.
<P>
<OBJECT CLASSID="clsid:1B487523-BEC2-11CF-BF9E-0020AF998FF5" WIDTH=480
HEIGHT=360>
<PARAM NAME="World" VALUE="plaza.svr" ID="iesvr">
<EMBED SRC=plaza.svr WIDTH=480 HEIGHT=360 NAME="nssvr">
</OBJECT>
</CENTER>
</HTML>
Um eine VISCAPE Welt sowohl unter Netscape als auch unter Internet Explorer erforschen zu können, muss man noch folgendes beachten: Die CLASSID muss immer dieselbe sein, denn sie ist die einzige für VISCAPE. Der EMBED Tag wird von Microsoft Internet Explorer nicht als Parameter für den OJECT Tag verstanden, also wird er ignoriert. Netscape kennt den OBJECT Tag nicht, also ignoriert er diesen und benutzt stattdessen den EMBED Tag. Das Ergebnis sieht unter Netscape dann z.B. so aus:
Abb. 21: 3D Web Seite