2.1    WebAssembly


WebAssembly, abgekürzt Wasm, ist ein sicheres, portables und kompaktes Codeformat mit der Zielsetzung eine möglichst effizienten Ausführung zu erreichen. Das Hauptziel ist die Entwicklung von performanten Web-Anwendungen, wobei WebAssembly plattformunabhängig konzipiert wurde. WebAssembly ist ein offener Standard der von einer W3C Community Group entwickelt wurde [ Ros2023 ].

Der Codegenerator von JaSIL (Abschnitt 2.9) wurde erweitert um C/C++-Code zu generieren, der mit Hilfe von Emscripten in WebAssembly übersetzt und ausgeführt wird. Mit folgenden Beispielen kann die Performance von Javascript und WebAssembly verglichen werden: preschern.org, Drachenmodell, CSG-Beispiel, Voronoi Diagram auf der Kugel, WebGL-Demo, MaterialX-Demo, BMW-M6 (das BMW Beispiel verwendet einen einfachen Mark and Sweep Garbage Collector).

2.2    MaterialX mit WebGL


MaterialX ist ein offener Standard für die plattformunabhängige Repräsentation von Material mit hoher Darstellungsqualität im Bereich der Computergraphik. Da auch die OpenGL ES Shading Language (GLSL Version 3.00 ES) unterstützt wird, war es möglich, MaterialX in die Java-WebGL-Schnittstelle (Abschnitt 2.3) zu integrieren.

Über die Links MaterialX-Demo und BMW-M6 können Anwendungsbeispiele aufgerufen werden, wobei allerdings mit längeren Ladezeiten zu rechnen ist. Es wird ein Browser benötigt, der unter anderem die ,,Compression Stream API'' unterstützt (im Firefox-Browser erst ab Version 113).

2.3    Java Schnittstelle für WebGL


Mit Hilfe von JaSIL (Abschnitt 2.9) wurde mit Java eine WebGL [ WebGL10, WebGL20 ] Schnittstelle implementiert. Damit wurde ein Viewer für 3D Modelle entwickelt, die mit dem Universal 3D (U3D - siehe Abschnitt 2.6) Format gespeichert wurden. Als Anwendungsbeispiele können über folgende Links das Drachenmodell, das CSG-Beispiel oder das Voronoi Diagram auf der Kugel mit dem U3D-Viewer aufgerufen werden.

Mit dem Mausrad kann im U3D Viewer "gezoomt" werden und durch "dragging" der Maus rotiert die Kamera um das Modell. Für die Lichtsimulation wird ein Phong Shader verwendet.

2.4    Content Management mit LaTeX


Der Inhalt von preschern.org ist mit LaTeX [ Knu86, Lam94 ] geschrieben worden und kann in verschiedene Formate übersetzt werden. Inhalts- und Literaturverzeichnis, Verweise und dergleichen können, entsprechend der Beschreibung in LaTeX, von den für die weitere Übersetzung verwendeten Werkzeugen erstellt werden. So kann daraus ein PDF Dokument erzeugt werden, in das, mit Hilfe der in Abschnitt 2.6 beschriebenen Universal 3D Schnittstelle, 3D Modelle eingebettet werden können.

Ein mit Java implementierter Compiler übersetzt die, für die Beschreibung des Inhalts, verwendete LaTeX Teilmenge, mit Hilfe von einigen speziellen LaTeX Makros (sogenannten "hints"), in XML. Diese XML Beschreibung wird, mit Hilfe von XML Layout Beschreibungen ("parts"), in DHTML übersetzt. Über die Layout Beschreibungen wird die Verbindung zu JavaScript hergestellt, welches mit JaSIL (Abschnitt 2.9) aus Java erzeugt wird.

Download preschern.org als PDF Dokument: .

2.5    Modellieren mit impliziten Flächen


Eine Funktion die jedem Punkt |x,y,z| Element von R 3 eine Distanz mit positivem Vorzeichen zuordnet, wenn dieser außerhalb der von der Funktion repräsentierten Oberfläche liegt, den Wert 0 wenn der Punkt auf der Fläche liegt und negative Werte für innen liegende Punkte, eignet sich recht gut für die effiziente Implementierung von Mengenoperationen (Constructive Solid Geometry [CSG]) mit Objekten.

Für die Extraktion (Polygonalisierung) der Flächen wurde Dual Contouring [ JLSW02 ] verwendet, um deren Eigenschaften in Bezug auf Ecken und Kanten, zu bewahren. Folgender WebGL Link zeigt ein 3D Modell das durch die Verknüpfung von impliziten Funktionen erzeugt und mit Dual Contouring extrahiert wurde: .

2.6    Universal 3D Schnittstelle


