Scripting: Technical Methods


In dit gedeelte komt het gehele script met alle deelfasen aan bod. Het probeert de technische achtergronden van het script inzichtelijk te maken en een toelichting te geven op alle deelstappen vanuit het perspectief van de werking van de code.

Doelen:
  • ontwikkeling van een modulair systeem van bouwblokken
  • creëer een configuratie gebaseerd op patronen
  • gebruik parametrische methoden en algoritmen
  • personificatie en identificatie door het arrangement en de combinatie van bouw blokken, niet alleen door de cosmetische schil.
  • sociale interactie bevorderen
  • parameters ontlenen aan essentiele kenmerken van bouwblokken en stedelijke context
  • meervoudige pakketten van data kunnen worden gebruikt in een enkele generatie
  • alle elementen die worden gegenereerd dienen zoveel mogelijk dezelfde algoritmen te gebruiken met verschillende invoerparameters
  • gegenereerde elementen: infrastructuur, groenvoorzieningen en ontspanning, winkelvoorzieningen, gebied voor toekomstige ontwikkeling, modulen voor woningen

Sequence and functional flow
De totstandkoming van de modellen gegenereerd door het script werkt volgens een getrapte volgorde.
Bovenstaande afbeelding beschrijft de volgorde van het script aan de hand van de technische programmatuur. De vier fasen die in de tekst aan bod komen zijn hier weergegeven: setup, calculate, draw en render. Het script begint bij de setup, eerst worden de parameters ingesteld via een PHP gestuurde webpagina. Nadat alle parameters ingesteld zijn, worden deze opgeslagen in een MySQL database. De tweede fase bevat de berekeningen (calculate). Hierin worden via hetzelfde PHP gestuurde systeem de parameters opgehaald uit de database en worden de berekeningen uitgevoerd. De resultaten hiervan worden wederom opgeslagen in een MySQL database. In het teken gedeelte (draw) wordt alle geometrische informatie opgehaald en via een conversie script geschikt gemaakt voor het tekenprogramma, in dit geval Rhinoceros. Nadat alle geometrische informatie is getekend wordt het resultaat in een bestand opgeslagen. De laatste stap is het renderen van afbeeldingen. Hiervoor wordt 3DStudioMax gebruikt.

Setup
De eerste fase is de 'Setup' fase. Hierin opent de gebruiker het user interface via de website. Dit is het php gestuurde interface waarmee de gebruiker als 'dirigent' handelt. Allereerst krijgt de gebruiker de mogelijkheid alle parameters naar zijn believen in te stellen. De parameters die ingesteld kunnen worden zijn aan bod gekomen in het hoofdstuk Script: User Interface. Deze instellingen en keuzes worden vervolgens opgeslagen in een MySQL database. Hierdoor kunnen alle instellingen van de specifieke gebruiker op een later tijdstip nog terug gehaald worden en blijven ze bewaard voor verder onderzoek.

Calculate
Nadat alle instellingen zijn bepaald en opgeslagen vervolgt het script met het daadwerkelijk berekenen van geometrie en data. De berekeningen volgen het schema dat in het hoofdstuk Script: User Interface aan bod is gekomen. Tijdens elke voltooide fase in het doorlopen van alle schermen van het interface wordt alle tot dan berekende data opgeslagen in de MySQL database. Hierdoor blijft per fase alle data bewaard en is het systeem berekend op tijdelijke problemen of gedeeltelijk voltooide opdrachten.

Draw
Nadat alle geometrie en overige data is berekend en opgeslagen wordt vervolgd met het daadwerkelijk 'tekenen' van deze data in een drie dimensionaal model. Hiervoor worden eerst alle gegevens uit de MySQL database opgehaald die in de bereken fase tot stand zijn gekomen en opgeslagen. Het tekenen van het gegenereerde model gebeurt in Rinoceros. Hiervoor is een klein conversie script gemaakt dat in staat is de berekende data om te zetten naar een drie dimensionale vertaling in beeld. De data is namelijk in de MySQL database opgeslagen op een versleutelde manier in de vorm van een gecodeerde notatiewijze. Het conversie script wordt vanuit Rhinoceros opgestart. Het haalt de gegevens uit de database en is in staat deze versleutelde notatiewijze in te lezen en te converteren naar een voor Rhinoceros gebruikelijke manier van vormentaal en creatiemethode. Nadat alle geometrie en data is opgetekend in het drie dimensionale model wordt dit model opgeslagen op de harde schijf als een fysiek bestand.

Render
De laatste fase in de programma is het presentabel maken van het model. Dit kan in principe in elke 3D-modelleer applicatie gedaan worden. Hoewel Rhinoceros hiervoor de logische applicatie lijkt is er toch voor gekozen dit in Autodesk 3DStudioMax te doen. Deze keuze is met name vanuit praktische overweging tot stand gekomen. Nadat het model presentabel is gemaakt kan het worden getoond aan de gebruiker, waarmee het programma voltooid is.



