SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
34                                                   4. ERZEUGUNG DER STRASSENNETZWERKE


Simulationsmodel für Transportfluss unterliegt, können mögliche Auswirkungen der Strassen-
kapazität auf die Zyklenbildung ignoriert werden.

   Wie bei der umgebungssensitven Überprüfung wird einem Segment, das in einem Selbst-
sensitiven L-System eingefügt werden soll, die Länge und der Winkel justiert, indem folgende
Überprüfungen durchgeführt werden (illustriert in Abbildung 4.10):

     • Intersection: Bildet das Segment mit einem anderen Segment des L-Systems eine
       Intersektion, wird das einzufügende Segment gekürzt.
     • Forward Intersection: Ist das Segment einer Intersektion nahe, wird diese gebildet,
       indem das Segment verlängert wird. Der Benutzer kann angeben, wie gross der zu über-
       prüfende Bereich sein soll.
     • Nearest Neighbour: Ist das Segment nahe an einer Kreuzung, wird Länge und Winkel
       derart verändert, dass das Segment die Kreuzung erreicht. Auch hier kann der Benutzer
       angeben, wie gross der zu überprüfende Bereich sein soll.
     • Normal: Trat keiner der oben aufgeführten Fälle ein, kann das Segment ohne Ände-
       rungen von Winkel oder Länge eingefügt werden.




       Abbildung 4.10:     Selbstsensitives Einfügen von Segmenten. Jede Spalte illustiert eine
                           Einfügeart: Intersection, Forward Intersection, Nearest Neighbour
                           und Normal (v.l.n.r).

   Zusätzlich wird überprüft, ob die neuen Parameterwerte immer noch innerhalb der vom
Benutzer definierten Gültigkeitsbereiche liegen: Ist eine Strasse zu kurz, oder der Winkel zu
gross, wird das Segment verworfen (state=FAILED). Wurden die Parameterwerte eines Seg-
mentes verändert, d.h. eine Strasse endet in einer Kreuzung, wird dies für die Rules markiert (in
roadAttr). Die Rules stoppen in diesem Fall das weitere Wachstum.


4.4 Smoothing

Die mit dem L-System erzeugten Strassennetzwerke bilden einen Graph, welcher aus Kanten
(Strassen) und Knoten (Kreuzungen) besteht. Dieser Graph kann nun nach Belieben editiert
werden. In diesem Abschnitt wird ein Editiertool vorgestellt, das den Graphen glättet und
dadurch realistischere Kurvenläufe der Strassen erzeugt.

  Ein Subdivisionsalgorithmus unterteilt die Kanten, die mindestens einen Endpunkt mit
Valenz (Anzahl Nachbarn) gleich zwei haben und bewegt anschliessend die entsprechenden
Punkte. Die folgenden beiden Formeln in der rechten Spalte entsprechen den Regeln von
4.4 SMOOTHING                                                                                                     35


Zorin [12], die in Kraft treten, wenn Randkanten von Catmull-Clark Subdivision Surfaces [3]
subdividiert werden. Folgende Subdivision wurde verwendet:
   • Edgepoints:                       v+e                                      3v + e
                            s smooth = ----------
                                                -                     s sharp = --------------
                                                                                             -
                                           2                                          4

   • Vertexpoints:                     6v + e1 + e 2                            14v + e 1 + e 2
                            v smooth = ----------------------------
                                                                  -   v sharp = -------------------------------
                                                                                                              -
                                                    8                                        16


Die Kanten werden unterteilt, indem in der Mitte ein Knoten (Edgepoint) eingefügt wird. Die
Knoten (Vertexpoints) mit genau zwei Nachbarn ändern ihre Position. Die neue Position wird
durch die beiden Nachbarknoten beeinflusst. Abbildung 4.11 illustriert die Subdivision mit den
Formeln der linken Spalte. Abbildung 4.12 zeigt die Subdivision für die Regeln der rechten
Spalte. Diese eignen sich besser für spitze Winkel.




     Abbildung 4.11:      Smoothen des Graphen mit Zorins Regeln.




     Abbildung 4.12:      Smoothing für spitzere Winkel.
36   4. ERZEUGUNG DER STRASSENNETZWERKE
5Parzellierung


Falls eine Region bebaubar ist (d.h. wenn weder Wasser noch Parks vorhanden sind), stehen
zwischen den Strassen die Häuserblocks. Diese können durch Polygone beschrieben werden
(mit den Strassen als Kanten). Der Algorithmus, der aus dem Graphen die Polygone extrahiert,
ist in A.4 beschrieben. Anschliessend wird an allen Kanten mit der Hälfte der jeweiligen Stras-
senbreite subtrahiert. Dadurch werden die Strassenkorridore zwischen den Häuserblocks
erzeugt. Mit einem rekursiven Subdivisionsalgorithmus wird dann jeder Häuserblock in meh-
rere Gebäudegrundrisse unterteilt (auch Polygone). Abbildung 5.1 verdeutlicht den gesamten
Prozess. Auf jedem der resultierenden Grundrisse kann ein Gebäude gebaut werden. Dazu
müssen den Gebäudeparametern (wie Grösse oder Alter) entsprechende Werte zugewiesen wer-
den. Diese können aus den Eingabedaten abgeleitet werden.




     Abbildung 5.1:       Der Prozess der Parzellierung: Aus dem Graphen werden Häuser-
                          blocks extrahiert, und diese in Gebäudegrundrisse unterteilt.

5.1 Subdivision
Blockpolygone werden in Gebäudepolygone unterteilt, indem ein Polygon solange rekursiv
subdividiert wird, d.h durch eine Gerade in zwei kleinere Polygone gesplittet, bis auf dessen
Fläche ein der Umgebung entsprechendes Gebäude gebaut werden kann. Beispielsweise sind in
einer stark bevölkerten Zone eher Gebäude mit grosser Grundfläche zu finden.


                                              37
38                                                                         5. PARZELLIERUNG


    Der Subdivisionsalgorithmus funktioniert folgendermassen: Gestartet wird die Subdivision
auf jedem Blockpolygon. Zuerst wird überprüft, ob die Polygonfläche genügend klein ist um
darauf ein Gebäude zu bauen. Diese Überprüfung hängt von den Eingabebildern (Populations-
dichte und Landnutzung) und den entsprechenden CityEngine-Parametern ab, d.h. der Benutzer
kann diesen Vorgang steuern. Schlägt die Überprüfung fehl, muss dass Polygon unterteilt wer-
den. Um möglichst rechtwinklige Grundrisse zu kreieren, wird aus den beiden längsten Kanten
diejenige ausgewählt, welche mehr 90°-Winkel an den Endpunkten hat und länger ist (2.Wahl-
kriterium). In derer ungefährer Mitte (gaussverteilt) wird rechtwinklig dazu die Trenngerade
gelegt, mit der das Polygon in zwei Teilpolygone gesplittet wird. Nun beginnt die Überprüfung
der resultierenden Polygone rekursiv von neuem. Wurde hingegen durch den rekursiven Algo-
rithmus ein Polygon gefunden, muss dieses folgende Kriterien erfüllen:
     • Das Polygon darf eine vom Benutzer bestimmte Minimalfläche nicht unterschreiten.
     • Das Polygon sollten keine zu spitzen Winkel enthalten. Den Minimalwert kann der
       Benutzer festlegen.
     • Falls erwünscht, werden nur Polygone akzeptiert, die mindestens eine Kante an einer
       Strasse haben. Dies hat zur Folge, dass innerhalb der Häuserblöcke Innenhöfe ent-
       stehen können.
Erfüllt ein Polygon alle Anforderungen, ist es als Gebäudegrundriss akzeptiert. Abbildung 5.2
verdeutlicht den Prozess anhand eines Beispiels.




       Abbildung 5.2:      Rekursive Subdivision eines Blockpolygons in Gebäudegrundrisse.

5.2 Parameterzuweisung
Das Grundstück eines Gebäudes ist nun gegeben, jetzt muss dessen Höhe berechnet werden.
Die Höhe eines Gebäudes resultiert aus dessen Grundfläche und dessen Funktion. Die Funktion
kann in der CityEngine nicht direkt bestimmt werden, aber sie wird aus dem Eingabebild der
Populationsdichte auf einfache Weise abgeleitet: Je höher die Populationsdichte ist, desto mehr
Leute wohnen oder arbeiten in einem Gebäude, was wiederum bedeutet, dass das Gebäude eine
grössere Kapazität respektive eine grössere Höhe besitzt. Diese Lösung birgt zwei Probleme in
sich: Erstens kann der Benützer die Gebäudehöhen nur über die Steuerung der Parameter
‘Populationsdichte’ und ‘Gebäudevolumen pro Person’ kontrollieren, d.h. die resultierenden
Höhen sind eine skalierte Version der Populationsdichte. Zweitens ist die Gebäudehöhe unab-
hängig von der Grundfläche des Gebäudes, welche ebenfalls Einfluss auf die Höhe hat. Bei-
spielsweise werden auf einer 100m2 grossen Grundfläche keine Gebäude mit 100 Stockwerken
gebaut. Deshalb wurde eine andere Lösung implementiert: Der Benutzer hat drei Gebäudetypen
zur Verfügung, bei denen er die Höhe und deren Standardabweichung angeben kann. Das
Auftreten der drei Gebäudetypen kann er mit Schwellwerten kontrollieren, indem diese mit
einem Wert verglichen werden, der aus Populationsdichte und Grundfläche gebildet wird.
Parameter wie das Alter des Gebäudes werden direkt aus den Eingabebildern eingelesen (mit
dem Schwerpunkt des Polygons als Abtastpoint).
6Prozedurale
                                                   Gebäudegenerierung


Im vorhergehenden Kapitel wurden allen Gebäuden diverse Attribute wie Typ, Ort oder Grösse
zugewiesen. Der nächste Schritt in der City-Pipeline besteht nun darin, den einzelnen Gebäuden
individuelle Formen zuzuweisen.
   Das Ziel ist, die Arbeit eines Architekten zu simulieren. Ein Architekt konstruiert ein
Gebäude unter ähnlichen Umständen: ihm wird ein Grundstück zur Verfügung gestellt und er
baut darauf ein Gebäude, das eine bestimmte Funktion erfüllt. Die Automatisierung dieses Pro-
zesses ist sehr umstritten, basiert doch vor allem die Kreativität eines Architekten auf der
Erfahrung, die er sich im Laufe seiner Karriere aufgebaut hat. Das Gebiet des CAAD (Computer
Aided Architectural Design) behandelt dieses Thema. Das Ziel des CAAD ist, den Computer
als Medium einzusetzen, das Architekten in der Arbeit unterstützt und ihnen kompetentere
Behandlung wichtiger architektonischer Fragen erlaubt.
   In diesem Kapitel werden zuerst die Methoden und Instrumente des CAAD kurz vorgestellt
und anschliessend wird daraus eine Formengrammatik abgeleitet, mit der Gebäudeformen
abstrakt dargestellt werden können. Anhand einiger Beispiele wird aufgezeigt, dass diese
Grammatik in der Lage ist, diverse bestehende Gebäude auf einfache Art zu rekonstruieren. Die
Grammatik wurde aber nicht nur durch CAAD inspiriert, sondern sie wurde so entworfen, dass
die Generierung neuer Bauten durch ein L-System erfolgen kann. L-Systeme wurden im CAAD
noch nie benutzt, obwohl ähnliche Ansätze schon vorgeschlagen wurden. Abschliessend wird
anhand einiger Beispiele illustriert, wie Regeln für dieses L-System aufgestellt werden können.

6.1 Computer Aided Architectural Design
Als Beginn des rechnergestützen architektonischen Entwerfens oder des Computer Aided
Architectural Design (CAAD) wird allgemein Ivan Sutherlands Sketchpad-Programm aus dem
Jahre 1963 [33] angesehen, das die Grundlage für die Datenstrukturen und Benutzeroberflächen
heutiger CAD-Programme legte. Als das Standardwerk des CAAD kann [20] aus dem Jahre
1977 bezeichnet werden.
   CAAD unterscheidet sich von CAD im Sinne von Computer Aided Design, indem es
architekturspezifische Operationen und Anwendungen unterstützt, die für andere Disziplinen
von geringem Interesse sind. Es unterscheidet sich von CAD im Sinne von Computer Aided


                                              39