Visualisierung beinhaltet den Begriff der Pluralität und der Perspektive. Sie ist der Versuch eine, oft in textueller Form (z.B. als mathematische Beschreibung), vorliegende Darstellung, durch eine graphische zu repräsentieren [ Fis03 ].

Der Standard ECMA-363 Universal 3D File Format (U3D) [ Ecma363 ] dient dazu 3D Modelle zu speichern. Für das Einlesen und die Speicherung von 3D Szenen wurde eine U3D Schnittstelle mit Java implementiert, die eine Teilmenge des U3D Standards unterstützt.

Mit Hilfe des LaTeX "movie15" Package, können multimediale Inhalte, wie Filme, Sound und mit U3D beschriebene Objekte, in PDF Dokumente (Adobe PDF Spezifikation Version 1.6) eingebettet werden. Mit entsprechender Software, wie z.B. dem Acrobat Reader Version ≥ 8.0, können solche Objekte in 3D dargestellt werden. Damit kann eine hochwertige textuelle und graphische Darstellung von Inhalten geboten werden.

2.7    3D Rekonstruktion mit impliziten Flächen


Eine Fläche kann mit einer impliziten Gleichung der Form f(x, y, z) = f(p) = 0 beschrieben werden. Ein Punkt p ist Teil der impliziten Fläche wenn das Resultat 0 ist, wenn er in die Gleichung eingesetzt wird.

Ein einfaches Beispiel ist eine Kugel mit Radius 1 (unit sphere), welche mit der impliziten Gleichung f(x, y, z) = x 2 + y 2 + z 2 - 1 beschrieben wird. Durch "verschmelzen" von impliziten Flächen können Oberflächen aus nicht orientierten Punktmengen rekonstruiert werden. Die Grundidee ist, einfache Körper, wie etwa Kugeln, miteinander zu verschmelzen. Jede Kugel kann als ein "Atom" gesehen werden und man erhält ein "Molekül", indem man seine Atome miteinander vereinigt.

Folgender WebGL Link zeigt ein 3D Modell mit zwei verschmolzenen Kugeln: .

Mehr im Abschnitt 3.1 ...

2.8    2D und 3D Delaunay Triangulation


Die Delaunay Triangulation und das Voronoi Diagramm sind duale Strukturen und enthalten die gleiche Information in unterschiedlicher Form. Sie beinhalten die Information über Distanz bzw. Nähe einer Menge von Objekten im Raum.

Diese Strukturen werden in Anwendungen verwendet, wie etwa die Ermittlung der nächstgelegenen Nachbarobjekte, für winkelmaximierte Triangulationen, für die Berechnung größtmöglicher leerer Kreise, den Aufbau minimaler spannender Bäume oder für das Reisendenproblem (traveling salesperson paths).

Mehr im Abschnitt 3.2 ...

2.9    JavaScript Image Linker


JaSIL ist ein Compiler/Linker der Java Klassen in JavaScript übersetzt und ein optimiertes Programm erzeugt, das in aktellen Web-Browsern ausgeführt werden kann. Als JDK wird derzeit Apache Harmony verwendet. Zudem wurden Java Packages entwickelt, um GUIs für Web-Browser zu erzeugen und um WebGL verwenden zu können. Optional werden preemtive Java Threads unterstützt. Aus den übersetzten Java Klassen wird ein kompaktes optimiertes JavaScript Programm erzeugt, das nur die unbedingt erforderlichen Teile enthält. Für die Speicherverwaltung wird der Garbage Collector von JavaScript verwendet.

Mehr im Abschnitt 3.3 ...

2.10    WEB-Dock


Das WEB-Dock ermöglicht den schnellen und direkten Zugriff auf wichtige und/oder häufig verwendete Web-Resourcen. Im Vergleich zu ähnlichen Lösungen, wie die Task-List (Task-Dock) des 3D Desktops (Abschnitt 2.13) oder Apple's Dock, ermöglicht der effiziente bildbasierte Ansatz die Verwendung des WEB-Docks in aktuellen Web-Browsern. Größenänderung der Icons, die verwendet werden kann, um die Icondichte zu erhöhen, und Drag & Drop werden durch den schnellen Austausch einzelner Bildelemente realisiert, ähnlich wie in einem Zeichentrickfilm. Wird der Mauszeiger über einem, auf diese Weise selektierten, Icon stehen gelassen, wird ein kurzer Hinweistext (hover help) angezeigt.

2.11    JaRT - ein Java Ray Tracer


JaRT ist ein Ray Tracer, der mit Java entwickelt wurde, um GUI-Elemente mit 3D Effekten für Webseiten, wie etwa Rahmen mit abgerundeten Ecken und Kanten, zu erzeugen. JaRT unterstützt CSG Operationen für Grundelemente, wie Flächen, Quader, Kugeln, Cylinder, Kegel und für Dreiecksnetze, einschließlich 3D Text. Texturen können mit planaren, spherischen und cylindrischen Projektionen auf Objekte aufgetragen werden. Es werden die Phong/Blinn Lichtgleichungen verwendet, sowie Spiegelungen und Schatten unterstützt. Die Bildqualität kann mit Supersampling verbessert werden.

