# Generative Modelling Language

Die Generative Modelling Language (GML) ist eine Programmiersprache zur Beschreibung dreidimensionaler Formen. Sie folgt dem Paradigma der Generativen Modellierung, bei dem nicht Objekt-Listen, sondern (objekt-erzeugende) Operationen zur Datenrepräsentation verwendet werden.

## Generative Modellierung

Die generative Modellierung ist ein alternativer Ansatz zur Beschreibung von dreidimensionaler Form. Zugrunde liegt die Idee, ein Modell nicht wie üblich durch eine Ansammlung geometrischer Primitive (Dreiecke, Punkte, NURBS-Patches) zu beschreiben, sondern durch Funktionen. Der Paradigmenwechsel von Objekten zu Geometrie-erzeugenden Operationen ermöglicht es, prozedural aufgebaute Modelle (Stuhl, Autofelge) auch prozedural zu repräsentieren. Statt nur das Resultat eines 3D-Konstruktionsprozesses zu speichern, kann so der Konstruktionsprozess selber repräsentiert werden. Der generative Ansatz ermöglicht, auf einen Fundus bereits gelöster Konstruktions-Aufgaben zurückzugreifen, um sie in ähnlichen, leicht variierten Situationen wiederzuverwenden. Das Konstruktions-Wissen kann dazu in Form von Bibliotheken parametrisierter, Domänen-spezifischer Modellier-Werkzeuge gesammelt werden.

## Die Generative Modelliersprache

Die „Generative Modeling Language (GML)“ ist eine konkrete Realisierung einer generativen Modellbeschreibungs-Sprache. Sie ist eine stack-basierte, interpretierte Programmiersprache, die ähnlich aufgebaut ist wie Adobes PostScript, allerdings ohne Operatoren für 2D-Layouts. Stattdessen enthält sie eine ganze Reihe von Operatoren für den Aufbau von 3D-Modellen (u. a. für Polygone, b-Reps, Subdivision Surfaces). Als „Programmiersprache für Form“ stellt sie unter anderem eine echte Verallgemeinerung existierender primitiv-basierter 3D-Modellformate wie OBJ, DXF oder VRML dar.
Zusammen mit ihrer OpenGL-basierten Runtime-Engine erlaubt die GML,
* eine kompakte Beschreibung parametrisierter 3D-Objekte
* die zur Laufzeit on-the-fly ausgewertet werden kann,
* die Darstellung mit adaptivem Level of Detail (LOD),
* und das interaktive Verändern der Modell-Parameter.

## GML Beispiel

| 1: | (0,0,−2) (1,1,0) 2 quad |
| 2: | /cyan setcurrentmaterial |
| | 5 poly2doubleface |
| 3: | (0,1,1) extrude |
| 4: | (0,0,1) (1,0,1) normalize |
| | 0 project_ringplane |
| 5: | (2,0,0) (0,1,−1) 2 quad |
| 6: | /yellow setcurrentmaterial |
| | 5 poly2doubleface |
| 7: | 0 bridgerings |

## Anwendungen

Bei prozeduralen Modellen hängt die Modellgröße nicht mehr direkt (d. h. linear) von der Dateigröße ab. Die „Prozedurale Kathedrale“, ein Grobmodell des Kölner Doms, enthält 70 Maßwerkfenster, in der höchsten Auflösung enthält ein einzelnes Fenster rund 7 Millionen Dreiecke. Diese „entfalten“ sich aus nur 126 kB GML Code (18 kB gezippt).
Gotische Architektur ist ein Beispiel für die Reichhaltigkeit der prozeduralen Formgestaltung: In der Gotik wurden sämtliche Konstruktionen ausschließlich mit Zirkel und Lineal durchgeführt. Variationen erhielt man, indem im Grunde sehr einfache parametrische Grundoperationen in immer neuer Weise prozedural kombiniert wurden. Daher ist es praktisch unmöglich, zwei Maßwerkfenster an unterschiedlichen Bauten zu finden, bei denen die parametrische Konstruktion identisch ist.
Der interaktive CAVE-Designer hilft dabei, eine CAVE in einen kleinen Raum einzupassen. Wegen der Unterzüge ist es schwierig, das Problem nur mit 2D-Plänen zu lösen (Grundriss, Aufriss). Freiheitsgrade (blaue Pfeile) sind die Position und Orientierung der Leinwände und der Öffnungswinkel der Projektoren.
Ausgehend von 30 gegebenen CAD-Modellen von Autofelgen wurde hier versucht, eine gemeinsame Parametrisierung zu finden, so dass jede einzelne der gegebenen Felgen daraus erzeugt werden kann („generative Flächenrückführung“). Nun lassen sich in dem Design-Raum, der von den Einzelfelgen aufgespannt wird, leicht auch neue, ähnliche Modelle erzeugen.
Die generative Modellierung legt eine Differenzierung zwischen der „Struktur“ und der „Erscheinung“ (z. B. dem Stil) eines 3D-Modells nah. Erstaunlich viele Objekte haben die gleiche Struktur wie ein Stuhl, d. h. sind strukturell ähnlich aufgebaut. Im Prinzip erlaubt diese Trennung dann, die „Erscheinung“ eines Objektes innerhalb dieser Klasse auf jedes andere zu übertragen.
Didaktisches Applet zur Veranschaulichung von Voronoi-Diagrammen. Es geht um die Frage, ob sich die Mittelpunkte der Voronoi-Zellen aus den Grenzen der Regionen ableiten lassen. Das Applet vermittelt die Idee, die dem formalen Beweis zugrunde liegt.