40                                                   6. PROZEDURALE GEBÄUDEGENERIERUNG


Drafting, indem es nicht nur die Ausführungsphase, sondern auch die architektonische
Entwurfsphase unterstützt. In [31] bilden Methoden und Instrumente des CAAD einen Kern-
bereich. Methoden wurden als allgemeine Problemlösungsstrategien beschrieben, die von
Instrumenten unterstützt werden können. In den folgenden beiden Abschnitten werden die für
das CityEngine-Projekt relevanten Methoden und Instrumente vorgestellt.

6.1.1 Methoden für den Entwurf
Methoden entwickeln sich aus verallgemeinerten Erkenntnissen und ermöglichen die Umwand-
lung komplexer Probleme in einfache Teilproblembeschreibungen und behalten ihre Bedeutung
unabhängig vom Verwendungsgebiet. D.h. obwohl sich einzelne Methoden gut für besondere
Problemstellungen eigenen, sind sie problemunabhängig. Kombinationen von Methoden inner-
halb eines Systems sind ebenfalls möglich und auch üblich. Folgende Methoden sind definiert:
     • Abstraktion und Modellbildung: Abstraktion wird verwendet, wenn die Realität zu
       komplex oder zu umfangreich ist, um sie zu erfassen oder zu manipulieren. Durch
       Modelle können Ausehen, Verhalten und Funktion eines Gebäudes vereinfacht darge-
       stellt und manipuliert werden. Voraussetzung für das Entstehen eines Modells ist das
       Vorhandensein einer entsprechenden Abstraktion. Jedes Modell erfordert eine Reihe
       von Konventionen, um effektiv damit arbeiten zu können.
     • Bottom-Up: Zusammensetzung einer Gesamtlösung durch schrittweise erfolgende,
       iterative oder rekursive Kombination von Einzelelementen. Diese müssen bekannt
       und kombinierbar sein, um neue zusammengesetzte Objekte erstellen zu können. Die
       architektonische Kombination volumetrischer Grundformen wie Kuben, Sphären,
       Kegeln oder Keilen ist jedem Architekten bekannt und ist ein beliebtes Thema im
       Werk berühmter Architekten. Das Instrument der Formengrammatiken ist ein typi-
       sches Beispiel für die Bottom-Up-Methode.
     • Prototypen: Anpassung einer parametrischen Objekbeschreibung an die Zielvorstel-
       lungen unter der Voraussetzung, dass für das Entwurfsproblem eine prototypische
       Lösung existiert. In Abbildung 6.1 ist die Verfeinerung eines Prototypen dargestellt:
       Ohne den Prototypen grundlegend zu verändern, werden Variablen des Prototypen
       angepasst.




       Abbildung 6.1: Verfeinerung eines Prototypen.

   Zwei weitere Methoden, Fallbasiertes Schliessen und Maschinenlernen, treten bei der
Gebäudegenerierung indirekt in Kraft. Fallbasiertes Schliessen beinhaltet unter anderem die
automatische Anpassung von Bauteilen, und Maschinenlernen behandelt das automatisierte
Ziehen von Schlüssen aus einer Reihe von Beobachtungen.

6.1.2 Instrumente für den Entwurf
Instrumente entwickeln sich aus einem konkreten Bedürfnis heraus und sind auf bestimmte
Anwendungen zugeschnitten, aber können trotzdem verschiedene Methoden unterstützen. Von
besonderem Interesse sind folgende Instrumente:
6.2 DIE SYNTAX DER SHAPE GRAMMAR                                                             41


  • Formengrammatiken: Darunter versteht man eine Sammlung von Formen und
    darauf angewendenden Transformationsregeln (siehe Abbildung 6.2). Die Anwend-
    ung von Formengrammatiken in der Architektur ist gerechtfertigt, da diese die Merk-
    male einer Sprache wie Vokabular und Syntax besitzt.




      Abbildung 6.2: Formengrammatiken für die Erzeugung einfacher Geometrien.

  • Typen und Variationen: Dieses Hilfsmittel erlaubt die Definition oft vorkommender
    oder charakteristischer Elemente als Typen, die dann in wechselnder Form wieder-
    wendet werden können (siehe Abbildung 6.3).




      Abbildung 6.3: Syntaktische Kombination verschiedener Typen.

  • Substitution: Aus verschiedenen Typen entstehen Modelle. In ihnen können Typen
    gegeneinander ausgetauscht werden (siehe Abbildung 6.4).




      Abbildung 6.4: Substitution von Formen.

6.2 Die Syntax der Shape Grammar
Die CityEngine Shape Grammar vereinigt die Funktionalitäten der oben aufgeführten drei
Instrumente des CAAD. Sie ist in der Lage, existierende Gebäude in einem angemessen
abstrakten Sinne beschreiben zu können, und eignet sich ideal für die automatische Generierung
neuer Gebäude auf Basis einfacher und eleganter Regeln. Für die CityEngine ist nur die äusser-
liche Form eines Gebäudes von Interesse, d.h Innenräume können durch die Shape Grammar
nicht modelliert werden.
    Die Shape Grammar kombiniert zwei verschiedene Repräsentationen, den Grundriss und die
Extrusion, in einem System. Die Grammatik operiert auf diesen beiden Komponenten, indem
sie Operationen zur Veränderung des Grundrisses zur Verfügung stellt, und auf den Grundris-
sen verschiedene Arten volumetrischer Grundformen bauen kann. Wie in L-Systemen können
Verzweigungen gebildet werden, wodurch hierarchische Strukturen entstehen. Der String-
Interpreter entspricht demnach also einer 3D-Turtle. Bevor ein Shape Grammar String interpre-
tiert wird, untersucht der Interpreter das initiale Polygon (Grundriss) samt dessen Daten wie zu
erzielende Gebäudehöhe. Mit Hilfe der Polygondaten wird das Turtle-Koordinatensystem auf-
42                                                  6. PROZEDURALE GEBÄUDEGENERIERUNG


gestellt: Der Schwerpunkt des Polygons ist der Ursprung; nach oben gehts in Richtung Y-
Achse; die Strassenfront des Gebäudes, also die längste an einer Strasse liegende Kante des
Polygons (auf XZ-Ebene im Weltkoordinatensystem projeziert), gibt die Richtung der X-Achse
an und die Z-Achse ist normal zu beiden. Weiter weiss die Turtle um welche Art von Polygon
es sich handelt (Rechteck vs. beliebiges Vieleck) und kennt die Ausmasse der Bounding-Box
des Grundrisses (in XZ-Koordinaten des Turtle-Koordinatensystems). Die Grammatik ist
form-unabhängig, d.h. der Interpreter kann jede Form von Grundrisspolygon behandeln.
Rechtecke haben mehr Operationen zur Verfügung, weil deren Formen in einem kartesischen
Koordinatensystem bevorzugt behandelt werden können. In den folgenden Abschnitten werden
nun jeweils Elemente der Shape Grammar vorgestellt und anhand von Rekonstruktionen, der in
Abbildung 6.5 fotographierten Gebäude, wird deren Anwendung illustriert.




       Abbildung 6.5: Berühmte Wolkenkratzer (v.l.n.r.): Empire State Building (NYC),
                      Sears Tower (Chicago), Lipstick Building (NYC) und Messeturm
                      (Frankfurt)

   Mit den ersten vier Elementen der CityEngine Shape Grammar können vor allem Gebäude
auf rechteckigen Grundrissen modelliert werden. Sie lauten wie folgt:
     E(h)        Extrusion mit der Höhe von h Stockwerken.
     M(dx,dz)    Die Turtle (also der Grundriss) wird in der Ebene bewegt, wobei die Ein-
                 heiten Fensterbreiten sind.
     S(l,w)      Die Bounding Box des Grundrisses wird auf die Länge von l Fensterbre-
                 iten und auf die Breite von w Fensterbreiten skaliert.
     I(h,name)   Auf der Bounding Box des Grundrisses wird eine Instanz von name mit
                 der Höhe von h Stockwerken erzeugt.
   Wird eine Extrusion durchgeführt, wird gleichzeitig die Turtle um die entsprechende Distanz
nach oben bewegt. Dies bedeutet, dass man die Turtle mit der Shape Grammar nur in der Ebene
steuern kann (mit dem Befehl M). ‘Fensterbreite’ ist die Einheit der Ebene und ‘Stock-
werkhöhe’ die Einheit in y-Richtung. Der Nachteil der Verwendung dieser beiden Einheiten ist,
6.2 DIE SYNTAX DER SHAPE GRAMMAR                                                                 43


dass man nicht präzise modellieren kann, da die tatsächlichen Längen in Metern meistens unbe-
kannt sind. Der Vorteil ist jedoch, dass Texturen sauber platziert werden können, sofern Werte
wie dx oder l ganzzahlig sind. Die Geometrie einer Instanz (Befehl I) wird so skaliert, dass deren
3D-Bounding-Box der 3D-Box entspricht, die durch die 2D-Bounding-Box des aktuellen
Grundrisses und der Höhe h gebildet wird. Der folgende String beschreibt mit Hilfe dieser Aus-
drücke das Empire State Building, welches auf einem rechteckigen Grundstück von 160m
Länge und 57m Breite liegt:
   1:     [ E(5)
   2:              [ S(3,7) M(-6,0) E(15) ]
   3:              [ S(3,9) M(-4,0) E(19) S(3,5) E(5) ]
   4:              [ S(9,7) E(24)
   5:                    [ S(3,7) M(-3,0) E(42) S(2,6.5) E(8) ]
   6:                    [ S(7,6) E(54) S(6,5) E(2) I(25,empire_top) ]
   7:                    [ S(3,7) M(3,0)E(42) S(2,6.5) E(8) ]
   8:              ]
   9:              [ S(3,9) M(4,0) E(19) S(3,5) E(5) ]
   10:             [ S(3,7) M(6,0) E(15) ]
   11:    ]
Wird dieser String interpretiert, resultiert er in der in Abbildung 6.6 illustrierten Geometrie. Die
Extrusion in der ersten Zeile baut die 5 Geschoss hohe Basis des Gebäudes. Die 2. Zeile und die
10. Zeile sind verantwortlich für die kleinen Extrusionen ganz aussen direkt über der Basis. Der
einzige Unterschied zwischen den beiden Zeilen besteht im Vorzeichen eines Parameters der
Verschiebungsbefehle M. Mit den Ausdrücken der 3. Zeile und der 9. Zeile werden auf ähnliche
Weise die beiden nächst inneren Elemente des Gebäudes gebaut. Hier werden aber je zwei
Extrusionen und eine Skalierung benutzt, um eine Verjüngung der Geometrie zu modellieren.
Die Zeilen 4-8 konstruieren den imposanten Mittelturm des Empire State Buildings. Zeile 6 ist
verantwortlich für den mittleren Teil und mit Hilfe des Instanzbefehls I wird die 25 Geschoss
hohe Zeppelinanlegestelle (samt Fernsehantenne) oben draufgesetzt.
   Die Nachteile der oben aufgeführten Befehle sind, dass 1. die Werte absolut eingegeben
werden müssen und 2. sich diese Befehle nur für rechteckige Grundrisse wirklich eignen, da
dem Turtle ein kartesisches Koordinatensystem unterliegt. Der erste Nachteil verhindert eine
benutzterfreundliches Erstellen der Generierungsregeln. Translationen (Befehl M) müssen in
den Regeln jedesmal berechnet werden, um über der Strasse schwebende Extrusionen zu ver-
meiden. Lautet eine Regel beispielsweise ‘mache den Grundriss halb so gross und bewege ihn
gegen die Strassenfront bis er mit der unteren Extrusion bündig ist’, muss der verkleinerte
Grundriss nur um ein Viertel der Breite verschoben werden. Die daraus resultierenden Formeln
haben lange, unelegante und unübersichtliche Regeln zur Folge. Aus diesen Gründen wurden
die folgenden Elemente der Shape Grammar hinzugefügt:
   e(h)             Extrusion mit der relativen Höhe h.
   m(dir,dist)      Der Grundriss wird in Richtung dir bewegt, und der Wert dist gibt an um
                    wieviel. Der Wert dist liegt zwischen 0 und 1.
   s(sx,sz)         Der Grundriss wird in X-Richtung mit sx und in Z-Richtung um sz
                    skaliert. Ist der Grundriss kein Rechteck, wird der Grundriss in X- und
                    Z-Richtung mit (sx+sz)/2 skaliert.