2.12    3D Desktop Browser


Die Struktur und die Elemente des 3D Desktops (Abschnitt 2.13) können mit XML definiert werden. Der Desktop Browser verwendet die XML Beschreibung um eine 3D Ansicht zu erzeugen. Callbacks (z.B. für Menüs) können mit JavaScript angegeben werden. Das Document Object Model (DOM) des Desktops bildet eine Schnittstelle für den Zugriff auf Desktop Elemente.

2.13    3D Desktop


Aufbauend auf der Bibliothek für Echtzeitgraphik, die in Abschnitt 2.15 beschrieben wird, wurden Softwarekomponenten für einen 3D Desktop entwickelt. Die Desktop Komponenten unterstützen von Swing Schnittstellen abgeleitetes Drag & Drop und Kontextmenüs. Zudem werden Kreis- und Spirallisten von 3D Objekten mit Selektionen, sowie eine 3D Taskliste (Task-Dock) für aktivierte Funktionen unterstützt. Die abstrakten Listenmodelle entsprechen jenen von Swing. Ein 3D Verzeichnis stellt einen Raum zur Verfügung in dem 3D Objekte rund um ein Zentrum angeordnet werden können.

Screenshots im Abschnitt 3.4 ...

2.14    Erzeugen von 3D Icons in Echtzeit


Durch die Echtzeitgraphik-Bibliothek (Abschnitt 2.15) wird die Erzeugung von 3D Icons erheblich beschleunigt. Ein komplexes Modell, für das mit dem Ray Tracer mehrere Stunden benötigt werden, kann nun in wenigen Minuten in ein Bild mit reaktiven 3D Elementen verwandelt werden. Die Bildqualität wird durch Antialiasing mittels Supersampling verbessert.

Für die Integration von 3D Modellen und Web-Content werden Layouts mit XML definiert und daraus HTML und JavaScript mit Funktionen für Kamerabewegungen oder Animationen generiert.

2.15    Echtzeitgraphik


Basierend auf JOGL, eine Java/OpenGL [ AGo96, SAk10 ] Schnittstelle, wurde eine Bibliothek für Echtzeitgraphik entwickelt. Diese Komponenten unterstützen Spiegel- und Schatteneffekte. Shaderkomponenten wurden mit der OpenGL Shading Language (GLSL) [ Kes10 ] realisiert. Mit einem einfachen Textsystem können aus Texten dynamisch 2D Texturen erzeugt werden. Die Objektselektion erfolgt mit Unterstützung der Graphikhardware (hardware accelerated picking). 3D Modelle können aus Grundelementen mit Hilfe von Constructive Solid Geometry (CSG) Operationen konstruiert werden. Zudem können mit Blender erzeugte 3D Objekte verwendet werden.

2.16    Erzeugen von 3D Icons mittels Ray Tracing


Im Rahmen dieses Projekts wurden Werkzeuge für die Erzeugung von Bildern von 3D Modellen mit sensitiven Bereichen (3D icons) entwickelt, die in Web-Designs verwendet werden können. Solche 3D Elemente werden mit der Programmiersprache Java definiert und mit dem Ray Tracer POV-Ray generiert. Reaktive Bereiche werden durch Zuordnung von "Sensoren" zu 3D Objekten definiert, für die dann automatisch entsprechender HTML code erzeugt wird. Spezielle Panoramakameraabstraktionen werden verwendet, um verzerrungsfreie Weitwinkelsichten zu erzeugen.

Ein Beispiel generiert mit POV-Ray.

2.17    Modula-3 für OS/2 und MS DOS


Das Modula-3 System (Compiler, Laufzeitsystem, Bibliothek), welches vom Systems Research Center der Firma Digital ( DEC-SRC) entwickelt wurde, wurde auf OS/2 (Warp und Merlin) und MS DOS portiert. Carsten Whimster hat einen Artikel über das Modula-3 für OS/2 Projekt im Electronic Development Magazine, OS/2 Ausgabe (EDM/2), veröffentlicht.

2.18    Modula-2 - C Übersetzer


Im Rahmen dieses Projektes wurde ein Modula-2 - C Übersetzer entwickelt, der in der Lage ist, sich selbst in C zu übersetzen. Der sehr portable Übersetzer ist für MS DOS, UNIX und VMS verfügbar.
  • Eine Einführung in die Syntaxanalyse .
  • Eine umfangreiche Projektbeschreibung .
  • Mehr Information zu Modula-2 und weitere Literatur [ BPR86, Wir85 ].