schema parameter use in script
Plaatsingsalgoritme
Het computer script plaatst modulen aan de hand van specifieke parameters. Voor iedere moduul worden enkele basisfuncties uitgevoerd. Zo wordt allereerst een nieuwe positie bepaald, en vervolgens gecontroleerd of deze positie een geschikte en gevalideerde positie betreft. Wanneer alle controles succesvol zijn uitgevoerd, wordt het moduul geplaatst in de wereld. Wanneer een bepaalde controle niet positief is, zal worden teruggekoppeld naar een voorgaande stap in de handelingsprocedure en vanuit die positie verder gewerkt. Nadat een module succesvol in de wereld is geplaatst, wordt overgegaan tot de volgende module en beginnen de gestelde handelingen opnieuw. Iedere handeling en controle wordt gedaan aan de hand van de op dat moment bestaande situatie. Iedere volgende module houdt dus rekening met de eerder succesvol geplaatst modulen en de op dat moment geldende wereld. De wereld veranderd dus bij iedere plaatsing van een module of ander object.

De primaire regels die ten grondslag liggen aan de manier waarop de modulen geplaatst worden, lopen uiteen van geometrische bepalingen tot positionele oriëntatie. Modulen kunnen bijvoorbeeld niet door elkaar heen worden geplaatst. Wanneer een positie bepaald wordt om een module te plaatsen wordt naast de x en y coördinaat allereerst gerekend met de laagst mogelijke z waarde voor de module. Hierdoor komen modulen dus allereerst op het maaiveld niveau te staan. Mocht deze positie reeds bezet zijn door andere objecten, wordt bekeken of deze module een modulehoogte hoger geplaatst kan worden. Hierdoor komt de module dus bovenop een reeds aanwezige module te staan. Indien ook de bovenliggende posities van de bepaalde x en y waarde niet beschikbaar zijn, wordt een geheel nieuwe positie bepaald.

De posities waar een module kan worden geplaatst zijn altijd een veelvoud van een grid waarde, waarbinnen tevens de afmetingen van iedere module worden bepaald. Hierdoor is dus het aantal mogelijke plaatsingen van modulen ten opzichte van andere modulen tot een gelimiteerde hoeveelheid te herleiden.


plot
De beginfase van het script behandeld de 'wereld' van het plangebied. In deze uitwerking is gekozen voor de lokatie rondom het kanaal (zie hoofdstuk lokatie). Dit gebied is geabstraheerd voor het uitvoeren van het script tot een rechthoekig kader waar het kanaal door het midden van het gebied heen loopt.

blocker level 1
Nadat de wereld is gecreerd aan de hand van de opgegeven parameters via het interface wordt het tweede deelproces gestart. Hierin worden zogenaamde 'blocker' zones toegevoegd. Deze zones zijn gericht op de mogelijke onderbrenging van grotere ruimten in het plangebied, maar zijn niet uitlsuitend gebouwde ruimte. Binnen de zones is zowel plaats ingeraamd voor grotere groenvoorzieningen, mogelijke commerciele ruimten en is plaats voor toekomstige ontwikkeling.

blocker level 2
Vervolgens wordt nog een laag 'blocker' zones toegevoegd. Deze zijn kleiner van schaal en zijn met name gericht op kleinere groenvoorzieningen binnen de gebouwde omgeving. Tevens zijn hierbij virtuele zones opgenomen. Deze virtuele zones worden later in het ontwerpstadium niet ingevuld met gebouwde ruimte, maar hebben als doel het gehele plangebied van 'luchtigheid' te voorzien, oftewel, zij zorgen voor de nodige open ruimte in het plangebied.

infrastructuur
Nadat alle 'blocker' zones toegevoegd zijn, wordt de infrastructuur aangepakt. Er worden, afhankelijk van de opgegeven parameters een aantal wegstukken toegevoegd in beide oriëntatie richtingen, zowel in de noord-zuid richting als in de oost-west richting. Het principe van de infrastructuur is dat van een continu groeiende slang die langer wordt totdat de grens van de wereld is bereikt. Uitgegaan wordt van een enkel deelelement voor infrastructuur. Dit deelelement wordt vervolgens steeds vermenigvuldigd en toegevoegd aan de bestaande delen. De infrastructuur wordt ingezet, voordat de modulen geplaast zijn. Dit is noodzakelijk om te waarborgen dat voldoende infrastructuur aanwezig is in het plangebied en dat deze genoeg ontsluiting biedt voor alle modulen.

modulen
De laatste fase van het script behandeld de plaatsing van de modulen. Wederom geld ook hier dat de opgegeven parameters bepalen hoeveel modulen en met welke afmetingen de modulen worden geplaatst. Het script bepaald zelf waar nieuwe modulen worden geplaatst, waarbij gewaarborgd wordt dat modulen aan bepaalde voorwaarden dienen te voldoen. Zo kunnen bijvoorbeeld modulen uiteraard nooit door elkaar heen geplaatst worden.

plangebied
Nadat de gehele originele plot door het script is voorzien van geplande invulling wordt een deelgebied bepaald. Deze selectie wordt vervolgens gebruikt om verder in te zoomen en meer gedetailleerd uit te werken. In bovenstaande afbeelding is het licht gekleurde gedeelte geselecteerd voor deze verdere uitwerking. De keuze voor dit specifieke gedeelte is handmatig bepaald. Dit gedeelte zal op stedebouwkundig en architectonisch niveau worden geanalyseerd om vervolgens tot een concreet ontwerp te komen.