Der Befehl e konstruiert eine Extrusion, deren tatsächliche Höhe von der Turtle berechnet wird.
Die totale Gebäudehöhe turtle.buildingHeight ist der Turtle bekannt, wie auch die momentane
Position der Turtle auf der Y-Achse (turtle.y). Mit diesen beiden Werten kann die Höhe der
44                                                       6. PROZEDURALE GEBÄUDEGENERIERUNG


Extrusion ausgedrückt werden: h·(turtle.buildingHeight-turtle.y). Das Resultat wird anschlies-
send auf eine ganzzahlige Anzahl von Stockwerken gerundet. Der Verschiebungsbefehl m ist
unabhängig von Form und Grösse des Grundrisses, indem eine Art von Polarkoordinatensystem
eingeführt wurde. Ist der Wert von dir gleich 0 bedeutet dies, dass die Turtle in Richtung der
Mitte der ersten Kante (also der Strassenfront) des Grundrisspolygons bewegt wird. Ist der Wert
1, in Richtung Mitte der zweiten Kante und so weiter. Es können auch beliebige Floats eingege-
ben werden: beispielsweise ein Wert von 0.5 bewegt die Turtle in Richtung des 2. Endpunktes
der ersten Kante. Ist der Distanzwert dist gleich 0, wird die Turtle nicht bewegt, und der Befehl
hat keine Auswirkungen. Ist der Wert von dist gleich 1, so berechnet die Turtle die Distanz so,
dass die Kante des Grundrisses bündig mit der Kante der letzten Extrusion ist. Die Turtle spei-
chert also immer zwei Grundrisse. Ein Befehl wie s kann einen neuen aktuellen Grundriss
erzeugen und wird eine Extrusion durchgeführt, wird der alte Grundriss mit dem aktuellen
Grundriss überschrieben. Der Befehl s behandelt nicht-rechteckige Grundrisse anders, weil
dadurch garantiert wird, dass nur legale Gebäude entstehen (falls eine Generierungsregel, die
eigentlich für Rechtecke gedacht war, in Kraft tritt). Als illegale Gebäude werden Gebäude
bezeichnet, welche über ihren initialen Grundriss hinausragen. Der folgende String rekonstru-
iert mit Hilfe obiger Befehle den Sears Tower. Dieses Gebäude hat einen quadratischen Grund-
riss mit einer Kantenlänge von 70m und eine Höhe von 443m (ohne Antenne):
     1:    [ s(0.34,0.34)
     2:           [ e(1) S(2.5,5) E(5) s(0.8,0.4) t(2,1) E(13) ]
     3:           [ m(0,1) e(1) S(3.5,7) E(6) s(0.8,0.4) t(2,1) E(12) ]
     4:           [ m(0.5,1) e(0.61) ]
     5:           [ m(1,1) e(0.83) ]
     6:           [ m(1.5,1) e(0.46) ]
     7:           [ m(2,1) e(0.83) ]
     8:           [ m(2.5,1) e(0.61) ]
     9:           [ m(3,1) e(0.83) ]
     10:          [ m(3.5,1) e(0.46) ]
     11:   ]
   Abbildung 6.7 zeigt die resultierende Geometrie. Der Sears Tower besteht aus neun Kuben
mit gleicher Grundfläche. In Zeile 1 wird dementsprechend ein neuer aktueller Grundriss
kreiert. Die 2. Zeile baut nun den mittleren Kubus, welcher die volle Höhe von 108 Stock-
werken erreicht. Anschliessend wird eine Antenne bestehend aus zwei Extrusionen gebaut.
Zeile 3 stellt den zweiten Kubus einer Höhe von 443m dar. Dieser steht direkt an der Strassen-
front des Gebäudes, bündig mit dem Grundriss. Auch hier wird eine Antenne angesetzt. Die fol-
genden 7 Zeilen erzeugen im Gegenuhrzeigersinn nacheinander die anderen Kuben (drei mit 90
Stockwerken, zwei mit 66 Stockwerken und nochmal zwei mit 50 Stockwerken).
6.2 DIE SYNTAX DER SHAPE GRAMMAR                                       45




   Abbildung 6.6: Empire State Building   Abbildung 6.7: Sears Tower
46                                                         6. PROZEDURALE GEBÄUDEGENERIERUNG


   Bisher konnten Grundrisse nur durch Skalierung verändert werden. Erwünscht wären aber
auch andere Grundriss-Operationen. Deshalb wurde die CityEngine Shape Grammar um fol-
genden Befehl erweitert, der regelmässige Polygone beliebiger Valenz (Anzahl Kanten) erzeu-
gen kann:
     V(val)          Ein neuer, kreisförmiger Grundriss mit Valenz val wird erzeugt. Dieser
                     wird zu einem Oval skaliert, das innerhalb der Bounding-Box des alten
                     Grundrisses liegt.
Mit diesem Befehl können sowohl runde Formen (grosser Wert für val), als auch Rechtecke (val
gleich 4) erzeugt werden. Das neue Polygon wird so angelegt, dass die 1. Kante parallel zur
Strassenfront des Gebäudes ist, und der Mittelpunkt des Ovals befindet sich über dem Schwer-
punkt des vorherigen Grundrisses. Dieser Befehl ist mit Vorsicht zu geniessen, wird doch zur
Skalierung die Bounding-Box benutzt, d.h.: handelt es sich beim alten Grundriss nicht um ein
Rechteck, sollte der neue Grundriss anschliessend mit s verkleinert werden. Wie bei
Rechtecken, können mit V erzeugte Grundrisse durch s in X- und Z-Richtung unterschiedlich
skaliert werden, da man sich der Form des Grundrisses bewusst ist. Das Lipstick Building,
welches 133m hoch ist und auf einem (rechteckigen) Grundstück mit der Länge von 57m und
Breite von 21m steht, kann somit wie folgt beschrieben werden:
     1:    [ V(92) E(18) s(0.87,0.82) m(0,1) E(8) s(0.87,0.82) m(0,1) E(8) s(0.8,0.7) e(1) ]
Nachdem der Grundriss durch den Befehl V geändert worden ist, wird das Gebäude nur noch
nach oben verjüngt. Durch die Verschiebungsbefehle sind diese Verjüngungen an der Strassen-
front kaum zu erkennen. Abbildung 6.8 illustriert die Sicht von der anderen Seite aus.
   Zwei Befehle zur Repräsentation von Dachgeometrien und eine weitere Turtle-Operation
sehen folgendermassen aus:
     T(type,h)       Erzeugt ein Dach des Typs type und mit einer Höhe von h Stockwerken.
     t(type,h)       Erzeugt ein Dach des Typs type und mit einer relativen Höhe h. Die Höhe
                     wird auf gleich Weise wie beim Befehl e berechnet.
     R(angle)        Rotiert Turtle um angle Grad (im Gegenuhrzeigersinn).
Die Befehle T und t sind verantwortlich für die Generierung von abgeschrägten Dächern. Ist
type gleich 1 oder der Grundriss kein Rechteck, wird über dem Grundriss eine Pyramide errich-
tet, deren Spitze sich über dem Schwerpunkt des Grundrisses befindet. Ist type gleich 2 und der
Grundriss ein Rechteck, wird ein Giebeldach erzeugt, wobei der Giebel parallel zur längeren
Seite ist. Anders als bei Extrusionen, wird die Turtle nach ausgeführter Operation nicht nach
oben bewegt. Um illegale Gebäudeformen zu verhinden, muss der Befehl R vorsichtig ange-
wendet werden. Der folgende String beschreibt den Messeturm Frankfurt (Höhe: 256m, Grund-
fläche: 41m×41m):
     1:    [ E(7)
     2:             [ s(0.7,0.7) R(45) E(45) s(0.9,0.9) E(3) t(1,1) ]
     3:             [ V(56) s(0.99,0.99) E(45) s(0.87,0.87) E(2) ]
     4:             [ S(7,11) E(37) S(5,11) E(2) S(3,11) E(2) ]
     5:             [ S(11,7) E(37) S(11,5) E(2) S(11,3) E(2) ]
     6:    ]
Das resultierende Gebäude ist in Abbildung 6.9 dargestellt. Die 2. Zeile beschreibt das innere,
höchste und um 45° gedrehte Element des Gebäudes, auf dessen Spitze sich eine Pyramide
befindet. Zeile 3 konstruiert die runden Elemente. Zeile 4 und 5 stellen die beiden Aussen-
elemente dar, wobei man Zeile 5 auch mit Zeile 4 hätte darstellen können, indem man eine Rota-
tion von 90° dazugefügt hätte.
6.2 DIE SYNTAX DER SHAPE GRAMMAR                                            47




    Abbildung 6.8: Lipstick Building   Abbildung 6.9: Messeturm Frankfurt
48                                                     6. PROZEDURALE GEBÄUDEGENERIERUNG


    Der oben erwähnte Befehl V ist einer von vielen möglichen Grundriss-Operationen. Andere
Beispiele wären Unterteilung (ähnlich der Parzellierung aus 5.1) oder Smoothen eines Grund-
risses. Eine ähnliche Vielfalt hat man bei Operationen wie E oder T, welche für die Geome-
trieerzeugung zuständig sind. So könnte man den Befehl der Extrusion mit diversen Parametern
wie Translation (in X- und Z-Richtung) oder Skalierung des oberen Grundrisses überladen.

6.3 Generierung
   Parametrische L-Systeme generieren nun für jeden Grundriss einen Shape Grammar String.
Für jeden LandUse-Typ (Residential, Commercial oder Industrial) existiert ein L-System, das
Gebäude dieses Typs baut. Durch den stochastischen Teil des L-Systems gesteuert, können
mehrere Variationen eines Typs vorkommen. Als Axiom erhält ein L-System jeweils die 3D-
Bounding-Box, die Valenz und das Alter des entsprechenden Polygons. D.h. ein L-System muss
fähig sein, Gebäude jeder Höhe, jeden Alters auf jedem Grundriss zu bauen. Das Axiom A sieht
immer gleich aus:
        ω:      A(length, height, width, age, valence)
Die Einheiten der Länge und Breite sind Fensterbreiten, die der Höhe Stockwerkhöhen. Ein
negativer Valenzwert bedeutet, dass es sich bei dem Polygon um ein Rechteck handelt. Durch
das Turtle-Koordinatensystem sind die Achsen des Gebäudes bekannt. In den Regeln können
natürlich auch andere Symbole als die der Shape Grammar vorkommen. In den folgenden
Abschnitten wird anhand von einigen Beispielen gezeigt, wie solche L-Systeme (Regeln) auf-
gebaut werden können.
   Die aus der Archtiktur bekannten (siehe Abbildung 6.3) L-, U- oder H-Typen können
beispielsweise benutzt werden (die Shape Grammar Befehle sind durch fette Schrift markiert):
        p1 :    A(l,h,w,a,v) : v < 0 && l·w > 25 → U : 0.2
        p2 :    A(l,h,w,a,v) : v < 0 && l·w > 25 → L : 0.2
        p3 :    A(l,h,w,a,v) : v < 0 && l·w > 25 → H : 0.3
        p4 :    A(l,h,w,a,v) : v < 0 && l·w > 25 → B : 0.3
        p5 :    A(l,h,w,a.v) : v < 0 && l·w < 25 → C
        p6 :    A(l,h,w,a,v) : v > 0 → B
        p7 :    U → [ s(0.4, 0.3) m(2,1) B ] [ s(0.3, 1) m(1,1) B ] [ s(0.3, 1) m(3,1) B]
        p8 :    L → [ s(1, 0.4) m(2,1) B ] [ s(0.2, 0.6) m(0.5,1) B ]
        p9 :    H → [ s(0.4, 0.3) B ] [ s(0.3, 1) m(1,1) B ] [ s(0.3, 1) m(3,1) B ] : 0.5
        p10 :   H → [ s(0.7, 0.3) C ] [ s(0.3, 1) m(1,1) C ] [ s(0.3, 1) m(3,1) C ] : 0.5
        p11 :   B → e(1) S(0.2,0.2) E(3) : 0.1
        p12 :   B → e(1) V(4) S(3,1) E(1) : 0.2
        p13 :   B → e(1) : 0.7
        p14 :   C → e(0.8) t(2,1)
Die ersten vier Produktionen behandeln Grundrisse, welche rechteckig sind und eine genügend
grosse Grundfläche besitzen. Stochastisch wird entschieden, welcher Typ verwendet werden
soll. In allen vier Produktionen wird die Grundfläche verkleinert. Das Modul B erzeugt manch-
mal einen Block mit einer Antenne (p11), manchmal einen Block mit einem Dachhäuschen (p12)
und meistens einen einfachen Block (p13). Produktion p5 behandelt Rechtecke, die flächenmäs-
sig kleiner sind, und baut darauf ein Giebeldach (p14). Produktion p6 ist verantwortlich für
Polygone, die nicht rechteckig sind. Der U-Typ wird in Produktion p7 mittels drei Verzweigun-
gen von skalierten und verschobenen Blöcken konstruiert. Der L-Typ (p8) benötigt nur zwei
Verzweigungen. Der H-Typ (p9 und p10) ist gleich aufgebaut wie der U-Typ (nur ein Verschie-
bungsbefehl m weniger), wobei sich die beiden Produktionen dadurch unterscheiden, dass
6.3 GENERIERUNG                                                                             49


durch p9 ein Flachdach und durch p10 ein Giebeldach gebaut wird. Abbildung 6.10 zeigt durch
diese Regel resultierende Gebäude. Die Liste der Produktionen nur mit diesen Modulen liesse
sich beliebig verlängern, indem weitere (stochastische) Bedingungen und Elemente eingebaut
werden könnten.




     Abbildung 6.10:       L-, U- oder H-Typen

   Das vorhergehende L-System wurde nur dazu benutzt, um Entscheidungen zu treffen,
welcher Typ von Gebäude jeweils gebaut werden soll. Die Eigenschaften der L-Systeme
erlauben aber auch, Wolkenkratzer kontrolliert wachsen zu lassen. Die Apex-Methode (siehe
2.6) eignet sich hervorragend für Wolkenkratzer. Das Modul A kann anstatt als ‘noch zu wach-
sender Ast’ als ‘noch zu bauender Abschnitt’ bezeichnet werden. Das Ersetzen von unteren
Bauelementen mit andersförmigen Elementen, wenn oben auf den Ersteren schon gebaut
wurde, eignet sich hingegen weniger, da es schwebende Stockwerke zur Folge haben kann. Mit
dem folgenden L-System wird die Bauweise der Gebäude des Rockefeller Centers (NYC) sim-
uliert:
        p1 :   A(l,h,w,a,v) : l ≥ w → H(h,0.9,1,1)
        p2 :   A(l,h,w,a,v) : l < w → H(h,1,0.9,2)
        p3 :   H(h,sx,sz,dir) : h ≥ 70
                     → [ G(h·0.15,h·0.1,sx^3,sz^3,dir) ]
                         [ s(sz^4,sx^4) G(h·0.9,h·0.1,sx,sz,dir) ]
                         [ s(sz^5,sx^5) G(h,h·0.1,sx,sz,dir) ]
        p4 :   H(h,sx,sz,dir) : h ≥ 40 && h < 70
                     → [ G(h·0.15,h·0.1,sx^3,sz^3,dir) ]
                         [ s(sz^3,sx^3) G(h·0.9,h·0.1,sx,sz,dir) ]
                         [ s(sz^4,sx^4) E(h) ]
        p5 :   H(h,sx,sz,dir) : h < 40
                     → [ G(h·0.5,h·0.2,sx^3,sz^3,dir) ]
                         [ s(sz^2,sx^2) E(h) ]
        p6 :   G(h,e,sx,sz,dir) : h ≥ e → E(h·0.4) s(sx,sz) m(dir,1) G(h·0.6,e,sx,sz,dir)
        p7 :   G(h,e,sx,sz,dir) : h < e → E(h)
Die Gebäude des Rockefeller Centers haben die Charakteristik, dass sich der Grundriss nach
oben stets in einer Richtung verjüngt. Die ersten beiden Produktionen überprüfen nun die Form
des Grundrisses und bestimmen für das H-Modul die Art der Verjüngung (in Richtung der län-
geren Kante). Das H-Modul (Parameter: h für Höhe, sx für Skalierung in X-Richtung, sz für
Skalierung in Z-Richtung und dir für Bewegungsrichtung) überprüft die Gebäudehöhe und ini-
50                                                    6. PROZEDURALE GEBÄUDEGENERIERUNG


tiert das G-Modul welches für das Wachstum verantwortlich ist. Die höchsten Gebäude werden
durch drei Verzweigungen mit je einem G-Module, welches in die verschiedensten Richtungen
skaliert wird, konstruiert (p3). Produktion p4 sieht ähnlich aus, nur wird weniger skaliert (da es
sich um kleinere Gebäude handelt), und in der dritten Verzweigung findet man nur noch eine
Extrusion. Die kleinsten Gebäude besitzen nur noch zwei Verzweigungen (p5). In diesen drei
Produktionen wird auch die Abbruchbedingung für das G-Modul (Parameter e) bestimmt. Das
G-Modul ist verantwortlich für die Verjüngung und produziert solange Extrusionen mit einem
neuen G-Modul (Produktion p6), bis die noch verbleibende Höhe h kleiner als e ist. Dann wird
nur noch eine letzte Extrusion oben aufgesetzt (Produktion p7). Abbildung 6.11 zeigt links eine
Fotographie des Rockefeller Centers und rechts die mit diesem L-System generierten Gebäude.




      Abbildung 6.11:      Die Stadt in der Stadt: das Rockefeller Center.

   In den obigen Beispielen wurden keine Unterschiede zwischen Gebäuden unterschiedlichen
Alters gemacht. Mit folgendem L-System werden Wolkenkratzer mit Erbauungsdatum vor
1950 im Art Deco Stil, Wolkenkratzer zwischen 1950 und 1970 im Internationalen Stil und jün-
gere Wolkenkratzer im Post Modernen Stil gebaut. Der Art Deco Stil besteht aus regelmässigen
geometrischen Formen, spitzen Winkeln und erinnert an den Kubismus. Die berühmtesten Ver-
treter dieses Stils sind das Chrysler Building (NYC) und das Empire State Building (NYC). Das
Ziel des Internationalen Stils war, geometrisch möglichst einfache Gebäude zu konstruieren, die
vor allem funktional sind. Als Höhepunkt des Internationalen Stils gilt das Seagram Building
(NYC) von Mies van der Roh, dessen Form aus einem 160m hohen Kubus besteht. Das Seagram
Building ist zweifellos ein grosses Kunstwerk, doch diente es als Vorbild für schlechte Nach-
ahmer. Deshalb wurde anfangs 70er wieder vermehrt auf die Philosophie des Art Deco zurück-
gegriffen und diese mit den neuen Bautechniken und Formen vereint. Der Post Moderne Stil
war geboren. Berühmteste Vertreter dieses Stils sind das World Trade Center (NYC) oder der
Sears Tower (Chicago).

   Nachfolgende abgedruckt ist das L-System, wobei das Überprüfen der Valenz und der Höhe
nicht aufgeführt wird, da die Produktionen so übersichtlicher präsentiert werden können und
dieses Vorgehen in den obigen L-Systemen schon gezeigt wurde. Die folgenden Produktionen
finden also nur auf Rechtecken mit grosser Höhe statt (95% aller mit der CityEngine erzeugten
Grundrisse sind Rechtecke):
6.3 GENERIERUNG                                                                                  51


         p1 :    A(l,h,w,a,v) : A < 1950 → D(h)
         p2 :    A(l,h,w,a,v) : A ≥ 1950 && Α < 1970 → Ι
         p3 :    A(l,h,w,a,v) : A ≥ 1970 → P(h)
         p4 :    D(h) → E(5) [ s(0.5,0.5) G(h-5,0.8,0,0) ]
                           [ s(0.3,0.7) m(1,0.5) e(0.4) ] [ s(0.3,0.7) m(3,0.5) e(0.4) ] : 0.5
         p5 :    D(h) → E(3) [ s(0.7,0.7) m(1.5,1) G(h·0.3,0.5,1.5,1) ]
                           [ s(0.4,0.4) m(1.5,1) G(h-5,0.9,0,0) ] : 0.5
         p6 :    I → e(1) : 0.3
         p7 :    I → E(2) s(0.6,0.9) e(1) : 0.3
         p8 :    I → E(4) s(0.9,0.4) m(2,0.8) e(1) : 0.4
         p9 :    P(h) → [ V(64) G(h,0.8,1,1) ] [ s(0.5,0.5) m(1,1) e(1) ] : 0.2
         p10 :   P(h) → [ s(0.95,0.95) e(0.9) t(1,1) ]
                           [ s(0.7,0.7) m(0.5,1) G(h·0.7,0.7,0.5,1) ]
                           [ s(0.7,0.7) m(2.5,1) G(h·0.7,0.7,2.5,1) ] : 0.4
         p11 :   P(h) → s(0.5,0.5) [ m(0.5,1) e(0.4) ] [ m(1.5,1) e(0.9) ]
                           [ m(2.5,1) e(1) ] [ m(3.5,1) e(0.7) ] : 0.4
         p12 :   G(h,sc,dir,dist) : h ≥ 3 → E(h·0.4) s(sc,sc) m(dir,dist) G(h·0.6,dir) : 0.5
         p13 :   G(h,sc,dir,dist) : h ≥ 3 → E(h·0.6) s(sc,sc) m(dir,dist) G(h·0.4,dir) : 0.5
         p14 :   G(h,sc,dir,dist) : h < 3 → E(h)
Die ersten drei Produktionen überprüfen das Alter und initiieren die verschiedenen Stile (D für
Art Deco, I für International und P für Post Modern). Produktionen p4 und p5 benützen die für
Art Deco typischen Verjüngungen (Modul G). Diese werden von Produktionen p12 bis p14 kon-
trolliert (ähnlich wie beim Rockefeller-L-System). Der Internationale Stil besteht aus sehr ein-
fachen Geometrien, welche mit den, ebenfalls sehr einfachen, Produktionen p6 bis p8 produziert
werden. Der Post Moderne Stil (Produktionen p9 bis p11) ist schliesslich ein Mix der beiden
vorhergehenden Stile, d.h. es werden sowohl Verjüngungen als auch Extrusionen benützt.
Dazugekommen sind neue Bautechniken mit runden (p9) oder abgeschrägten Geometrien (p10).
Abbildung 6.12 zeigt die resultierende Wolkenkratzer.




      Abbildung 6.12:        Verschiedene Architketurstile: Art Deco, International und Post
                             Modern (v.l.n.r.).

    Obwohl die obigen Beispiele nur zur Illustration der Programmierung von Regeln dienten,
ist ersichtlich, dass mit der CityEngine Shape Grammar und entsprechenden L-Systemen eine
grosse Vielfalt von Gebäuden generiert werden kann. Wird die CityEngine beispielsweise in
einer Filmproduktion verwendet, kann der Art Director mit ähnlichen (aber wahrscheinlich um
einiges längeren) L-Systemen beliebige Gebäude des gewünschten Stils programmieren.

Mais conteúdo relacionado

Destaque

Humanos convertidos en vehículos de radiocontrol
Humanos convertidos en vehículos de radiocontrolHumanos convertidos en vehículos de radiocontrol
Humanos convertidos en vehículos de radiocontrolangelo26_
 
Rene Barrientos - Doris Chavez - Parque Nacional
Rene Barrientos - Doris Chavez - Parque NacionalRene Barrientos - Doris Chavez - Parque Nacional
Rene Barrientos - Doris Chavez - Parque Nacionalfunlapaz
 
Significación de la revista
Significación de la revistaSignificación de la revista
Significación de la revistaiolksz
 
Tic en educación - Una herramienta digital para cambiar el modelo educativo
Tic en educación - Una herramienta digital para cambiar el modelo educativoTic en educación - Una herramienta digital para cambiar el modelo educativo
Tic en educación - Una herramienta digital para cambiar el modelo educativoAndiFont
 
Trabajo de realidad aumentada
Trabajo de realidad aumentadaTrabajo de realidad aumentada
Trabajo de realidad aumentadajosuevargas123
 
Hmi Mexico 2011 O P
Hmi Mexico  2011 O PHmi Mexico  2011 O P
Hmi Mexico 2011 O PKnut Herbst
 
Copacabana graciela castillo - la acentuación trabajo
Copacabana   graciela castillo - la acentuación trabajoCopacabana   graciela castillo - la acentuación trabajo
Copacabana graciela castillo - la acentuación trabajofunlapaz
 

Destaque (18)

Absolutismo
AbsolutismoAbsolutismo
Absolutismo
 
Humanos convertidos en vehículos de radiocontrol
Humanos convertidos en vehículos de radiocontrolHumanos convertidos en vehículos de radiocontrol
Humanos convertidos en vehículos de radiocontrol
 
Msi portátiles Gaming
Msi portátiles Gaming Msi portátiles Gaming
Msi portátiles Gaming
 
Motivación
MotivaciónMotivación
Motivación
 
Lista 2 b
Lista 2 bLista 2 b
Lista 2 b
 
Rene Barrientos - Doris Chavez - Parque Nacional
Rene Barrientos - Doris Chavez - Parque NacionalRene Barrientos - Doris Chavez - Parque Nacional
Rene Barrientos - Doris Chavez - Parque Nacional
 
Significación de la revista
Significación de la revistaSignificación de la revista
Significación de la revista
 
Tic en educación - Una herramienta digital para cambiar el modelo educativo
Tic en educación - Una herramienta digital para cambiar el modelo educativoTic en educación - Una herramienta digital para cambiar el modelo educativo
Tic en educación - Una herramienta digital para cambiar el modelo educativo
 
Trabajo de realidad aumentada
Trabajo de realidad aumentadaTrabajo de realidad aumentada
Trabajo de realidad aumentada
 
Barrios pobres en 31 ciudades mexicanas
Barrios pobres en 31 ciudades mexicanasBarrios pobres en 31 ciudades mexicanas
Barrios pobres en 31 ciudades mexicanas
 
Comic: Die Neue
Comic: Die NeueComic: Die Neue
Comic: Die Neue
 
Hmi Mexico 2011 O P
Hmi Mexico  2011 O PHmi Mexico  2011 O P
Hmi Mexico 2011 O P
 
Copacabana graciela castillo - la acentuación trabajo
Copacabana   graciela castillo - la acentuación trabajoCopacabana   graciela castillo - la acentuación trabajo
Copacabana graciela castillo - la acentuación trabajo
 
TEORÍA DEL COLOR
TEORÍA DEL COLORTEORÍA DEL COLOR
TEORÍA DEL COLOR
 
graphical reference 8
graphical reference 8graphical reference 8
graphical reference 8
 
Underprint
UnderprintUnderprint
Underprint
 
Software
SoftwareSoftware
Software
 
Open data Design meets Data
Open data Design meets DataOpen data Design meets Data
Open data Design meets Data
 

Master thesis pascal_mueller03

  • 1. 34 4. ERZEUGUNG DER STRASSENNETZWERKE Simulationsmodel für Transportfluss unterliegt, können mögliche Auswirkungen der Strassen- kapazität auf die Zyklenbildung ignoriert werden. Wie bei der umgebungssensitven Überprüfung wird einem Segment, das in einem Selbst- sensitiven L-System eingefügt werden soll, die Länge und der Winkel justiert, indem folgende Überprüfungen durchgeführt werden (illustriert in Abbildung 4.10): • Intersection: Bildet das Segment mit einem anderen Segment des L-Systems eine Intersektion, wird das einzufügende Segment gekürzt. • Forward Intersection: Ist das Segment einer Intersektion nahe, wird diese gebildet, indem das Segment verlängert wird. Der Benutzer kann angeben, wie gross der zu über- prüfende Bereich sein soll. • Nearest Neighbour: Ist das Segment nahe an einer Kreuzung, wird Länge und Winkel derart verändert, dass das Segment die Kreuzung erreicht. Auch hier kann der Benutzer angeben, wie gross der zu überprüfende Bereich sein soll. • Normal: Trat keiner der oben aufgeführten Fälle ein, kann das Segment ohne Ände- rungen von Winkel oder Länge eingefügt werden. Abbildung 4.10: Selbstsensitives Einfügen von Segmenten. Jede Spalte illustiert eine Einfügeart: Intersection, Forward Intersection, Nearest Neighbour und Normal (v.l.n.r). Zusätzlich wird überprüft, ob die neuen Parameterwerte immer noch innerhalb der vom Benutzer definierten Gültigkeitsbereiche liegen: Ist eine Strasse zu kurz, oder der Winkel zu gross, wird das Segment verworfen (state=FAILED). Wurden die Parameterwerte eines Seg- mentes verändert, d.h. eine Strasse endet in einer Kreuzung, wird dies für die Rules markiert (in roadAttr). Die Rules stoppen in diesem Fall das weitere Wachstum. 4.4 Smoothing Die mit dem L-System erzeugten Strassennetzwerke bilden einen Graph, welcher aus Kanten (Strassen) und Knoten (Kreuzungen) besteht. Dieser Graph kann nun nach Belieben editiert werden. In diesem Abschnitt wird ein Editiertool vorgestellt, das den Graphen glättet und dadurch realistischere Kurvenläufe der Strassen erzeugt. Ein Subdivisionsalgorithmus unterteilt die Kanten, die mindestens einen Endpunkt mit Valenz (Anzahl Nachbarn) gleich zwei haben und bewegt anschliessend die entsprechenden Punkte. Die folgenden beiden Formeln in der rechten Spalte entsprechen den Regeln von
  • 2. 4.4 SMOOTHING 35 Zorin [12], die in Kraft treten, wenn Randkanten von Catmull-Clark Subdivision Surfaces [3] subdividiert werden. Folgende Subdivision wurde verwendet: • Edgepoints: v+e 3v + e s smooth = ---------- - s sharp = -------------- - 2 4 • Vertexpoints: 6v + e1 + e 2 14v + e 1 + e 2 v smooth = ---------------------------- - v sharp = ------------------------------- - 8 16 Die Kanten werden unterteilt, indem in der Mitte ein Knoten (Edgepoint) eingefügt wird. Die Knoten (Vertexpoints) mit genau zwei Nachbarn ändern ihre Position. Die neue Position wird durch die beiden Nachbarknoten beeinflusst. Abbildung 4.11 illustriert die Subdivision mit den Formeln der linken Spalte. Abbildung 4.12 zeigt die Subdivision für die Regeln der rechten Spalte. Diese eignen sich besser für spitze Winkel. Abbildung 4.11: Smoothen des Graphen mit Zorins Regeln. Abbildung 4.12: Smoothing für spitzere Winkel.
  • 3. 36 4. ERZEUGUNG DER STRASSENNETZWERKE
  • 4. 5Parzellierung Falls eine Region bebaubar ist (d.h. wenn weder Wasser noch Parks vorhanden sind), stehen zwischen den Strassen die Häuserblocks. Diese können durch Polygone beschrieben werden (mit den Strassen als Kanten). Der Algorithmus, der aus dem Graphen die Polygone extrahiert, ist in A.4 beschrieben. Anschliessend wird an allen Kanten mit der Hälfte der jeweiligen Stras- senbreite subtrahiert. Dadurch werden die Strassenkorridore zwischen den Häuserblocks erzeugt. Mit einem rekursiven Subdivisionsalgorithmus wird dann jeder Häuserblock in meh- rere Gebäudegrundrisse unterteilt (auch Polygone). Abbildung 5.1 verdeutlicht den gesamten Prozess. Auf jedem der resultierenden Grundrisse kann ein Gebäude gebaut werden. Dazu müssen den Gebäudeparametern (wie Grösse oder Alter) entsprechende Werte zugewiesen wer- den. Diese können aus den Eingabedaten abgeleitet werden. Abbildung 5.1: Der Prozess der Parzellierung: Aus dem Graphen werden Häuser- blocks extrahiert, und diese in Gebäudegrundrisse unterteilt. 5.1 Subdivision Blockpolygone werden in Gebäudepolygone unterteilt, indem ein Polygon solange rekursiv subdividiert wird, d.h durch eine Gerade in zwei kleinere Polygone gesplittet, bis auf dessen Fläche ein der Umgebung entsprechendes Gebäude gebaut werden kann. Beispielsweise sind in einer stark bevölkerten Zone eher Gebäude mit grosser Grundfläche zu finden. 37
  • 5. 38 5. PARZELLIERUNG Der Subdivisionsalgorithmus funktioniert folgendermassen: Gestartet wird die Subdivision auf jedem Blockpolygon. Zuerst wird überprüft, ob die Polygonfläche genügend klein ist um darauf ein Gebäude zu bauen. Diese Überprüfung hängt von den Eingabebildern (Populations- dichte und Landnutzung) und den entsprechenden CityEngine-Parametern ab, d.h. der Benutzer kann diesen Vorgang steuern. Schlägt die Überprüfung fehl, muss dass Polygon unterteilt wer- den. Um möglichst rechtwinklige Grundrisse zu kreieren, wird aus den beiden längsten Kanten diejenige ausgewählt, welche mehr 90°-Winkel an den Endpunkten hat und länger ist (2.Wahl- kriterium). In derer ungefährer Mitte (gaussverteilt) wird rechtwinklig dazu die Trenngerade gelegt, mit der das Polygon in zwei Teilpolygone gesplittet wird. Nun beginnt die Überprüfung der resultierenden Polygone rekursiv von neuem. Wurde hingegen durch den rekursiven Algo- rithmus ein Polygon gefunden, muss dieses folgende Kriterien erfüllen: • Das Polygon darf eine vom Benutzer bestimmte Minimalfläche nicht unterschreiten. • Das Polygon sollten keine zu spitzen Winkel enthalten. Den Minimalwert kann der Benutzer festlegen. • Falls erwünscht, werden nur Polygone akzeptiert, die mindestens eine Kante an einer Strasse haben. Dies hat zur Folge, dass innerhalb der Häuserblöcke Innenhöfe ent- stehen können. Erfüllt ein Polygon alle Anforderungen, ist es als Gebäudegrundriss akzeptiert. Abbildung 5.2 verdeutlicht den Prozess anhand eines Beispiels. Abbildung 5.2: Rekursive Subdivision eines Blockpolygons in Gebäudegrundrisse. 5.2 Parameterzuweisung Das Grundstück eines Gebäudes ist nun gegeben, jetzt muss dessen Höhe berechnet werden. Die Höhe eines Gebäudes resultiert aus dessen Grundfläche und dessen Funktion. Die Funktion kann in der CityEngine nicht direkt bestimmt werden, aber sie wird aus dem Eingabebild der Populationsdichte auf einfache Weise abgeleitet: Je höher die Populationsdichte ist, desto mehr Leute wohnen oder arbeiten in einem Gebäude, was wiederum bedeutet, dass das Gebäude eine grössere Kapazität respektive eine grössere Höhe besitzt. Diese Lösung birgt zwei Probleme in sich: Erstens kann der Benützer die Gebäudehöhen nur über die Steuerung der Parameter ‘Populationsdichte’ und ‘Gebäudevolumen pro Person’ kontrollieren, d.h. die resultierenden Höhen sind eine skalierte Version der Populationsdichte. Zweitens ist die Gebäudehöhe unab- hängig von der Grundfläche des Gebäudes, welche ebenfalls Einfluss auf die Höhe hat. Bei- spielsweise werden auf einer 100m2 grossen Grundfläche keine Gebäude mit 100 Stockwerken gebaut. Deshalb wurde eine andere Lösung implementiert: Der Benutzer hat drei Gebäudetypen zur Verfügung, bei denen er die Höhe und deren Standardabweichung angeben kann. Das Auftreten der drei Gebäudetypen kann er mit Schwellwerten kontrollieren, indem diese mit einem Wert verglichen werden, der aus Populationsdichte und Grundfläche gebildet wird. Parameter wie das Alter des Gebäudes werden direkt aus den Eingabebildern eingelesen (mit dem Schwerpunkt des Polygons als Abtastpoint).
  • 6. 6Prozedurale Gebäudegenerierung Im vorhergehenden Kapitel wurden allen Gebäuden diverse Attribute wie Typ, Ort oder Grösse zugewiesen. Der nächste Schritt in der City-Pipeline besteht nun darin, den einzelnen Gebäuden individuelle Formen zuzuweisen. Das Ziel ist, die Arbeit eines Architekten zu simulieren. Ein Architekt konstruiert ein Gebäude unter ähnlichen Umständen: ihm wird ein Grundstück zur Verfügung gestellt und er baut darauf ein Gebäude, das eine bestimmte Funktion erfüllt. Die Automatisierung dieses Pro- zesses ist sehr umstritten, basiert doch vor allem die Kreativität eines Architekten auf der Erfahrung, die er sich im Laufe seiner Karriere aufgebaut hat. Das Gebiet des CAAD (Computer Aided Architectural Design) behandelt dieses Thema. Das Ziel des CAAD ist, den Computer als Medium einzusetzen, das Architekten in der Arbeit unterstützt und ihnen kompetentere Behandlung wichtiger architektonischer Fragen erlaubt. In diesem Kapitel werden zuerst die Methoden und Instrumente des CAAD kurz vorgestellt und anschliessend wird daraus eine Formengrammatik abgeleitet, mit der Gebäudeformen abstrakt dargestellt werden können. Anhand einiger Beispiele wird aufgezeigt, dass diese Grammatik in der Lage ist, diverse bestehende Gebäude auf einfache Art zu rekonstruieren. Die Grammatik wurde aber nicht nur durch CAAD inspiriert, sondern sie wurde so entworfen, dass die Generierung neuer Bauten durch ein L-System erfolgen kann. L-Systeme wurden im CAAD noch nie benutzt, obwohl ähnliche Ansätze schon vorgeschlagen wurden. Abschliessend wird anhand einiger Beispiele illustriert, wie Regeln für dieses L-System aufgestellt werden können. 6.1 Computer Aided Architectural Design Als Beginn des rechnergestützen architektonischen Entwerfens oder des Computer Aided Architectural Design (CAAD) wird allgemein Ivan Sutherlands Sketchpad-Programm aus dem Jahre 1963 [33] angesehen, das die Grundlage für die Datenstrukturen und Benutzeroberflächen heutiger CAD-Programme legte. Als das Standardwerk des CAAD kann [20] aus dem Jahre 1977 bezeichnet werden. CAAD unterscheidet sich von CAD im Sinne von Computer Aided Design, indem es architekturspezifische Operationen und Anwendungen unterstützt, die für andere Disziplinen von geringem Interesse sind. Es unterscheidet sich von CAD im Sinne von Computer Aided 39
  • 7. 40 6. PROZEDURALE GEBÄUDEGENERIERUNG Drafting, indem es nicht nur die Ausführungsphase, sondern auch die architektonische Entwurfsphase unterstützt. In [31] bilden Methoden und Instrumente des CAAD einen Kern- bereich. Methoden wurden als allgemeine Problemlösungsstrategien beschrieben, die von Instrumenten unterstützt werden können. In den folgenden beiden Abschnitten werden die für das CityEngine-Projekt relevanten Methoden und Instrumente vorgestellt. 6.1.1 Methoden für den Entwurf Methoden entwickeln sich aus verallgemeinerten Erkenntnissen und ermöglichen die Umwand- lung komplexer Probleme in einfache Teilproblembeschreibungen und behalten ihre Bedeutung unabhängig vom Verwendungsgebiet. D.h. obwohl sich einzelne Methoden gut für besondere Problemstellungen eigenen, sind sie problemunabhängig. Kombinationen von Methoden inner- halb eines Systems sind ebenfalls möglich und auch üblich. Folgende Methoden sind definiert: • Abstraktion und Modellbildung: Abstraktion wird verwendet, wenn die Realität zu komplex oder zu umfangreich ist, um sie zu erfassen oder zu manipulieren. Durch Modelle können Ausehen, Verhalten und Funktion eines Gebäudes vereinfacht darge- stellt und manipuliert werden. Voraussetzung für das Entstehen eines Modells ist das Vorhandensein einer entsprechenden Abstraktion. Jedes Modell erfordert eine Reihe von Konventionen, um effektiv damit arbeiten zu können. • Bottom-Up: Zusammensetzung einer Gesamtlösung durch schrittweise erfolgende, iterative oder rekursive Kombination von Einzelelementen. Diese müssen bekannt und kombinierbar sein, um neue zusammengesetzte Objekte erstellen zu können. Die architektonische Kombination volumetrischer Grundformen wie Kuben, Sphären, Kegeln oder Keilen ist jedem Architekten bekannt und ist ein beliebtes Thema im Werk berühmter Architekten. Das Instrument der Formengrammatiken ist ein typi- sches Beispiel für die Bottom-Up-Methode. • Prototypen: Anpassung einer parametrischen Objekbeschreibung an die Zielvorstel- lungen unter der Voraussetzung, dass für das Entwurfsproblem eine prototypische Lösung existiert. In Abbildung 6.1 ist die Verfeinerung eines Prototypen dargestellt: Ohne den Prototypen grundlegend zu verändern, werden Variablen des Prototypen angepasst. Abbildung 6.1: Verfeinerung eines Prototypen. Zwei weitere Methoden, Fallbasiertes Schliessen und Maschinenlernen, treten bei der Gebäudegenerierung indirekt in Kraft. Fallbasiertes Schliessen beinhaltet unter anderem die automatische Anpassung von Bauteilen, und Maschinenlernen behandelt das automatisierte Ziehen von Schlüssen aus einer Reihe von Beobachtungen. 6.1.2 Instrumente für den Entwurf Instrumente entwickeln sich aus einem konkreten Bedürfnis heraus und sind auf bestimmte Anwendungen zugeschnitten, aber können trotzdem verschiedene Methoden unterstützen. Von besonderem Interesse sind folgende Instrumente:
  • 8. 6.2 DIE SYNTAX DER SHAPE GRAMMAR 41 • Formengrammatiken: Darunter versteht man eine Sammlung von Formen und darauf angewendenden Transformationsregeln (siehe Abbildung 6.2). Die Anwend- ung von Formengrammatiken in der Architektur ist gerechtfertigt, da diese die Merk- male einer Sprache wie Vokabular und Syntax besitzt. Abbildung 6.2: Formengrammatiken für die Erzeugung einfacher Geometrien. • Typen und Variationen: Dieses Hilfsmittel erlaubt die Definition oft vorkommender oder charakteristischer Elemente als Typen, die dann in wechselnder Form wieder- wendet werden können (siehe Abbildung 6.3). Abbildung 6.3: Syntaktische Kombination verschiedener Typen. • Substitution: Aus verschiedenen Typen entstehen Modelle. In ihnen können Typen gegeneinander ausgetauscht werden (siehe Abbildung 6.4). Abbildung 6.4: Substitution von Formen. 6.2 Die Syntax der Shape Grammar Die CityEngine Shape Grammar vereinigt die Funktionalitäten der oben aufgeführten drei Instrumente des CAAD. Sie ist in der Lage, existierende Gebäude in einem angemessen abstrakten Sinne beschreiben zu können, und eignet sich ideal für die automatische Generierung neuer Gebäude auf Basis einfacher und eleganter Regeln. Für die CityEngine ist nur die äusser- liche Form eines Gebäudes von Interesse, d.h Innenräume können durch die Shape Grammar nicht modelliert werden. Die Shape Grammar kombiniert zwei verschiedene Repräsentationen, den Grundriss und die Extrusion, in einem System. Die Grammatik operiert auf diesen beiden Komponenten, indem sie Operationen zur Veränderung des Grundrisses zur Verfügung stellt, und auf den Grundris- sen verschiedene Arten volumetrischer Grundformen bauen kann. Wie in L-Systemen können Verzweigungen gebildet werden, wodurch hierarchische Strukturen entstehen. Der String- Interpreter entspricht demnach also einer 3D-Turtle. Bevor ein Shape Grammar String interpre- tiert wird, untersucht der Interpreter das initiale Polygon (Grundriss) samt dessen Daten wie zu erzielende Gebäudehöhe. Mit Hilfe der Polygondaten wird das Turtle-Koordinatensystem auf-
  • 9. 42 6. PROZEDURALE GEBÄUDEGENERIERUNG gestellt: Der Schwerpunkt des Polygons ist der Ursprung; nach oben gehts in Richtung Y- Achse; die Strassenfront des Gebäudes, also die längste an einer Strasse liegende Kante des Polygons (auf XZ-Ebene im Weltkoordinatensystem projeziert), gibt die Richtung der X-Achse an und die Z-Achse ist normal zu beiden. Weiter weiss die Turtle um welche Art von Polygon es sich handelt (Rechteck vs. beliebiges Vieleck) und kennt die Ausmasse der Bounding-Box des Grundrisses (in XZ-Koordinaten des Turtle-Koordinatensystems). Die Grammatik ist form-unabhängig, d.h. der Interpreter kann jede Form von Grundrisspolygon behandeln. Rechtecke haben mehr Operationen zur Verfügung, weil deren Formen in einem kartesischen Koordinatensystem bevorzugt behandelt werden können. In den folgenden Abschnitten werden nun jeweils Elemente der Shape Grammar vorgestellt und anhand von Rekonstruktionen, der in Abbildung 6.5 fotographierten Gebäude, wird deren Anwendung illustriert. Abbildung 6.5: Berühmte Wolkenkratzer (v.l.n.r.): Empire State Building (NYC), Sears Tower (Chicago), Lipstick Building (NYC) und Messeturm (Frankfurt) Mit den ersten vier Elementen der CityEngine Shape Grammar können vor allem Gebäude auf rechteckigen Grundrissen modelliert werden. Sie lauten wie folgt: E(h) Extrusion mit der Höhe von h Stockwerken. M(dx,dz) Die Turtle (also der Grundriss) wird in der Ebene bewegt, wobei die Ein- heiten Fensterbreiten sind. S(l,w) Die Bounding Box des Grundrisses wird auf die Länge von l Fensterbre- iten und auf die Breite von w Fensterbreiten skaliert. I(h,name) Auf der Bounding Box des Grundrisses wird eine Instanz von name mit der Höhe von h Stockwerken erzeugt. Wird eine Extrusion durchgeführt, wird gleichzeitig die Turtle um die entsprechende Distanz nach oben bewegt. Dies bedeutet, dass man die Turtle mit der Shape Grammar nur in der Ebene steuern kann (mit dem Befehl M). ‘Fensterbreite’ ist die Einheit der Ebene und ‘Stock- werkhöhe’ die Einheit in y-Richtung. Der Nachteil der Verwendung dieser beiden Einheiten ist,
  • 10. 6.2 DIE SYNTAX DER SHAPE GRAMMAR 43 dass man nicht präzise modellieren kann, da die tatsächlichen Längen in Metern meistens unbe- kannt sind. Der Vorteil ist jedoch, dass Texturen sauber platziert werden können, sofern Werte wie dx oder l ganzzahlig sind. Die Geometrie einer Instanz (Befehl I) wird so skaliert, dass deren 3D-Bounding-Box der 3D-Box entspricht, die durch die 2D-Bounding-Box des aktuellen Grundrisses und der Höhe h gebildet wird. Der folgende String beschreibt mit Hilfe dieser Aus- drücke das Empire State Building, welches auf einem rechteckigen Grundstück von 160m Länge und 57m Breite liegt: 1: [ E(5) 2: [ S(3,7) M(-6,0) E(15) ] 3: [ S(3,9) M(-4,0) E(19) S(3,5) E(5) ] 4: [ S(9,7) E(24) 5: [ S(3,7) M(-3,0) E(42) S(2,6.5) E(8) ] 6: [ S(7,6) E(54) S(6,5) E(2) I(25,empire_top) ] 7: [ S(3,7) M(3,0)E(42) S(2,6.5) E(8) ] 8: ] 9: [ S(3,9) M(4,0) E(19) S(3,5) E(5) ] 10: [ S(3,7) M(6,0) E(15) ] 11: ] Wird dieser String interpretiert, resultiert er in der in Abbildung 6.6 illustrierten Geometrie. Die Extrusion in der ersten Zeile baut die 5 Geschoss hohe Basis des Gebäudes. Die 2. Zeile und die 10. Zeile sind verantwortlich für die kleinen Extrusionen ganz aussen direkt über der Basis. Der einzige Unterschied zwischen den beiden Zeilen besteht im Vorzeichen eines Parameters der Verschiebungsbefehle M. Mit den Ausdrücken der 3. Zeile und der 9. Zeile werden auf ähnliche Weise die beiden nächst inneren Elemente des Gebäudes gebaut. Hier werden aber je zwei Extrusionen und eine Skalierung benutzt, um eine Verjüngung der Geometrie zu modellieren. Die Zeilen 4-8 konstruieren den imposanten Mittelturm des Empire State Buildings. Zeile 6 ist verantwortlich für den mittleren Teil und mit Hilfe des Instanzbefehls I wird die 25 Geschoss hohe Zeppelinanlegestelle (samt Fernsehantenne) oben draufgesetzt. Die Nachteile der oben aufgeführten Befehle sind, dass 1. die Werte absolut eingegeben werden müssen und 2. sich diese Befehle nur für rechteckige Grundrisse wirklich eignen, da dem Turtle ein kartesisches Koordinatensystem unterliegt. Der erste Nachteil verhindert eine benutzterfreundliches Erstellen der Generierungsregeln. Translationen (Befehl M) müssen in den Regeln jedesmal berechnet werden, um über der Strasse schwebende Extrusionen zu ver- meiden. Lautet eine Regel beispielsweise ‘mache den Grundriss halb so gross und bewege ihn gegen die Strassenfront bis er mit der unteren Extrusion bündig ist’, muss der verkleinerte Grundriss nur um ein Viertel der Breite verschoben werden. Die daraus resultierenden Formeln haben lange, unelegante und unübersichtliche Regeln zur Folge. Aus diesen Gründen wurden die folgenden Elemente der Shape Grammar hinzugefügt: e(h) Extrusion mit der relativen Höhe h. m(dir,dist) Der Grundriss wird in Richtung dir bewegt, und der Wert dist gibt an um wieviel. Der Wert dist liegt zwischen 0 und 1. s(sx,sz) Der Grundriss wird in X-Richtung mit sx und in Z-Richtung um sz skaliert. Ist der Grundriss kein Rechteck, wird der Grundriss in X- und Z-Richtung mit (sx+sz)/2 skaliert. Der Befehl e konstruiert eine Extrusion, deren tatsächliche Höhe von der Turtle berechnet wird. Die totale Gebäudehöhe turtle.buildingHeight ist der Turtle bekannt, wie auch die momentane Position der Turtle auf der Y-Achse (turtle.y). Mit diesen beiden Werten kann die Höhe der
  • 11. 44 6. PROZEDURALE GEBÄUDEGENERIERUNG Extrusion ausgedrückt werden: h·(turtle.buildingHeight-turtle.y). Das Resultat wird anschlies- send auf eine ganzzahlige Anzahl von Stockwerken gerundet. Der Verschiebungsbefehl m ist unabhängig von Form und Grösse des Grundrisses, indem eine Art von Polarkoordinatensystem eingeführt wurde. Ist der Wert von dir gleich 0 bedeutet dies, dass die Turtle in Richtung der Mitte der ersten Kante (also der Strassenfront) des Grundrisspolygons bewegt wird. Ist der Wert 1, in Richtung Mitte der zweiten Kante und so weiter. Es können auch beliebige Floats eingege- ben werden: beispielsweise ein Wert von 0.5 bewegt die Turtle in Richtung des 2. Endpunktes der ersten Kante. Ist der Distanzwert dist gleich 0, wird die Turtle nicht bewegt, und der Befehl hat keine Auswirkungen. Ist der Wert von dist gleich 1, so berechnet die Turtle die Distanz so, dass die Kante des Grundrisses bündig mit der Kante der letzten Extrusion ist. Die Turtle spei- chert also immer zwei Grundrisse. Ein Befehl wie s kann einen neuen aktuellen Grundriss erzeugen und wird eine Extrusion durchgeführt, wird der alte Grundriss mit dem aktuellen Grundriss überschrieben. Der Befehl s behandelt nicht-rechteckige Grundrisse anders, weil dadurch garantiert wird, dass nur legale Gebäude entstehen (falls eine Generierungsregel, die eigentlich für Rechtecke gedacht war, in Kraft tritt). Als illegale Gebäude werden Gebäude bezeichnet, welche über ihren initialen Grundriss hinausragen. Der folgende String rekonstru- iert mit Hilfe obiger Befehle den Sears Tower. Dieses Gebäude hat einen quadratischen Grund- riss mit einer Kantenlänge von 70m und eine Höhe von 443m (ohne Antenne): 1: [ s(0.34,0.34) 2: [ e(1) S(2.5,5) E(5) s(0.8,0.4) t(2,1) E(13) ] 3: [ m(0,1) e(1) S(3.5,7) E(6) s(0.8,0.4) t(2,1) E(12) ] 4: [ m(0.5,1) e(0.61) ] 5: [ m(1,1) e(0.83) ] 6: [ m(1.5,1) e(0.46) ] 7: [ m(2,1) e(0.83) ] 8: [ m(2.5,1) e(0.61) ] 9: [ m(3,1) e(0.83) ] 10: [ m(3.5,1) e(0.46) ] 11: ] Abbildung 6.7 zeigt die resultierende Geometrie. Der Sears Tower besteht aus neun Kuben mit gleicher Grundfläche. In Zeile 1 wird dementsprechend ein neuer aktueller Grundriss kreiert. Die 2. Zeile baut nun den mittleren Kubus, welcher die volle Höhe von 108 Stock- werken erreicht. Anschliessend wird eine Antenne bestehend aus zwei Extrusionen gebaut. Zeile 3 stellt den zweiten Kubus einer Höhe von 443m dar. Dieser steht direkt an der Strassen- front des Gebäudes, bündig mit dem Grundriss. Auch hier wird eine Antenne angesetzt. Die fol- genden 7 Zeilen erzeugen im Gegenuhrzeigersinn nacheinander die anderen Kuben (drei mit 90 Stockwerken, zwei mit 66 Stockwerken und nochmal zwei mit 50 Stockwerken).
  • 12. 6.2 DIE SYNTAX DER SHAPE GRAMMAR 45 Abbildung 6.6: Empire State Building Abbildung 6.7: Sears Tower
  • 13. 46 6. PROZEDURALE GEBÄUDEGENERIERUNG Bisher konnten Grundrisse nur durch Skalierung verändert werden. Erwünscht wären aber auch andere Grundriss-Operationen. Deshalb wurde die CityEngine Shape Grammar um fol- genden Befehl erweitert, der regelmässige Polygone beliebiger Valenz (Anzahl Kanten) erzeu- gen kann: V(val) Ein neuer, kreisförmiger Grundriss mit Valenz val wird erzeugt. Dieser wird zu einem Oval skaliert, das innerhalb der Bounding-Box des alten Grundrisses liegt. Mit diesem Befehl können sowohl runde Formen (grosser Wert für val), als auch Rechtecke (val gleich 4) erzeugt werden. Das neue Polygon wird so angelegt, dass die 1. Kante parallel zur Strassenfront des Gebäudes ist, und der Mittelpunkt des Ovals befindet sich über dem Schwer- punkt des vorherigen Grundrisses. Dieser Befehl ist mit Vorsicht zu geniessen, wird doch zur Skalierung die Bounding-Box benutzt, d.h.: handelt es sich beim alten Grundriss nicht um ein Rechteck, sollte der neue Grundriss anschliessend mit s verkleinert werden. Wie bei Rechtecken, können mit V erzeugte Grundrisse durch s in X- und Z-Richtung unterschiedlich skaliert werden, da man sich der Form des Grundrisses bewusst ist. Das Lipstick Building, welches 133m hoch ist und auf einem (rechteckigen) Grundstück mit der Länge von 57m und Breite von 21m steht, kann somit wie folgt beschrieben werden: 1: [ V(92) E(18) s(0.87,0.82) m(0,1) E(8) s(0.87,0.82) m(0,1) E(8) s(0.8,0.7) e(1) ] Nachdem der Grundriss durch den Befehl V geändert worden ist, wird das Gebäude nur noch nach oben verjüngt. Durch die Verschiebungsbefehle sind diese Verjüngungen an der Strassen- front kaum zu erkennen. Abbildung 6.8 illustriert die Sicht von der anderen Seite aus. Zwei Befehle zur Repräsentation von Dachgeometrien und eine weitere Turtle-Operation sehen folgendermassen aus: T(type,h) Erzeugt ein Dach des Typs type und mit einer Höhe von h Stockwerken. t(type,h) Erzeugt ein Dach des Typs type und mit einer relativen Höhe h. Die Höhe wird auf gleich Weise wie beim Befehl e berechnet. R(angle) Rotiert Turtle um angle Grad (im Gegenuhrzeigersinn). Die Befehle T und t sind verantwortlich für die Generierung von abgeschrägten Dächern. Ist type gleich 1 oder der Grundriss kein Rechteck, wird über dem Grundriss eine Pyramide errich- tet, deren Spitze sich über dem Schwerpunkt des Grundrisses befindet. Ist type gleich 2 und der Grundriss ein Rechteck, wird ein Giebeldach erzeugt, wobei der Giebel parallel zur längeren Seite ist. Anders als bei Extrusionen, wird die Turtle nach ausgeführter Operation nicht nach oben bewegt. Um illegale Gebäudeformen zu verhinden, muss der Befehl R vorsichtig ange- wendet werden. Der folgende String beschreibt den Messeturm Frankfurt (Höhe: 256m, Grund- fläche: 41m×41m): 1: [ E(7) 2: [ s(0.7,0.7) R(45) E(45) s(0.9,0.9) E(3) t(1,1) ] 3: [ V(56) s(0.99,0.99) E(45) s(0.87,0.87) E(2) ] 4: [ S(7,11) E(37) S(5,11) E(2) S(3,11) E(2) ] 5: [ S(11,7) E(37) S(11,5) E(2) S(11,3) E(2) ] 6: ] Das resultierende Gebäude ist in Abbildung 6.9 dargestellt. Die 2. Zeile beschreibt das innere, höchste und um 45° gedrehte Element des Gebäudes, auf dessen Spitze sich eine Pyramide befindet. Zeile 3 konstruiert die runden Elemente. Zeile 4 und 5 stellen die beiden Aussen- elemente dar, wobei man Zeile 5 auch mit Zeile 4 hätte darstellen können, indem man eine Rota- tion von 90° dazugefügt hätte.
  • 14. 6.2 DIE SYNTAX DER SHAPE GRAMMAR 47 Abbildung 6.8: Lipstick Building Abbildung 6.9: Messeturm Frankfurt
  • 15. 48 6. PROZEDURALE GEBÄUDEGENERIERUNG Der oben erwähnte Befehl V ist einer von vielen möglichen Grundriss-Operationen. Andere Beispiele wären Unterteilung (ähnlich der Parzellierung aus 5.1) oder Smoothen eines Grund- risses. Eine ähnliche Vielfalt hat man bei Operationen wie E oder T, welche für die Geome- trieerzeugung zuständig sind. So könnte man den Befehl der Extrusion mit diversen Parametern wie Translation (in X- und Z-Richtung) oder Skalierung des oberen Grundrisses überladen. 6.3 Generierung Parametrische L-Systeme generieren nun für jeden Grundriss einen Shape Grammar String. Für jeden LandUse-Typ (Residential, Commercial oder Industrial) existiert ein L-System, das Gebäude dieses Typs baut. Durch den stochastischen Teil des L-Systems gesteuert, können mehrere Variationen eines Typs vorkommen. Als Axiom erhält ein L-System jeweils die 3D- Bounding-Box, die Valenz und das Alter des entsprechenden Polygons. D.h. ein L-System muss fähig sein, Gebäude jeder Höhe, jeden Alters auf jedem Grundriss zu bauen. Das Axiom A sieht immer gleich aus: ω: A(length, height, width, age, valence) Die Einheiten der Länge und Breite sind Fensterbreiten, die der Höhe Stockwerkhöhen. Ein negativer Valenzwert bedeutet, dass es sich bei dem Polygon um ein Rechteck handelt. Durch das Turtle-Koordinatensystem sind die Achsen des Gebäudes bekannt. In den Regeln können natürlich auch andere Symbole als die der Shape Grammar vorkommen. In den folgenden Abschnitten wird anhand von einigen Beispielen gezeigt, wie solche L-Systeme (Regeln) auf- gebaut werden können. Die aus der Archtiktur bekannten (siehe Abbildung 6.3) L-, U- oder H-Typen können beispielsweise benutzt werden (die Shape Grammar Befehle sind durch fette Schrift markiert): p1 : A(l,h,w,a,v) : v < 0 && l·w > 25 → U : 0.2 p2 : A(l,h,w,a,v) : v < 0 && l·w > 25 → L : 0.2 p3 : A(l,h,w,a,v) : v < 0 && l·w > 25 → H : 0.3 p4 : A(l,h,w,a,v) : v < 0 && l·w > 25 → B : 0.3 p5 : A(l,h,w,a.v) : v < 0 && l·w < 25 → C p6 : A(l,h,w,a,v) : v > 0 → B p7 : U → [ s(0.4, 0.3) m(2,1) B ] [ s(0.3, 1) m(1,1) B ] [ s(0.3, 1) m(3,1) B] p8 : L → [ s(1, 0.4) m(2,1) B ] [ s(0.2, 0.6) m(0.5,1) B ] p9 : H → [ s(0.4, 0.3) B ] [ s(0.3, 1) m(1,1) B ] [ s(0.3, 1) m(3,1) B ] : 0.5 p10 : H → [ s(0.7, 0.3) C ] [ s(0.3, 1) m(1,1) C ] [ s(0.3, 1) m(3,1) C ] : 0.5 p11 : B → e(1) S(0.2,0.2) E(3) : 0.1 p12 : B → e(1) V(4) S(3,1) E(1) : 0.2 p13 : B → e(1) : 0.7 p14 : C → e(0.8) t(2,1) Die ersten vier Produktionen behandeln Grundrisse, welche rechteckig sind und eine genügend grosse Grundfläche besitzen. Stochastisch wird entschieden, welcher Typ verwendet werden soll. In allen vier Produktionen wird die Grundfläche verkleinert. Das Modul B erzeugt manch- mal einen Block mit einer Antenne (p11), manchmal einen Block mit einem Dachhäuschen (p12) und meistens einen einfachen Block (p13). Produktion p5 behandelt Rechtecke, die flächenmäs- sig kleiner sind, und baut darauf ein Giebeldach (p14). Produktion p6 ist verantwortlich für Polygone, die nicht rechteckig sind. Der U-Typ wird in Produktion p7 mittels drei Verzweigun- gen von skalierten und verschobenen Blöcken konstruiert. Der L-Typ (p8) benötigt nur zwei Verzweigungen. Der H-Typ (p9 und p10) ist gleich aufgebaut wie der U-Typ (nur ein Verschie- bungsbefehl m weniger), wobei sich die beiden Produktionen dadurch unterscheiden, dass
  • 16. 6.3 GENERIERUNG 49 durch p9 ein Flachdach und durch p10 ein Giebeldach gebaut wird. Abbildung 6.10 zeigt durch diese Regel resultierende Gebäude. Die Liste der Produktionen nur mit diesen Modulen liesse sich beliebig verlängern, indem weitere (stochastische) Bedingungen und Elemente eingebaut werden könnten. Abbildung 6.10: L-, U- oder H-Typen Das vorhergehende L-System wurde nur dazu benutzt, um Entscheidungen zu treffen, welcher Typ von Gebäude jeweils gebaut werden soll. Die Eigenschaften der L-Systeme erlauben aber auch, Wolkenkratzer kontrolliert wachsen zu lassen. Die Apex-Methode (siehe 2.6) eignet sich hervorragend für Wolkenkratzer. Das Modul A kann anstatt als ‘noch zu wach- sender Ast’ als ‘noch zu bauender Abschnitt’ bezeichnet werden. Das Ersetzen von unteren Bauelementen mit andersförmigen Elementen, wenn oben auf den Ersteren schon gebaut wurde, eignet sich hingegen weniger, da es schwebende Stockwerke zur Folge haben kann. Mit dem folgenden L-System wird die Bauweise der Gebäude des Rockefeller Centers (NYC) sim- uliert: p1 : A(l,h,w,a,v) : l ≥ w → H(h,0.9,1,1) p2 : A(l,h,w,a,v) : l < w → H(h,1,0.9,2) p3 : H(h,sx,sz,dir) : h ≥ 70 → [ G(h·0.15,h·0.1,sx^3,sz^3,dir) ] [ s(sz^4,sx^4) G(h·0.9,h·0.1,sx,sz,dir) ] [ s(sz^5,sx^5) G(h,h·0.1,sx,sz,dir) ] p4 : H(h,sx,sz,dir) : h ≥ 40 && h < 70 → [ G(h·0.15,h·0.1,sx^3,sz^3,dir) ] [ s(sz^3,sx^3) G(h·0.9,h·0.1,sx,sz,dir) ] [ s(sz^4,sx^4) E(h) ] p5 : H(h,sx,sz,dir) : h < 40 → [ G(h·0.5,h·0.2,sx^3,sz^3,dir) ] [ s(sz^2,sx^2) E(h) ] p6 : G(h,e,sx,sz,dir) : h ≥ e → E(h·0.4) s(sx,sz) m(dir,1) G(h·0.6,e,sx,sz,dir) p7 : G(h,e,sx,sz,dir) : h < e → E(h) Die Gebäude des Rockefeller Centers haben die Charakteristik, dass sich der Grundriss nach oben stets in einer Richtung verjüngt. Die ersten beiden Produktionen überprüfen nun die Form des Grundrisses und bestimmen für das H-Modul die Art der Verjüngung (in Richtung der län- geren Kante). Das H-Modul (Parameter: h für Höhe, sx für Skalierung in X-Richtung, sz für Skalierung in Z-Richtung und dir für Bewegungsrichtung) überprüft die Gebäudehöhe und ini-
  • 17. 50 6. PROZEDURALE GEBÄUDEGENERIERUNG tiert das G-Modul welches für das Wachstum verantwortlich ist. Die höchsten Gebäude werden durch drei Verzweigungen mit je einem G-Module, welches in die verschiedensten Richtungen skaliert wird, konstruiert (p3). Produktion p4 sieht ähnlich aus, nur wird weniger skaliert (da es sich um kleinere Gebäude handelt), und in der dritten Verzweigung findet man nur noch eine Extrusion. Die kleinsten Gebäude besitzen nur noch zwei Verzweigungen (p5). In diesen drei Produktionen wird auch die Abbruchbedingung für das G-Modul (Parameter e) bestimmt. Das G-Modul ist verantwortlich für die Verjüngung und produziert solange Extrusionen mit einem neuen G-Modul (Produktion p6), bis die noch verbleibende Höhe h kleiner als e ist. Dann wird nur noch eine letzte Extrusion oben aufgesetzt (Produktion p7). Abbildung 6.11 zeigt links eine Fotographie des Rockefeller Centers und rechts die mit diesem L-System generierten Gebäude. Abbildung 6.11: Die Stadt in der Stadt: das Rockefeller Center. In den obigen Beispielen wurden keine Unterschiede zwischen Gebäuden unterschiedlichen Alters gemacht. Mit folgendem L-System werden Wolkenkratzer mit Erbauungsdatum vor 1950 im Art Deco Stil, Wolkenkratzer zwischen 1950 und 1970 im Internationalen Stil und jün- gere Wolkenkratzer im Post Modernen Stil gebaut. Der Art Deco Stil besteht aus regelmässigen geometrischen Formen, spitzen Winkeln und erinnert an den Kubismus. Die berühmtesten Ver- treter dieses Stils sind das Chrysler Building (NYC) und das Empire State Building (NYC). Das Ziel des Internationalen Stils war, geometrisch möglichst einfache Gebäude zu konstruieren, die vor allem funktional sind. Als Höhepunkt des Internationalen Stils gilt das Seagram Building (NYC) von Mies van der Roh, dessen Form aus einem 160m hohen Kubus besteht. Das Seagram Building ist zweifellos ein grosses Kunstwerk, doch diente es als Vorbild für schlechte Nach- ahmer. Deshalb wurde anfangs 70er wieder vermehrt auf die Philosophie des Art Deco zurück- gegriffen und diese mit den neuen Bautechniken und Formen vereint. Der Post Moderne Stil war geboren. Berühmteste Vertreter dieses Stils sind das World Trade Center (NYC) oder der Sears Tower (Chicago). Nachfolgende abgedruckt ist das L-System, wobei das Überprüfen der Valenz und der Höhe nicht aufgeführt wird, da die Produktionen so übersichtlicher präsentiert werden können und dieses Vorgehen in den obigen L-Systemen schon gezeigt wurde. Die folgenden Produktionen finden also nur auf Rechtecken mit grosser Höhe statt (95% aller mit der CityEngine erzeugten Grundrisse sind Rechtecke):
  • 18. 6.3 GENERIERUNG 51 p1 : A(l,h,w,a,v) : A < 1950 → D(h) p2 : A(l,h,w,a,v) : A ≥ 1950 && Α < 1970 → Ι p3 : A(l,h,w,a,v) : A ≥ 1970 → P(h) p4 : D(h) → E(5) [ s(0.5,0.5) G(h-5,0.8,0,0) ] [ s(0.3,0.7) m(1,0.5) e(0.4) ] [ s(0.3,0.7) m(3,0.5) e(0.4) ] : 0.5 p5 : D(h) → E(3) [ s(0.7,0.7) m(1.5,1) G(h·0.3,0.5,1.5,1) ] [ s(0.4,0.4) m(1.5,1) G(h-5,0.9,0,0) ] : 0.5 p6 : I → e(1) : 0.3 p7 : I → E(2) s(0.6,0.9) e(1) : 0.3 p8 : I → E(4) s(0.9,0.4) m(2,0.8) e(1) : 0.4 p9 : P(h) → [ V(64) G(h,0.8,1,1) ] [ s(0.5,0.5) m(1,1) e(1) ] : 0.2 p10 : P(h) → [ s(0.95,0.95) e(0.9) t(1,1) ] [ s(0.7,0.7) m(0.5,1) G(h·0.7,0.7,0.5,1) ] [ s(0.7,0.7) m(2.5,1) G(h·0.7,0.7,2.5,1) ] : 0.4 p11 : P(h) → s(0.5,0.5) [ m(0.5,1) e(0.4) ] [ m(1.5,1) e(0.9) ] [ m(2.5,1) e(1) ] [ m(3.5,1) e(0.7) ] : 0.4 p12 : G(h,sc,dir,dist) : h ≥ 3 → E(h·0.4) s(sc,sc) m(dir,dist) G(h·0.6,dir) : 0.5 p13 : G(h,sc,dir,dist) : h ≥ 3 → E(h·0.6) s(sc,sc) m(dir,dist) G(h·0.4,dir) : 0.5 p14 : G(h,sc,dir,dist) : h < 3 → E(h) Die ersten drei Produktionen überprüfen das Alter und initiieren die verschiedenen Stile (D für Art Deco, I für International und P für Post Modern). Produktionen p4 und p5 benützen die für Art Deco typischen Verjüngungen (Modul G). Diese werden von Produktionen p12 bis p14 kon- trolliert (ähnlich wie beim Rockefeller-L-System). Der Internationale Stil besteht aus sehr ein- fachen Geometrien, welche mit den, ebenfalls sehr einfachen, Produktionen p6 bis p8 produziert werden. Der Post Moderne Stil (Produktionen p9 bis p11) ist schliesslich ein Mix der beiden vorhergehenden Stile, d.h. es werden sowohl Verjüngungen als auch Extrusionen benützt. Dazugekommen sind neue Bautechniken mit runden (p9) oder abgeschrägten Geometrien (p10). Abbildung 6.12 zeigt die resultierende Wolkenkratzer. Abbildung 6.12: Verschiedene Architketurstile: Art Deco, International und Post Modern (v.l.n.r.). Obwohl die obigen Beispiele nur zur Illustration der Programmierung von Regeln dienten, ist ersichtlich, dass mit der CityEngine Shape Grammar und entsprechenden L-Systemen eine grosse Vielfalt von Gebäuden generiert werden kann. Wird die CityEngine beispielsweise in einer Filmproduktion verwendet, kann der Art Director mit ähnlichen (aber wahrscheinlich um einiges längeren) L-Systemen beliebige Gebäude des gewünschten Stils programmieren.