Ontwerpen met Generatieve Tools Rhino3D icm Grasshopper
Student: Arno Mulderij 2009 Begeleiders: Prof.Dr.Ir. Jos Lichtenberg Ir. Arno Pronk Prof. Dr. Ir. Bauke de Vries
2
Ontwerpen met generatieve tools
Ontwerpen met Generatieve Tools Inhoudsopgave 3 4 7 8 9 10 14 16 17 19 21 31 37 39 48 49 50 51 52
Inleiding Onderzoeksmethodologie Onderzoeksmodel Planning Doelstellingen Deelvragen Wat is scripten Waarom scripten Keuze van scripttaal Reflectie scripttalen Rhino Grasshopper Ontwerp Constructiesysteem Grasshopper scripting Maquette Reflectie Aanbevelingen Bronnen Bijlage
Ontwerpen met generatieve tools
3
Inleiding Voor mijn afstuderen op de TU Eindhoven richt ik mij op generatief ontwerpen. Deze ontwerpmethode maakt gebruik van computercode, zogenaamde scripts, om een ontwerp aan te sturen. Het ontwerpen met scripting heeft de afgelopen jaren meer en meer aanhangers gekregen; ONL van Kas Oosterhuis, UN Studio, NOX, Zaha Hadid en vele anderen. Ik zal me met name gaan richten op een script dat een CAD/CAM proces aan kan sturen. De huidige architectuur maakt een handmatig concept en gaat het concept in een later stadium in de computer invoeren. In dat stadium wordt het gebouw ook constructief getoetst. Maar waarom gebruiken we de computer niet als conceptvorming en toetsen we het ontwerp niet gelijk op constructieve benodigdheden? De nostalgie die `architectuur` met zich meebrengt verdringt nog steeds het computergestuurd ontwerpen. Veel architecten denken dat het creatieve proces van ontwerpen niet met de computer kan. Het invoeren van een concept in een computer is een hele andere benadering, maar het verschilt niet veel van de conservatieve ontwerpmethode. De ontwerper heeft altijd volledige controle over het ontwerp/concept. De computer bepaalt niet de vorm, maar degene die de opdrachten of commando’s invoert bepaalt de vorm, dus degene die de commando’s in de computer invoert is een soort digitale architect. Waar hij zijn normale denkpatroon op papier schetst/formuleert, voert hij nu zijn gedachtes in de computer in. Met scripting is een totaalbeheersing van een project mogelijk, de randvoorwaarden voor een project kunnen worden ingevoerd en de computer genereert een basisstructuur (kolommen en vloeren). Deze basisvoorwaarden kunnen op elk moment worden gewijzigd waarbij de computer de nieuwe voorwaarden opnieuw berekent en construeert. De dimensies van de kolommen en vloeren kunnen ook gekoppeld worden aan constructieve eisen. De gevels worden gekoppeld aan de vloeren en kolommen, deze kunnen in elke fase weer worden gewijzigd.
Afbeelding: Autoshowroom geïntegreerd in de geluidswal langs de A2. Ontwerp van ONL
Met het toevoegen van de inbouw met de daarbij behorende gevels hebben we toegang tot alle maten en constructieve eisen van elk afzonderlijk element. Om dit te toetsen en mij het scripten eigen te maken heb ik mij gedurende mijn afstuderen samen met medestudent Maurice Dominicus verdiept in het scripten en zal ik zelf een ontwerp maken om het scripten in de praktijk te brengen, waar Maurice verder gaat met zijn eigen onderzoek. Als ontwerpopdracht heb ik gekozen voor een overkapping voor het centraal station in Eindhoven. Ik ga hiervoor een staalconstructie gebruiken die vormgegeven en gedimensioneerd kan worden door middel van een script. Het doel van het gebruik van het script is de productie van werktekeningen waar alle afzonderlijke elementen van de staalconstructie uit gehaald kunnen worden. Door in mijn ontwerp vloeiende vormen te gebruiken ontstaat er een gebouw met veel gekromde oppervlakken. Hierbij is het onmogelijk om handmatig alle gebouwonderdelen te dimensioneren en uit te tekenen. Het gebruik van een script is dus essentieel aangezien zowat elk constructieonderdeel uniek is.
4
Ontwerpen met generatieve tools
Onderzoeksmethodologie Studie: `Generative Design` Na een eerdere studie m.b.t. dubbelgekromde oppervlakken was duidelijk dat er veel potentie zit in het gekozen materiaal en de productiemethode. Met onze huidige kennis van het onderwerp hebben we al een goede basis voor dit vervolgonderzoek. Titels van eerdere onderzoeken; • Animate form, G.Lynn • Architecture goes wild, K.Oosterhuis • Swarm architecture, K.Oosterhuis • Materialising Geometry, J. Sanchez-Alvarez • Geometric Modeling with Conical Meshes and Developable Surfaces, Y. Liu
Probleemveld Wat is het probleem? De toegankelijkheid/toepasbaarheid van generatieve tools in het ontwerpproces. Het ontwerp- en productieproces is momenteel niet op elkaar afgestemd. Wiens probleem is het? Architecten/ontwikkelaars die unieke ontwerpen willen maken lopen tegen hele hoge productiekosten op. Productleveranciers kunnen de vraag naar specifieke producten niet aan. Wanneer is het probleem ontstaan? Sinds de opleving van blobarchitectuur is de vraag naar dubbelgekromde geveloppervlakken en de daarbij benodigde productiemethoden toegenomen. De ontwikkeling van ontwerpmethodes en de kennis bleven achter. Waarom is het een probleem? Unieke bouwelementen zijn relatief kostbaar en drukken te veel op de totale bouwkosten. Waar doet het probleem zich voor? In de vertaling van het ontwerp naar de productiemethode van unieke bouwelementen. Welke voorgeschiedenis heeft het probleem? Unieke ontwerpen die niet uitgevoerd konden worden. Of de kosten liepen tijdens de uitvoering enorm op wat te wijten was aan enkele specifieke bouwelementen. Het uitvoeren van een uniek ontwerp met standaard bouwproducten kan teveel knelpunten opleveren waardoor de kosten stijgen. Knelpunten: • Verschillende programma’s met verschillende werkwijze. • Vertaalslag ontwerp naar praktijk • Wat zijn de grenzen van het generatief ontwerpen • Eindcriteria/selectiecriteria voor output • Beheersing ontwerp • Benadering van programma van eisen/wensen • Concretiseren van programma van eisen en regelgeving • Constructieve haalbaarheid van het ontwerp • Financiële haalbaarheid van ontwerp
Methode onderwerp-vraag-doel-relevantie Ik onderzoek of generatief ontwerpen kan worden toegepast bij een gebouwontwerp, waaruit een vertaalslag naar het productieproces kan worden gemaakt.
Ontwerpen met generatieve tools
5
Doelstelling Doelstelling van het onderzoek: Het uitwerken van een functioneel generatief ontwerp dat gekoppeld kan worden aan een productieproces. Doelstelling in het onderzoek: Meer inzicht krijgen in de mogelijkheden van generatieve tools en koppeling aan productieprocessen. Wetenschappelijke relevantie: Beheersing van generatieve tools in een ontwerpproces en sturing van productie. Maatschappelijke relevantie: Toegankelijkheid verhogen van generatieve tools. De productie van unieke gebouwen stimuleren.
Afbeelding: Voorbeeld van een op een script gebaseerd ontwerp voor een treinstation
6
Ontwerpen met generatieve tools
Onderzoeksvraag Welk programma is voor mij het meest geschikt om een functionerend generatief ontwerp te maken met de daarbij behorende koppelingen naar productieprocessen?
Deelvragen Welke programma’s zijn er? • Opsomming programma’s, bespreken van dit programma - mogelijkheden en grenzen. • De toegankelijkheid tot deze programma’s. Tutorials, trainingmogelijkheden. • De compatibility met andere programma’s, welke bestanden kunnen worden geïmporteerd? • Hoe kunnen de bestanden worden geëxporteerd? Welke architecten gebruiken generatief ontwerpen/tools • Hoe wordt generatief ontwerpen door architecten toegepast? • Hoe kijkt de `architectuur` tegen deze ontwikkeling aan? • Waarom passen architecten deze vorm van conceptueel ontwerpen toe? Hoe willen wij een ontwerp opbouwen en met welke methode, waarom juist deze methode? • Wat willen wij bereiken als ontwerp (referenties)? • Koppeling van constructieve analyses met generatieve tools of combinatie? • Uitwerken van gevelconstructie met de daarbij behorende details en constructieve eisen?
Ontwerpen met generatieve tools
7
Onderzoeksmodel
Probleemstelling
Toetsing van programma’s aan ontwerpeisen
Ontwerp
Goedgekeurd ontwerp
State of the Art
Programma’s
Exploratief programma onderzoek
Programma van eisen
8
Planning
September - Oktober • Titels van eerdere onderzoeken • Literatuuronderzoek • Documentatie • Programma’s • Maya/MEL • Rhinoceros/Grasshopper • Bentley’s Generative components • Paracloud • Maxscript • Onderzoek naar functies van deze programma’s. Oktober - November • 11 november Begincolloquium • Scripting leren • Mogelijkheden voor een ontwerpopdracht uitwerken November - December • Scripting leren • Concretiseren van ontwerpopdracht • Bepaling programma • Focus op ontwerp/gevel/constructie • Keuze van visualisatie model, VR, Rapid Prototyping December - Januari - Februari • Uitwerking scripten • Verslaglegging • Conceptvorming van ontwerpopdracht Maart - April • Testcase scripten uitwerken • Maquette bouwen van testcase • Vormbepaling van uiteindelijk station • Constructiesysteem bepalen • Tussencolloquium • Verslaglegging Mei - Juni - Juli • Constructiesysteem scripten • CAD/CAM tekeningen scripten • Productie van maquette mbv lasercutter • Verslaglegging Augustus - September • 3D modeleren/renderings maken • Aanzichten/Doorsnedes/Details tekenen • Presentatie voorbereiden • Verslaglegging Oktober • Eindcolloquium
Ontwerpen met generatieve tools
Ontwerpen met generatieve tools
9
Doelstellingen Eindresultaat: Conceptueel plan van een gebouw. De constructie wordt gegenereerd door de computer. De daarbij behorende details kunnen worden onttrokken vanuit het ontwerp. De doorsnedes worden verkregen en de daarbij behorende plattegronden. Constructieonderdelen worden verkregen d.m.v. scripts. De tekeningen voor de onderdelen zijn klaar voor een CAD/CAM proces. Persoonlijke doelstellingen Verdere uitwerking details. Gebouwelementen genereren en uitwerken. Resultaat (producten): • Presentatieposter 4/5 stuks • Gebouw met plattegronden • Doorsneden, details • Gebouwelementen eruit nemen • Vorming (vormstudie) • Gevel • Modellen: 3D & maquettes. • Optimaliseren van visualisering
• Begincolloquium: •
•
Tot het begincolloquium wil ik uitvinden hoe Rhinoscript/Grasshopper werkt en wat ik er mee kan bereiken. Tussencolloquium: Ik wil me gaan richten op het scripten van een dak voor een stationsoverkapping. Als locatie heb ik hier Eindhoven voor gekozen. De vorm van de overkapping wil ik produceren aan de hand van de verschillende verkeersstromen die zich op een station bevinden. Eindcolloquium: De overkapping verder uitwerken tot op detailniveau van de verschillende onderlinge aansluitingen. Proberen om de verschillende bouwdelen, door middel van scripten, per stuk te identificeren en definiëren zodat ze geproduceerd zouden kunnen worden.
10
Ontwerpen met generatieve tools
Deelvragen Welke programma’s zijn er? Rhinoceros Rhino kan NURBS curves, surfaces , solids en polygon meshes maken, bewerken, analyseren, documenteren, renderen, animeren en verplaatsen. De mate van precisie, complexiteit of maat zijn eindeloos. Speciale kenmerken van Rhino zijn: • Onbeperkte free-form 3D modelering tools welke je terug vindt in producten die 20 tot 50 keer meer kosten. Modeleer elke vorm die je kan wensen. • Nauwkeurigheid die nodig is om alles te ontwerpen, testen en analyseren, van vliegtuigen tot juwelen. • Kan samenwerken met alle andere ontwerp, CAM, analyse, rendering, animatie en illustratie software • Leest en repareert buitengewoon lastige IGES bestanden. • Toegankelijk en makkelijk te leren. • Snel, zelfs op een gewone pc of laptop. • Betaalbaar, korte leertijd en geprijsd als andere standaard windows software. Ondersteunde file formats: DWG/DXF(AutoCAD 200x, 14, 13, and 12 ), SAT (ACIS), DGN, FBX, X_T (Parasolid), 3DS, LWO, STL, SLC, OBJ, AI, RIB, POV, UDO, VRML, BMP, TGA, CSV (export properties and hydrostatics), uncompressed TIFF, STEP, VDA, GHS, GTS, KML, PLY, SketchUP, SolidWorks. IGES (Alias, Ashlar Vellum, AutoFORM, AutoShip, Breault, CADCEUS, CAMSoft, CATIA, Cosmos, Delcam, EdgeCAM, FastSurf, FastSHIP, Integrity Ware, IronCAD, LUSAS, Maya, MAX 3.0, MasterCAM, ME30, Mechanical Desktop, Microstation, NuGraf, OptiCAD, Pro/E, SDRC I-DEAS, Softimage, Solid Edge, SolidWorks, SUM3D, SURFCAM, TeKSoft, Unigraphics), NASA GridTool, Yamaha ESPRi, Tebis. Scripten: VBScript toont het meeste van de interne werking van Rhino, waardoor het mogelijk is om krachtige scripts en plug-ins te ontwikkelen. RhinoScript ActiveX object is toegankelijk voor veel verschillende programmeertalen zoals Visual Basic, Microsoft Word VBA, en Excel VBA.
3DS Max
Autodesk 3ds Max is een krachtige, geïntegreerde 3D modelerings, animatie en renderings softwarepakket. 3DS Max wordt gebruikt door de ontwikkelaars van games, film- en videokunstenaars, en 3Dliefhebbers om verbluffende resultaten te bereiken in minder tijd. De modelering is gebaseerd op modifiers. Ondersteunde Import Formats: 3DS, AI, DDF, DEM, DWG, DXF, HTR, IAM, IGES, IPT, LP, LS, MTL, OBJ, PRJ, SHP, STL, TRC, VW, WRL, WRZ Ondersteunde Export Formats: 3DS, AI, ASE, ATR, BLK, DF, DWF, DWG, DXF, HTR, IGES, LAY, LP, M3G, MTL, OBJ, STL, VW, WRL Scripten: MAXScript is een ingebouwde scripttaal, en kan worden gebruikt voor het automatiseren van repetitieve taken, het combineren van de bestaande functionaliteit op nieuwe manieren, de ontwikkeling van nieuwe tools en user interfaces en nog veel meer. Plugin modules kunnen volledig in MAXscript worden gemaakt.
Maya Maya is een programma dat veel vergelijkingen heeft met 3dsMax. Het Maya programma wordt door velen geprefereerd boven 3dsMax door zijn toepassingen en mogelijkheden in animatie en dynamica. De mogelijkheden in Maya zijn completer en toegankelijker dan in 3dsMax. Daarentegen is het ook een kwestie van de benadering van Maya dat het gebruik van dit programma stimuleert. De interface van Maya is gebruiksvriendelijker en de interne organisatie is meer toegankelijker
Ontwerpen met generatieve tools
11
dan bij Max. Grote producties als de Nike-commercials en enkele grote films van Pixar (I-robot), zijn deels gemaakt in Maya. De exportmogelijkheden van Maya naar andere autodesk programma’s zijn nog niet optimaal, wellicht omdat er 3dsMax en Maya door twee verschillende productieteams worden gerealiseerd. Daarnaast wordt het werken met NURBS in Maya ook ondersteund, de mogelijkheden die Rhino haalt met NURBS zijn ook te verkrijgen in Maya. Wanneer men met hoofdzakelijk NURBS werkt, prefereert de industrie Rhino boven Maya. We kunnen stellen dat Rhino meer als ontwikkelingsinstrument voor de industrie geldt, met de brede betrekking op ontwikkeling en Maya wordt gezien als het animatie-programma.
Bentley Generative Components GenerativeComponents is een parametrische CAD-software die is ontwikkeld door Bentley Systems. GC werd voor het eerst geïntroduceerd in 2003, werd steeds meer gebruikt in de praktijk (vooral door architecten rondom Londen) en werd commercieel uitgebracht in november 2007. Generative Components heeft een sterke traditionele basis van gebruikers in de academische wereld en op technologisch geavanceerde ontwerpbedrijven. GC streeft ernaar om parametrisch modeleren toe te passen in architectonische ontwerpen. Gebruikers kunnen de software bedienen door dynamisch te modelleren en het rechtstreeks manipuleren van de geometrie of door het toepassen van regels en het vastleggen van relaties tussen model-elementen, of door het definiëren van ingewikkelde forms en systemen uitgedrukt door middel van algoritmen. Ondersteunde file formats: DGN by Bentley Systems, DWG, STL (Stereo Lithography), Rhino. Scripten: De software maakt gebruik van een eenvoudige scripting taal, die de integratie met veel verschillende softwaretools, en het creëren van aangepaste programma’s door de gebruikers mogelijk maakt. Deze software wordt voornamelijk gebruikt door architecten en ingenieurs bij het ontwerpen van gebouwen, maar kan ook gebruikt worden om natuurlijke en biologische structuren en wiskundige systemen te modeleren.
Paracloud ParaCloud heeft een softwareoplossing die Microsoft Excel spreadsheets converteert tot een krachtige, generatieve, modellerings- en analyseprogramma. Ondersteunde file formats: ParaCloud beschikt over geavanceerde integratie met Rhino. Integratie met toonaangevende CAD-oplossingen, zoals AutoCAD, IntelliCAD, SketchUp is beschikbaar via DXF, obj en STL-bestanden. Scripten ParaCloud Modeler biedt een Scripting-zonder-Scripting benadering waarbij generatief- en performatief ontwerpen toegankelijk is voor alle ontwerpers.
12
Ontwerpen met generatieve tools
Welke architecten gebruiken generatief ontwerpen of generatieve tools? Greg Lynn is gespecialiseerd in computergestuurd ontwerpen. Hij gebruikt de dynamica om een vorm te creëren of te sturen. Hij begint met een basiselement en hierop positioneert hij enkele krachten die rechtstreeks op het element worden uitgeoefend. Deze krachten zorgen ervoor dat het basiselement zich ontwikkelt/vormt naar gelang de hoeveelheid en richting van de krachten. Het concept/basiselement ontwikkelt/evolueert zich naar gelang de krachten actief blijven.
Afbeelding : Form-finding door Greg Lynn.
Het MotormeCCa is gemaakt voor en door mensen die gefascineerd zijn door de versmelting van de mens en zijn snelheidsmachines, met een duidelijk zwaartepunt op het gebied van de TT races. Wie als bezoeker het MotormeCCA binnenstapt, stapt binnen in een dynamische ervaringsruimte. Het MotormeCCa heeft de vorm van een circuit, de bezoeker stapt binnen in de flow van energie, snelheid en beweging. Alle onderdelen van het MotormeCCa – heden, verleden, toekomst, horeca, merchandising en educatie – worden onlosmakelijk onderdeel van de flow. De energie stroomt voelbaar door het gehele gebouw. Het MotormeCCa is een soort ervaringstunnel waarin de ervaringen elkaar afwisselen in snelheid, intensiteit en onderwerp.
Afbeelding: Form-finding door Kas Oosterhuis.
Dit zijn nog maar een paar voorbeelden, NOX (Spuybroek), UN Studio, Z. Hadid en nog veel meer bureau’s zien meer en meer de mogelijkheden van scripten in.
Hoe wordt generatief ontwerpen door architecten toegepast? Form-finding. Door bepaalde randvoorwaardes in te voeren in een ontwerpproces kan een geautomatiseerde omgeving geformuleerd worden in een 3d animatie programma. Er kan een volume in deze omgeving worden gezet die door de vooraf geformuleerde voorwaardes vervormt wordt. Door de beginpositie, het volume of andere eigenschappen van het volume te veranderen ontstaat er elke simulatie weer een andere vorm die eventueel bruikbaar is voor een nieuw ontwerp. File to factory design. Een methode om gebouwelementen te definiëren en te exporteren naar een productieproces.
Hoe kijkt de ‘architectuur’ tegen deze ontwikkeling aan? Het genereren van vormen en concepten in computerprogramma’s is een ontwikkeling van de laatste jaren. De conservatieve architectuur vindt deze ontwikkeling een afbreuk aan het creatieve proces en vermindering van de diversiteit. Tegenwoordig zijn er twee stromingen in de architectuur herkenbaar, de zogenaamde conservatieve architectuur en de digitale architectuur. De digitale architectuur neigt naar een meer organische vorm, terwijl de conservatieve architectuur zicht vooral richt op orthogonale ontwerpen.
Ontwerpen met generatieve tools
13
Door digitale architectuur kunnen we complexere ontwerpen maken die de grenzen van het brein overstijgen. Deze architectuurstroming zal de komende jaren terrein winnen door de groeiende mogelijkheden van de productie en fabricage. Creativiteit is een belangrijk standpunt in de huidige discussie. In beide methoden is wel creativiteit aanwezig, alleen de creativiteit wordt anders geconsumeerd. De computer bepaalt niet de vorm, maar de ‘programmeur’ bepaalt de vorm. Ik verwacht in de komende jaren dat de architectuur zich nestelt tegen de informatica en dat er een nieuwe stroming ontstaat; interactieve architectuur waar de gebruiker meer zeggenschap krijgt over de inhoud en verschijning van het gebouw.
Waarom passen architecten deze vorm van conceptueel ontwerpen toe? Uit UN Studio, Design Models. • “Design models represent a new approach to architecture. Buildings and projects no longer matter. Rather, our focus is on models that are able to generate whole series of projects, models that are designed to be instrumentalized directly as they contain in their very cores the enduring ingredients of architecture.” Uit ONL, Hyperbody Logic. • K. Oosterhuis: “More than 10 years ago we jumped into the world of Non Standard Architecture. We no longer could imagine our design in simple diagrams inside our head. We jumped out of the box. The very act of intuitive sketching by Ilona and 3D modeling by myself brings about the unexpected. It was no longer possible to have the 3D image of the design in your head before visualizing it. Now we have learned to control the out of control intuitive and the unexpected. It is still there but we also have developed new techniques to communicate the complexity with the production. Now we feel completely comfortable with complex surfaces, since we know how to make it efficiently.”
Hoe willen wij een ontwerp opbouwen en met welke methode? En waarom juist deze methode? De vormgeving wordt verkregen door vanuit de omgeving van de bouwlocatie een aantal sturende parameters te halen. Dit kunnen verkeersstromen zijn, zichtlijnen, aantrekking door naburige bebouwing of bijvoorbeeld historische referenties van de locatie. Door het uiteindelijke ontwerp te koppelen aan een constructie analyse programma, zoals ANSYS of Marc Menthat, kan gekeken worden of het ontwerp ook technisch haalbaar zou zijn. Wanneer je in het ontwerpscript bouwelementen toe kan voegen, kan je een compleet uitgewerkte constructie laten tekenen. Je zou zelfs zo ver kunnen gaan om de afzonderlijke elementen er uit te pikken en de maatvoering ervan naar de fabrikant te sturen. Een soortgelijk ‘file2factory’ script is geschreven voor de geluidswal en de ‘cockpit’ van ONL langs de A2. Wat zijn de mogelijkheden van organische opgroei en is dit te implementeren in een ontwerp? Door delen van het script op zichzelf te laten reageren kunnen de gegeneerde elementen gebruikt worden als basis voor opvolgende gegenereerde elementen. Dit soort vormen zien we veelal terug in de natuur. Bijvoorbeeld de opbouw van de takken in een boom of schelpstructuren.
14
Ontwerpen met generatieve tools
Wat is scripten Script talen Computersoftware is niets anders dan eindeloze regels computercode. Een manier om toegang tot deze code te krijgen is met behulp van scripten. In een scriptopdracht kun je bepaalde functies van de software aansturen. Een scripttaal is een programmeertaal die software aanstuurt. Elk software pakket zal veelal zijn eigen programmeertaal gebruiken om dát uit te kunnen voeren wat van de software verlangd wordt. Vaak, maar niet altijd, heb je de mogelijkheid om met een programma te scripten. De meeste programma’s kennen een verschillende scripttaal omdat ze nu eenmaal voor een ander doel zijn gemaakt. Maar in de basis lijken de meeste scripttalen wel op elkaar.
Macro’s Veel technische tekenprogramma’s zijn gebaseerd op een command-line interface. Dit betekent dat je het programma kan bedienen puur en alleen met behulp van het toetsenbord. Je toetst de commando’s in en vervolgens voert het programma ze uit. Sinds de uitvinding van de computermuis zijn veel commando’s veel makkelijker in te voeren. In plaats van te typen: Line 0,0,0 10,0,0 kan je net zo makkelijk met het linecommando twee punten aangeven met de muis waartussen de lijn gevormd moet worden. Maar stel dat je de taak hebt gekregen om 30 tekeningen te openen, een lijn van 0,0,0 tot 10,0,0 moet tekenen en de tekening moet opslaan. Je zou al erg snel moe worden om elke keer opnieuw “_Line w0,0,0 w10,0,0” te typen. Kan dit niet geautomatiseerd worden? Hiervoor zijn macro’s uitgevonden. Een macro is een vooraf ingevoerde lijst met commando’s voor een programma om uit te voeren. Het Line commando is hier een voorbeeld van. Macro’s kunnen gebruikt worden om bepaalde processen te automatiseren die je normaal gesproken met de hand zou moeten uitvoeren.
Ontwerpen met generatieve tools
15
Een voorbeeld van een uitgebreide macro: _SelNone _Polygon _NumSides = 6 w0, 0,0 W10, 0,0 _SelLast -_Properties _Object _Name RailPolygon _Enter _Enter _SelNone _Polygon _NumSides = 6 W10, 0,0 W12, 0,0 _SelLast _Rotate3D W0, 0,0 W10, 0,0 90 -_Properties _Object _Name ProfilePolygon _Enter _Enter _SelNone -_Sweep1 _SelName RailPolygon _SelName ProfilePolygon _Enter _Simplify = Geen Enter
Afbeelding: 6 hoekige donut (torus) gevormd door het bovenstaande script.
De bovenstaande code zal leiden tot dezelfde zeshoekige torus opnieuw en opnieuw. Het is wellicht nuttig, maar het is niet flexibel. De code vertrouwd nog steeds op verschillende waardes die van te voren ingevoerd dienen te worden.
Scripts De beperkingen van macro’s hebben geleid tot de ontwikkeling van scriptingtalen. Scripts zitten tussen macro’s en echte programma’s en plug-ins. In tegenstelling tot macro’s kunnen scripts wiskundige operaties uitvoeren, evalueren ze variabele omstandigheden, reageren ze op hun omgeving en communiceren ze met de gebruiker. Scripts zijn tekst bestanden die regel per regel gelezen worden. In tegenstelling tot macro’s hebben scripts zeggenschap over de regels die worden uitgevoerd, hoe vaak deze worden uitgevoerd en in welke volgorde. Dit noemt men flow control. Flow control stelt een script in staat om bepaalde instructies te herhalen of over te slaan. De naam ‘script’ is afkomstig uit de podiumkunst. Waar het script bij bijvoorbeeld een film dient om de acteurs aan te sturen, stuurt het computerscript het bijbehorende computerprogramma aan.
16
Ontwerpen met generatieve tools
Waarom scripten Voor de vraag waarom scripting de basis is voor een nieuwe digitale tijdperk moeten we terug in de tijd. We exploreren waar cad-programma’s hun intrede deden en hoe deze de architectuur beïnvloeden. De eerste cad-applicaties in de jaren ’60-’80 waren cad-applicaties die eenvoudige transformaties aankonden met behulp van het invoeren van commando’s. Eenvoudige primitieven zoals lijnen en rechthoeken konden ook met deze applicaties worden uitgevoerd. De ontwikkeling van cad-applicaties zette zich voort en in het begin van de jaren 80 kwam Autodesk in de markt met de huidige Autocad-applicaties. In december 1982 kwam de eerste versie van Autocad op de markt. Deze versie was in staat om via commando’s eenvoudige primitieven te construeren. Autodesk zette de ontwikkeling van Autocad voort, met de intentie om het programma gebruiksvriendelijker te maken. In 1988 lanceerde Autodesk Autocad release 10, deze applicatie was de introductie tot een 3d-werkruimte, waar alle vorige edities nog alleen werkten met een 2d-omgeving. Autocad r10 was nu in staat om lijnen te tekenen in een 3d omgeving. De ontwikkeling van Autocad zette zich voort tot release 14, waar complexere elementen getekend konden worden en waar men relatief makkelijk 3d kon tekenen. Autodesk ging verder met de ontwikkeling van cad-applicaties, deze nieuwere versies moesten gebruiksvriendelijk worden en daarnaast een snellere performance hebben. Daarnaast moest een betere koppeling worden gemaakt met de architectuur. Het moest mogelijk worden om een bouwproject beter te beheersen in een cad-applicatie. Door de lancering van ADT, is een revolutie in autocad gaande. ADT is een programma waar elementen en blocks kunnen worden gekoppeld en worden getransformeerd. ADT is in staat om de koppeling van een 2dtekening eenvoudig om te zetten in een 3d-tekening. De koppeling tussen 2d en 3d en de invoer van een elementen-bibliotheek is een enorme versnelling in het tekenproces van een architectonisch ontwerp. De `opvolger` van ADT is Revit, deze applicatie is in staat om een gebouw te beheersen, met een complete elementen-bibliotheek en een continue bereikbaarheid van elementendata. Met Revit is het mogelijk om een ontwerp zowel 2d en 3d te beheersen. De ontwikkeling van cad-applicaties kunnen we globaal in deze blokken verdelen; • Het tekenen van eenvoudige primitieve commando’s, lijntekeningen. • Het tekenen van complexe primitieven met de daarbij behorende transformaties, 3dmodelling. • Het genereren van zeer complexe concepten ontwerpen, designing. Aangezien we het menselijk vermogen om complexe vormen te genereren willen uitrekken, hebben we hierbij computers nodig. De computer is in staat om complexe structuren binnen een relatieve korte tijd te genereren. Deze complexe structuren zijn niet meer met de hand te produceren. Om een stap verder te gaan dan Revit, denken we dat totaalbeheersing van een ontwerp mogelijk is met scripten. Totaalbeheersing in zowel orthogonaal als organisch niveau is mogelijk met scripten. Daarnaast is de data continu verkrijgbaar en transformeerbaar. Scripten heeft ook de mogelijkheid om omgevingen te simuleren, we kunnen hier direct het effect op een gebouw/ontwerp genereren. Behalve simulatie kunnen we een ontwerp ook vormgeven met behulp van dynamica en kinetica. Scripten maakt het mogelijk om meerdere handelingen in een ontwerp op hetzelfde moment uit te voeren, hierdoor kan er een enorme tijdwinst ontstaan ten opzichte van de huidige programmatuur.
Ontwerpen met generatieve tools
17
Keuze van Scripttaal Rhino/Rhinoscript Arno Mulderij:
De keuze van de scripttaal is afhankelijk van het type programma dat je wilt gebruiken. Je hebt een bepaald idee in je hoofd wat je wilt bereiken met je ontwerp. Om dit ontwerp uit te voeren met behulp van scripten zal je jezelf eerst de vraag moeten stellen hoe je dit ontwerp op de gebruikelijke manier uit zou werken. Als je een ontwerp in gedachte hebt met veel dubbelgekromde oppervlakken moet je dit niet met AutoCAD proberen uit te werken. Het gebruikte programma is dus afhankelijk van het ontwerp. Voor mijn ontwerp denk ik aan een vloeiende vormgeving. Dit is goed weer te geven met zogenaamde NURBS surfaces. Een NURBS (Nonuniform rational B-spline) is een lijn of oppervlak welke gedefinieerd wordt door een aantal punten. Deze punten oefenen een bepaalde aantrekkingskracht uit op de lijn of het oppervlak dat erlangs ligt. Hierdoor ontstaan gekromde lijnen en vlakken.
Afbeelding: NURBS Curve en NURBS Surface in Rhino
Rhino is opgebouwd rond dit type oppervlakken. Omdat ik een ‘free-form design’ ontwerp wil gebruiken voor een scriptopdracht is dit een goed programma om hiervoor te gebruiken. Ook heb ik al eerder met dit programma gewerkt waardoor ik weet wat ik er allemaal mee kan. Rhino kan vanuit vele andere programma’s bestanden importeren. Op deze manier kan ik bepaalde onderdelen eventueel nog uitvoeren met een ander programma. Rhino stelt de gebruikers in staat om plug-ins te schrijven voor het programma. Op deze manier wordt Rhino van buiten af gestuurd om bepaalde handelingen uit te voeren. Een voorbeeld van een plug-in voor Rhino is Grasshopper. Grasshopper is een gevisualiseerde versie van scripten. In plaats van regels te schrijven kun je met Grasshopper elementen in je tekening slepen en die op elkaar aansluiten. Er zijn talloze plug-ins en scripts te vinden voor Rhino wat me zal helpen het programma beter te begrijpen en gebruiken.
Afbeelding: Grasshopper plug-in.
18
Ontwerpen met generatieve tools
Maya/MEL Maurice Dominicus:
MEL staat voor Maya embedded language, MEL is een zeer krachtige programmeertaal die het programma Maya ondersteunt. MEL/Maya kan gebruikt worden als form-finding tool. Simulaties van een omgeving kunnen in Maya worden toegevoegd en er kan gesimuleerd worden hoe een concept reageert op weersomstandigheden en windcirculaties. Door dynamica op een gebouw toe te passen kan een ideaal gebouw worden gecreëerd, waar de minimale constructieve benodigdheden kunnen worden behaald. Voor mijn afstuderen wil ik een uniek element afleveren waarbij architectuur, computer gestuurd ontwerpen en visualisatie centraal staan. Voor mezelf heb ik enkele criteria opgesteld waaraan mijn scriptie moet voldoen en waar ik mezelf aan wil reflecteren. Ik wil een gebouw/element ontwerpen à la Kas Oosterhuis/Z. Hadid e.d. Mijn gebouw moet een ontwikkeling doormaken zodat het zich kan reflecteren met de bestaande omgevingen en de interacties. Wat ik wil bereiken is een multi-functioneel gebouw, dat ik herschrijf/ontwerp met behulp van scripten. De eerste stap is de ontdekking van een software-pakket waar scripten toegankelijk is en mij persoonlijk goed ligt. Tweede stap is om te kijken wat ik met het programma binnen een bepaalde periode kan bereiken. Wat zijn de mogelijkheden van de pakketten en van mijzelf en de grenzen. Het uiteindelijk ontwerp wil ik enigszins dynamisch ontwerpen met een heldere animatie van het ontwerp dat ik aan de begeleiders kan overleggen. Aangezien ik momenteel niet weet tot hoever ik deze dynamiek en animatie wil doorvoeren heb ik de software gekozen die de meeste mogelijkheden heeft tot deze sectoren. Daarnaast was een belangrijke argument dat grote architecten (bureau’s) met Maya/MEL werken. De koppeling van Maya met constructieve programma’s is uitstekend alsmede de koppeling met bouwfysische programma’s. In het verleden heb ik veel met Rhino gewerkt, deze applicatie heeft niet de mogelijkheden qua animaties en deformers als Maya, vandaar de overstap naar Maya. Een grote overeenkomst van Maya met Rhino is het gebruik en de manipulatie van NURBS. NURBS zijn makkelijk te genereren in Maya en spelen een hele grote rol in organische architectuur. Daarnaast zijn er verschillende plug-ins te verkrijgen die het gebruik optimaliseren.
Ontwerpen met generatieve tools
19
Reflectie scripttalen Rhinoscript Invoer van primitieven MEL werkt hierbij makkelijker dan Rhinoscript. Rhinoscript vraagt voor bijvoorbeeld een vierkante doos gelijk om de acht coördinaten. Dit werkt wellicht nauwkeurig maar het vergt veel invoertijd. Transformaties Commando’s als ‘move’ en ‘rotate’ zijn eenvoudig toe te passen in Rhinoscript. Toegankelijkheid van commando’s Door met de Scripteditor van Rhinoscript te werken kun je het gewenste commando uit een lijst selecteren om in te voeren. Er wordt gelijk weergegeven welke gegevens vereist zijn om het commando te laten functioneren. Studiemogelijkheden/tutorials In de helpfunctie van Rhinoscript worden alle commando’s uitgelegd. Hoewel het vaak nog steeds niet helemaal duidelijk is hoe je de commando’s moet gebruiken. Er zijn ook verschillende papers op internet te vinden over het gebruik van Rhinoscript. Grenzen/mogelijkheden Rhino is gespecialiseerd in NURBS curves en surfaces. Door met een script deze NURBS lijnen te definiëren kan er een blob-achtige structuur worden opgebouwd. Gebruik in de praktijk Veel voorbeelden die op internet staan van Rhinoscript zijn gericht op industriële vormgeving en niet zo zeer gericht op architectuur. Er wordt in ieder geval veel mee geëxperimenteerd door een grote groep gebruikers. En er worden regelmatig workshops georganiseerd door universiteiten en instellingen. Script gebaseerd op welke programmeertaal Rhinoscript is gebaseerd op Microsoft’s VBScript taal.
MEL Invoer van primitieven In MEL zijn primitieven goed in te voeren, we kunnen een uitgebreid commando gebruiken, waar we de values kunnen invoeren of we kunnen een primitieve genereren met de default settings. Transformaties De move, scale en rotate commando’s zijn goed bereikbaar. Deze transformatie-tools worden direct toegepast op de primitieven. Met het commando Xform kunnen meerdere transformaties in een commando worden verwerkt. Toegankelijkheid van commando’s Maya/MEL bezit over een arsenaal aan commando’s. Deze commando’s worden uitgelegd met voorbeelden in het MEL helpmenu. De opties (flags) van de commando’s worden alle breed behandeld. Studiemogelijkheden/tutorials
20
Ontwerpen met generatieve tools
MEL is te leren door het learning path van Autodesk te volgen, dit is een uitgebreide manual waar de mogelijkheden en grenzen van MEL worden uitgelegd. Daarnaast zijn er talloze tutorials van beginner tot advanced te vinden op autodesk-forums en andere forums. Grenzen/mogelijkheden Maya/MEL heeft de mogelijkheid om NURBS in te voeren. De mogelijkheden die Rhino heeft om NURBS te bewerken en te creëren, zijn niet idem aan de mogelijkheden van MEL/Maya. Maya is wat betreft NURBS minder uitgebreid. Maya specialiseert zich weer op dynamica. Gebruik in de praktijk Maya/MEL wordt vooral gebruikt bij het creëren van animatiefilms, daarnaast wordt Maya ook veel gebruikt in commercials. Grote architectenbureau’s als ONL gebruiken Maya als softwarepakket voor conceptvorming en visualisatie. Script gebaseerd op welke programmeertaal MEL is gerelateerd aan de C++ taal, Maya is opgebouwd met deze programmeertaal. MEL is eenvoudiger dan C++. Python is ook in Maya te gebruiken als programmeertaal. We kunnen plugins schrijven voor Maya in C++ taal, dus er zijn meerdere opties mogelijk om te scripten in Maya.
Ontwerpen met generatieve tools
21
Rhino Grasshopper
Afbeelding: Grasshopper logo.
Sinds 2008 is er voor Rhino3D een plugin te downloaden genaamd Grasshopper. Dit programma biedt alle mogelijkheden van scripten maar biedt het op een overzichtelijk manier aan. Zo kun je het programma gebruiken zelfs zonder dat je weet hoe je moet scripten.
Gebruik Wanneer je het programma in Rhino opstart verschijnt het onderstaande venster. Het scherm bevat een aantal verschillende elementen met als belangrijkste de ‘components panels’ en het ‘canvas’ waar de componenten op geplaatst worden.
Afbeelding: Grasshopper venster.
22
Ontwerpen met generatieve tools
Components panels Dit gebied bevat alle componenten uit verschillende categorieën. Alle componenten behoren tot een bepaalde categorie (zoals ‘Params’ voor alle primitieve types of ‘Curves’ voor alle curve gerelateerde tools)
Afbeelding: De verschillende primitieve onder de ‘Params’ categorie
Afbeelding: Het plaatsen van een curve component.
Om de componenten te gebruiken sleep je ze naar het canvas. Het bovenstaande toegevoegde element bevat zes verbindingspunten, drie rechts en drie links. De punten aan de linkerkant vragen om een input en de punten rechts genereren een output. In dit geval staat de V voor een verzameling punten die het curve component met elkaar moet verbinden, de D staat voor de graad van de kromming en is een getal. De P bepaalt of het begin en eindpunt van de curve met elkaar worden verbonden ja, of nee (true/false). Het resultaat van het component is een curve C met lengte L en domein D. Deze resultaten kunnen weer met een ander component verbonden worden om verder bewerkt te worden.
Ontwerpen met generatieve tools
23
Kleurcodering Wanneer je een component toevoegt verschijnt hij vaak in het oranje op het canvas. Dit betekend dat het component nog niet functioneert omdat hij input nodig heeft.
Afbeelding: Staat van de componenten
De eerste twee kleinere componenten links zijn parameter componenten die verwijzen naar primitieven. De donkergrijze bevat informatie over een primitieve en de oranje niet. De staat van het grotere oranje component is hiervoor uitgelegd, deze krijgt geen informatie en produceert ook niets. Wanneer een component grijs is functioneert hij en wordt er data verwerkt en uitput gegenereerd. Wanneer een component rood gekleurd is gaat er iets fout. Het component is verkeerd verbonden met een andere, of moet een bepaald type data verwerken waar hij niet toe in staat is. Wanneer er om punten wordt gevraagd en je verbindt het component met een uitput van een curve zal het component niets kunnen genereren.
Voorbeeld Het makkelijkst om de werking van het programma uit te leggen is met een voorbeeld. Om het programma onder de knie te krijgen heb ik zelf een bestaand constructiesysteem voor een glazen overkapping proberen te scripten. Ik heb dit bouwsysteem over een dakvorm geprojecteerd die ik in 3D Studio Max heb gemaakt. In dit geval ging het meer om het scripten van de constructie dan om het ontwerp van het station, dus heb ik een benadering gemaakt van het ontwerp waarnaar ik op zoek ben.
Afbeelding: Bouwknoop van Mero
24
Ontwerpen met generatieve tools
Het bouwsysteem bestaat uit stalen blokken die momentvast met stalen balken verbonden worden. Om te beginnen laat ik zien hoe het blok gevormd wordt. Ik heb in het script drie variabelen toegevoegd: de hoogte en breedte van het blok en de diepte van het terugliggende deel waar de balken worden bevestigd. Deze drie variabelen zijn aanpasbaar met behulp van sliders (schuiven). Deze sliders zijn verbonden met verschillende elementen die achtereenvolgens een aantal lijnen en een boog bepalen die de doorsnede vormen van een kwart van het blok.
Afbeelding: Sliders voor kenmerken van de blokken met formaten in meters.
Door dit deel twee keer te kopiëren en te spiegelen krijg je de totale doorsnede.
Afbeelding: Deel van de doorsnede.
Vervolgens kan je de complete doorsnede uittrekken over de hoogte die je het blok wil geven. Wanneer je de onder- en bovenkant vervolgens afdicht is het blok compleet.
Afbeelding: Van doorsnede tot compleet blok.
Ontwerpen met generatieve tools
25
Afbeelding: Vorm is geïmporteerd uit 3dsMax. Het rechthoekige gebied is een deel van de constructie waar later een maquette is gemaakt.
Om de knooppunten in het dak te bepalen laat ik Grasshopper een grid van 2x2 meter tekenen recht onder het dakvlak. In dit geval is dit redelijk eenvoudig vanwege het rechthoekige bovenaanzicht ervan. Vervolgens projecteer ik de punten van het grid loodrecht omhoog op het gekromde vlak. Het resultaat is 2925 punten geprojecteerd op het gekromde vlak. Op al deze punten kan ik een blok projecteren die ik met elkaar moet verbinden met een balk. Om zover te komen moet ik de punten met elkaar verbinden met een lijn zodat ik een grid op het dakvlak krijg van lijnen in de x-richting en y-richting. Over deze lijnen kan dan de doorsnede van de balken getrokken worden. Uiteindelijk wordt het frame bedekt met glazen driehoekige platen. Vanwege het free-form karakter van het dakvlak liggen de vier hoekpunten van elk framevak niet in hetzelfde vlak. Hierdoor moeten de vierhoekige vlakken opgedeeld worden in twee driehoeken.
26
Afbeelding: Compleet Grasshopper sheet voor het produceren van de blokken.
Afbeelding: Sliders om het formaat van de blokken aan te passen.
Afbeelding: Formaat van het grid en de projectie ervan op het dakvlak.
Afbeelding: De opbouw van de blokken uit punten, lijnen en een boog.
Ontwerpen met generatieve tools
Ontwerpen met generatieve tools
Afbeelding: Kopiëren, spiegelen, extruderen en afdichten van de blokvorm
Afbeelding: Kopiëren van de blokken naar de punten op het dakvlak
Afbeelding: Nummering van de verschillende blokken
27
28
Ontwerpen met generatieve tools
Afbeelding: Grasshopper sheet voor het produceren van de balken. Met een toevoeging voor het produceren van een tekening voor de lasercutter voor het produceren van een maquette
Afbeelding: Bovengenoemde lasertekening voor een maquette
Ontwerpen met generatieve tools
29
Afbeelding: Grasshopper sheet voor de glasplaten. Met een toevoeging voor het produceren van een tekening voor de lasercutter voor het produceren van een maquette.
Afbeelding: Bovengenoemde lasertekening voor een maquette.
30
Afbeelding: Maquette schaal 1/50.
Afbeelding: Impressie van ondersteunende kolommen.
Ontwerpen met generatieve tools
Ontwerpen met generatieve tools
31
Ontwerp Opdracht Als scriptopdracht heb ik gekozen voor een ontwerp voor de stationsoverkapping van het centraal station in Eindhoven. Een lichte draagconstructie met dubbelgekromde oppervlakken vraagt om veel bouwdelen met allemaal verschillende maten. Wanneer deze bouwdelen met behulp van een script gevormd kunnen worden, kunnen echter ook al deze verschillende maten achterhaald worden op een gestructureerde manier. Op deze wijze kan een koppeling gemaakt worden met het productieproces waardoor men een uniek gebouw krijgt zonder dat daardoor de kosten te hoog oplopen. Ik heb gekozen voor het ontwerp van een stationsoverkapping omdat je in een stationsgebied te maken hebt met allerlei verschillende verkeersstromen die elkaar kruisen. Deze stromingen en concentraties van verkeer vormen de basis waaruit het ontwerp ontstaat. Een associatie met free-form architectuur waar scripten van pas komt is dan snel gemaakt. Het gebouw volgt de stoming van het verkeer en zorgt ervoor dat de gebruikers in een bepaalde richting worden gestuurd.
Stromen In de huidige situatie kunnen de treinreizigers maar vanaf één kant het perron op lopen. Op deze wijze wordt er geen optimaal gebruik gemaakt van de perrons en zie je een te grote concentratie van mensen vooraan het perron. De verdeling van de passagiers in de treinen is dan ook niet goed. Nu moet ook iedereen van dezelfde route gebruik maken om het station te verlaten of om over te stappen.
Afbeelding: Huidige situatie van de verkeersstromen.
Wanneer je de verkeersstroom in de nauwe tunnel wilt beperken zal er een nieuwe overgang moeten komen tussen de verschillende perrons met een eventuele tweede uitgang. Deze verkeersbrug heb ik gesitueerd ter hoogte van de doorgang tussen de Kennedy toren en het VGZ kantoor. Op deze manier neemt het verkeer in de tunnel af en is er een snellere manier om van perron te wisselen wanneer je achteraan het perron uitstapt. Tevens ontstaat er een snellere route richting het universiteitsterrein wat elke dag voor een grote stroom passagiers zorgt.
32
Ontwerpen met generatieve tools
Afbeelding: Door het toevoegen van een loopbrug neemt het verkeer in de tunnel af en worden de passagiers beter verdeeld.
Niet alleen de loopbrug kan voor een beter verdeling van de passagiers zorgen. Ook de toevoeging van kiosken op strategische plaatsen trekt mensen aan om verder te lopen. Station Eindhoven heeft drie perrons. De buitenste twee zijn intercity perrons en de middelste is het perron voor de stoptreinen. Vooral op de intercityperrons is het zaak om de passagiers goed te verdelen vanwege de langere treinstellen en de drukke aansluitingen. Wanneer de kiosken verder op het perron staan moeten de klanten net iets verder lopen en blijft er genoeg ruimte vooraan het perron over.
Afbeelding: Plaatsing van de kiosken.
Ontwerpen met generatieve tools
33
Ik wil het dak en de draagconstructie zoveel mogelijk met elkaar integreren. Het dak loopt over in de wanden voor belastingsafdracht. Op dezelfde manier worden de kiosken toegepast om het dak te dragen. Net voorbij de trappen naar de passagierstunnel vloeit het dak naar beneden. Op deze manier ontstaat er een ondersteuning van het dak en een duidelijk gebaar richting de uitgang van het perron. Er zijn een paar plekken waar geen ondersteunende elementen aanwezig zijn. Daar probeer ik op dezelfde wijze als bij de trappen het dak over te laten gaan in ondersteunende kolommen.
Afbeelding: De dakvorm volgt de contouren van de treinen en laat zien waar de uitgangen en kiosken zich bevinden.
34
Ontwerpen met generatieve tools
Vormgeving De vormgeving van het stationsdak is gemaakt in 3ds Max. Dit programma beschikt over ‘modifiers’ die een rechte vorm kunnen afronden. Op deze manier ontstaan de blob-achtige vormen. Door de vorm op te bouwen uit rechte, vierhoekige vlakken ontstaat er na het afronden met de ‘meshsmooth modifier’, met een zogenaamde Catmull Clark verdeling, een vorm opgebouwd uit meerdere rechthoekige vlakken die de basis gaan vormen voor de stalen structuur. Doordat de vorm opgebouwd is uit rechte vlakken zijn de rechthoekige vlakken na het afronden, op een paar uitzonderingen na allemaal vlak gebleven. Dit heeft als positief resultaat dat de vlakken later niet opgedeeld hoeven worden in twee driehoeken. Dit scheelt in de kosten van productie en montage.
Afbeelding: Basisblok.
Afbeelding: Extruderen van de basisvorm.
Ontwerpen met generatieve tools
Afbeelding: Uittrekken van de hoofdvormen en de vlakken opdelen.
Afbeeldingen: Glad maken van de hoeken, stap 1
35
36
Afbeeldingen: Glad maken van de hoeken, stap 2
Afbeelding: Uiteindelijke vorm met hoofdzakelijke vlakke rechthoekige panelen.
Ontwerpen met generatieve tools
Ontwerpen met generatieve tools
37
Constructiesysteem De eerste poging om een constructie te scripten met Grasshopper was gebaseerd op een constructiesysteem voor regelmatig gekromde koepelvormige constructies. De vier balken komen hier recht op de knooppunten af, waarbij de hoek tussen twee balken altijd 90 graden is. Met een dubbelgekromd oppervlak, zoals die in mijn ontwerp voor de overkapping voorkomen, kan dus geen gebruik worden gemaakt van dit systeem. Bij het zoeken naar referenties kwam ik al snel een constructie tegen met enkele overeenkomsten met mijn eigen ontwerp: de overkapping bij de Expo in Milaan van Massimiliano Fuksas. Het gebruikte constructiesysteem is ontwikkeld door MERO. Het bestaat uit kom-vormige knooppunten die met bouten aan tussenliggende stalen liggers worden verbonden.
Afbeelding: Fiera di Milano, Expo in Milaan door Massimiliano Fuksas.
Afbeelding: Exploded view constructie
38
Ontwerpen met generatieve tools
Nadat ik wat meer informatie over het bouwsysteem had aangevraagd kon ik bepalen welke constructieeigenschappen uit mijn script gehaald moesten worden. Nog voordat ik de uitgebreide informatie had ontvangen had ik zelf al enkele ideeën uitgewerkt. Ik had al bijna de hele constructie door middel van een script vormgegeven. Op de precieze vormgeving van de knopen en balkaansluitingen na bleek mijn methode erg veel overeen te komen met de tekenwijze die het constructeursbureau voor de Expo in Milaan heeft gebruikt.
Ontwerpen met generatieve tools
39
Grasshopper scripting
Afbeelding: De vorm wordt in stroken opgedeeld om in Grasshopper te gebruiken.
De volgende stap in het ontwerpproces is om te bekijken hoe de vorm in Grasshopper is in te voeren. Hiervoor deel ik het geheel op in vierzijdige gebieden. Op deze manier zijn de gebieden makkelijk op te delen in rijen en kolommen van punten. De volgende stap is om lijnen te trekken over de kruispunten van elke rij panelen.
Afbeelding Lijnen getrokken over de kruispunten.
Voor rekenkundige redenen die verderop worden besproken is het belangrijk dat behalve de vlakken in het betreffende gebied, ook de twee aangrenzende vlakken worden meegenomen. Aan de rand van het gebied waar geen ander gebied aangrenst worden de laatste punten evenwijdig aan de bijbehorende vlakken gekopieerd.
40
Ontwerpen met generatieve tools
Afbeelding: Kopiëren en transleren van de grenspunten.
Voor de bewerking in een script is de tekenvolgorde van groot belang. Daarom moet er voor gezorgd worden dat alle lijnen dezelfde richting op worden getekend. De lijnen worden namelijk verderop in het script ontleed in punten en segmenten. Het eerst getekende punt zal het eerste punt worden in de verzameling van punten. Het als tweede getekende punt het tweede in de verzameling, enz.
Afbeelding: Alle punten in het gebied in de goede volgorde geordend.
Om dezelfde redenen moeten de afzonderlijke lijnen ook in een opvolgende volgorde geselecteerd en ingevoerd worden. Het eerste resultaat in het script is dan een verzameling punten genummerd van links naar rechts en van onder tot boven.
Ontwerpen met generatieve tools
41
De positie van elk afzonderlijk punt is nu bepaald. Deze informatie wordt nu gebruikt om de positie en richting van elke bouwknoop te bepalen. Op de punten van de buitenste rand na, worden alle punten omgeven door vier vlakken. De bouwknoop moet haaks staan op het gemiddelde van deze vier vlakken.
Afbeelding: Bepaling van de richting van de bouwknoop.
De richtingsvector van de bouwknoop wordt opgebouwd uit twee vectoren. Er worden twee vlakken gevormd die allebei door drie punten gaan, de oorsprong, punt X en punt X’Y dat in het vlak komt te liggen. Het gemiddelde van de normaalvectoren van deze vlakken geeft de richting van de bouwknoop aan.
Afbeelding: De bouwknopen richting gegeven door de normaalvectoren op het vlak.
De afstand tot het vlak kan bepaald worden door de bouwknopen over hun eigen richtingsvector te verplaatsen.
42
Ontwerpen met generatieve tools
Afbeelding: Richtingsvectoren en Bouwknopen.
De T-vormige balken tussen de knopen zijn opgebouwd uit twee delen. Een 50-50mm balk en een 20150mm balk. Door twee knooppunten met elkaar te verbinden ontstaat de richtingslijn van de verbindingsbalk. Deze lijn wordt geprojecteerd op de bouwknoop langs de richtingsvector van de bouwknoop.
Afbeelding: Afstand vanaf het centrum van de bouwknoop tot de balk.
De punten op afstand √(r2-(B/2)2) van het centrum van de bouwknoop worden met elkaar verbonden. Deze lijn vormt de basis van de balk. Door een doos van 50x50mm langs deze lijn te maken met als tweede richtingsvector de gemiddelde richtingsvector van de twee aanliggende bouwknopen ontstaat het eerste deel van de constructiebalk. Het tweede deel wordt op een gelijkwaardige manier gemaakt met de afmeting van 20x150mm.
Ontwerpen met generatieve tools
43
Afbeelding: Verplaatsing van basispunten ter grootte van afstand tussen glas en constructie.
De glasplaten worden met dezelfde basispunten gemaakt. De constructie zit aan de binnenkant van de vorm en de bekleding zit aan de buitenkant. De basispunten worden over de as van de knooppunten naar buiten verplaatst over een afstand die gelijk staat aan de afstand tussen de glazen bekleding en de staalconstructie ter plekke van de knooppunten. Door de vier hoekpunten uit te zoeken van een afzonderlijk vlak worden de hoeken van de glasplaten bepaald. Er wordt een vlak gemaakt van de vier punten. De randlijnen van dit vlak worden over een afstand X (waar X de halve afstand wordt tussen twee platen) over het vlak naar binnen verplaatst. De plaats waar deze lijnen elkaar kruisen bepalen de uiteindelijke hoeken van de glasplaat.
Afbeelding: Naar binnen verplaatsen van de buitenrand van de glasplaat.
44
Ontwerpen met generatieve tools
Constructietekeningen van de knooppunten Voor de fabricage van de knopen moeten er een aantal data bekend zijn: de hoek waarin de aangrenzende balk op het knooppunt komt en de locatie van het middelpunt van de balk, het punt waar de boutverbinding gemaakt moet worden. Per balkdeel, voor de bovenste laag knooppunten en de onderste laag, moet je ook weten hoeveel materiaal er van het knooppunt gefreesd moet worden. Ook hier wordt er gebruik gemaakt van de richtingsvector van de balken.
Afbeelding: Locatie van de boorgaten per balkdeel.
Afbeelding: Knooppunten op volgorde gerangschikt met bijbehorende snijvlakken en boor-assen.
Wanneer de locatie en positionering van ieder snijvlak en boor-as bekend is kunnen de knooppunten en de bijbehorende snijvlakken en boor-assen verplaatst worden op een recht grid waar de knooppunten in de goede volgorde geplaatst worden. De knooppunten staan nu allemaal loodrecht op het x,y-vlak. Door van ieder snijvlak en boor-as de richtingsvector en positie ten opzichte van het knooppunt op te vragen kan de invoer geformuleerd worden voor de freesmachine.
Ontwerpen met generatieve tools
45
Constructietekeningen van de balken De T-balken van de constructie bestaan uit meerdere delen. De T-balk is opgebouwd uit een stalen balk van 50x50 mm. Aan deze balk wordt een flens van 20x150 mm gelast. Om de flens aan de verbindingsknopen te bevestigen wordt er een koppelstuk aangelast van 50x50x250 mm.
Afbeelding: Balkdelen
De bouwtekeningen van de balken zijn iets eenvoudiger uit het 3D model te verkrijgen. Voor het 50x50 mm. deel van de balk is in feite alleen de afstand tussen de twee bovenste knopen nodig. De balk is namelijk recht afgesneden. De hoek waarin de balken op de knopen aansluiten wordt van de knoop gefreesd en niet van de balken. De flens moet echter uit een 20mm. staalplaat gesneden worden. Hiervoor zijn de aanzichten van deze platen nodig. Deze aanzichten worden uit het 3D model gehaald en netjes geordend en genummerd naast elkaar gezet. Door een kleine bewerking in het script worden de koppelstukken in de aanzichten van de balken getekend. Deze koppelstukken zijn namelijk niet in het 3D model opgenomen.
Afbeelding: Genummerde aanzichten van de balken inclusief koppelstukken.
46
Ontwerpen met generatieve tools
Afwijkingen
Afbeelding: Pentagon
Ter plekke van de ‘trechtervormen’ ontstaan er knooppunten met vijf aansluitingen. Voor deze punten is een apart script nodig. Doordat er vijf vlakken bij elkaar komen in plaats van vier ontstaat er ook een probleem bij het ‘glad maken’ van de vorm in 3D Max. De overige vierhoekige platen zijn zo goed als recht maar ter plekke van het pentagon moeten er een aantal platen opgedeeld worden in driehoeken, omdat de vier hoekpunten niet in hetzelfde vlak liggen. Door een krommingsanalyse van de vlakken in het script in te voegen kan er half-automatisch een selectie worden gemaakt van de vlakken die te krom zijn om uit één stuk gehaald te worden.
Afbeelding: Verdeling van de krommingsanalyse. Er liggen 4 vlakken ver buiten de gemiddelde kromming. De meeste platen hebben echter geen of nauwelijks kromming.
Ontwerpen met generatieve tools
Afbeelding: Krommingsanalyse in Rhino, hoe meer rood hoe meer vlak de panelen worden.
47
48
Ontwerpen met generatieve tools
Maquette De beste manier om te kijken of deze manier van scripten werkt is een praktijktest. Ik heb hiervoor een deel van de stationsoverkapping uitgewerkt tot een maquette. Ik kon maar een deel van het ontwerp uitwerken omdat de maquette anders veel te groot zou worden. De schaal van de maquette is 1/20 wat natuurlijk ook al groot is voor een maquette. De reden hiervoor is de mate van nauwkeurigheid die nodig is om te testen of alle bouwdelen wel op de goede manier in elkaar passen. De onderdelen voor de maquette zijn allemaal gefabriceerd met behulp van een lasersnijder. Hiermee is een enorme precisie te bereiken waardoor alle onderdelen precies in elkaar bleken te passen. De knopen zijn gesneden uit 6mm MDF, de balken zijn opgebouwd uit drie laagjes van 1mm karton. De glasplaten zijn gesneden uit 1mm kunststof. Op alle onderdelen wordt tijdens het uitsnijden hun nummer aangebracht. Op deze manier is later terug te lezen waar elk onderdeel geplaatst moet worden.
Afbeelding: MDF knooppunten en kartonnen balken. Beiden zijn genummerd tijdens het uit-laseren. De onderdelen zijn zwart geblakerd door de hitte van de laser.
De montage van alle onderdelen verliep erg vlot er waren geen problemen met de passing van de onderdelen. Het enige probleem van de maquette is dat hij niet ondersteund wordt door de constructie die er normaalgesproken omheen zit. De boog is na verloop van tijd ingezakt onder zijn eigen gewicht. Ik heb hiervoor helaas twee ondersteunende elementen voor aan moeten brengen.
Afbeelding: Voltooid model van de constructieboog.
Ontwerpen met generatieve tools
49
Reflectie Het gebruik van Grasshopper of andere scripting methodes is een zeer nuttige manier om repeterende handelingen in het modeleren in te voeren. Tijdens het formuleren van de constructiemethode en het bepalen van de parameters ben je eigenlijk bezig met een probleemanalyse. Hoe ga ik de constructie vorm geven? Wat zijn de eigenschappen van mijn constructieve elementen? Op deze manier krijg je een beter inzicht in de parameters die je ontwerp vormgeven en die de constructieve eigenschappen bepalen. Het invoeren van de geometrie waarover de constructie wordt vormgegeven kan op verschillende manieren gebeuren. Ik heb gebruik gemaakt van de knooppunten vanuit een 3D model welke ik uit 3D studio heb ingevoerd. In plaats van de bestaande knooppunten kun je ook een grid projecteren op de vorm zoals in het voorbeeld vanaf pagina 19. Op deze manier heb je een veel directere invloed op de afmetingen van de constructieve elementen. Doordat ik de knooppunten van het 3D model gebruikt heb bevat mijn methode wél de mogelijkheid om zoveel mogelijk platte vierhoekige vlakken te krijgen. Bij projectie ben je al snel gebonden aan driehoekige platen. Een manier om kosten te besparen is gebruik te maken van driehoekige platen in combinatie met vierhoekige platen zoals men in Milaan gedaan heeft. De opbouw van het constructiesysteem in het script kan ook op verschillende manieren gebeuren. Gebruik je de knooppunten als basis, de verbindingsbalken of juist de middelpunten van de dakvlakken? Al deze methoden vragen een ander constructienetwerk en afhankelijk van de vormgeving moet je bepalen hoe je de constructie opbouwt.
Afbeelding: Combinatie van driehoeken bij de kromme vlakken en vierhoeken op de vlakke dakvlakken
50
Ontwerpen met generatieve tools
Aanbevelingen In mijn ontwerp heb ik geen rekening gehouden met constructieve eisen van de overkapping. Wanneer ik een deel van de constructie invoer in bijvoorbeeld Matrix Frame blijkt dat de constructie niet sterk genoeg blijkt om zichzelf te dragen. Na gesprekken met iemand met meer constructieve kennis bleek dat de basisvorm niet echt gunstig gekozen is. Een samenwerking met iemand die meer kennis heeft van de krachtwerkingen in lichte draagconstructies zou een goede verbetering zijn van het ontwerpproces. De vorm van de overkapping zal dan gunstiger zijn en dan kan er ook worden gekeken naar probleemgebieden in de constructie. Deze gebieden zouden dan bijvoorbeeld afwijkende maten moeten krijgen ten opzichte van de rest van de constructie.
Ontwerpen met generatieve tools
51
Bronnen Papers • Jörg Schlaich, Hans Schober & Kai Kürschner (2005).
New Trade Fair in Milan - Grid Topology and Structural Behaviour of a Free-Formed Glass-Covered Surface
• Jaime Sanchez-Alvarez (2005).
Materialising Geometry: The Free-Form Reticulated Roof Structures for the New Milan Fair
• Helmut Pottmann, Yang Liu, Johannes Wallner, et al (2007)
Geometry of Multi-layer Freeform Structures for Architecture
• Yang Liu, Helmut Pottmann, Johannes Wallner, et al (2006)
Geometric Modeling with Conical Meshes and Developable Surfaces
• Kas Oosterhuis (2006) Swarm Architecture
Boeken • Lan, B.Q. (2006).
ONL, Hyperbody Logic. Beijing: United Asia Art& Design Cooperation.
• Berkel, B. van & Bos C. (2006).
UN Studio design models: Architecture, Urbanism, Infrastructure. London: Thames & Hudson
• Helmut Pottmann, Andreas Asperl, Michael Hofer, et al (2007). Architectural Geometry. Exton: Bentley Institute Press
• Mark Rappolt (2008)
Greg Lynn Form. New York: Rizzoli
• Kas Oosterhuis (2002)
Architecture Goes Wild, Rotterdam: 010 Publishers
• Kas Oosterhuis, Lukas Feireiss (2006)
Game Set and Match II, Rotterdam: Episode
• Lars Spuybroek (2004)
Nox: Machining Architecture, Ney York: Thames & Hudson
Internet • Kokkugia, Architecture & Urbanism, geraadpleegd op 23-09-09 http://www.kokkugia.com
• Grasshopper, Generative modeling for Rhino, geraadpleegd op 23-09-09 http://Grasshopper.Rhino3d.com/
• Object-e architecture: Voronoi Study, geraadpleegd op 23-09-09
http://object-e.blogspot.com/2007/03/voronoi-study-part01.html
• Theverymany, geraadpleegd op 23-09-09 http://www.theverymany.net/
• Rhinoscripting Resources, geraadpleegd op 23-09-09 http://Rhinoscriptingresources.blogspot.com/
52
Ontwerpen met generatieve tools
Bijlage Rhinoscript Onderstaand script vorm een rechthoekig flatgebouw. 1. Option Explicit 2. ‘Script written by Arno Mulderij 3. ‘Script copyrighted by Arno Mulderij 4. ‘Generatie van flatgebouw 5. ‘Script version donderdag 30 oktober 2008 20:38:34 6. 7. Call main() 8. 9. Sub main() 10. 11. Dim arrObjects, strObject 12. arrObjects = Rhino.AllObjects 13. If IsArray(arrObjects) Then 14. Rhino.DeleteObjects arrObjects 15. End If 16. 17. ‘het aantal kolommen en verdiepingen, vloerdikte en wanddikte 18. 19. Dim x, y, z, Vloerdikte 20. 21. x = Rhino.GetInteger(“aantal kolommen in x-richting”,3,2,40)-1 22. If IsNull(x) Then Exit Sub 23. y = Rhino.GetInteger(“aantal kolommen in y-richting”,3,2,40)-1 24. If IsNull(y) Then Exit Sub 25. z = Rhino.GetInteger(“aantal verdiepingen”,3,1,40)-1 26. If IsNull(z) Then Exit Sub 27. Vloerdikte = Rhino.GetInteger(“dikte van vloeren”,200,100,400) 28. If IsNull(Vloerdikte) Then Exit Sub 29. 30. ‘hoogte en dikte van kolommen 31. Dim kolomhoogte, xKolomdikte, yKolomdikte 32. kolomhoogte = Rhino.GetInteger(“hoogte van verdieping”,3000,2500,5000) 33. xKolomdikte = 200 34. yKolomdikte = 200 35. 36. Dim Kolom,pt1,pt2,pt3,pt4,pt5,pt6,pt7,pt8 37. pt1 = Array(0,0,Vloerdikte) 38. pt2 = Array(xKolomdikte,0,Vloerdikte) 39. pt3 = Array(xKolomdikte,yKolomdikte,Vloerdikte) 40. pt4 = Array(0,yKolomdikte,Vloerdikte) 41. pt5 = Array(0,0,kolomhoogte+Vloerdikte) 42. pt6 = Array(xKolomdikte,0,kolomhoogte+Vloerdikte) 43. pt7 = Array(xKolomdikte,yKolomdikte,kolomhoogte+Vloerdikte) 44. pt8 = Array(0,yKolomdikte,kolomhoogte+Vloerdikte) 45. 46. Kolom = Rhino.AddBox (Array(pt1,pt2,pt3,pt4,pt5,pt6,pt7,pt8)) 47. 48. ‘afstand tussen kolommen 49. 50. Dim xafstand, yafstand 51. xafstand = 4000 52. yafstand = 4000 53. 54. ‘kolommen kopieren 55.
Ontwerpen met generatieve tools
56. Dim i, j, k, arrStart, arrEnd 57. For i = 0 To x 58. For j = 0 To y 59. For k = 0 To z 60. arrStart = Array(0,0,0) 61. arrEnd = Array(i*xafstand,j*yafstand,k*(kolomhoogte+Vloerdikte)) 62. Rhino.CopyObject Kolom, arrStart, arrEnd 63. Next 64. Next 65. Next 66. 67. ‘Delete origineel van kolom 68. 69. Rhino.DeleteObject Kolom 70. 71. ‘Vloeren 72. 73. Dim Vloer,pt1v,pt2v,pt3v,pt4v,pt5v,pt6v,pt7v,pt8v 74. 75. pt1v = Array(0,0,0) 76. pt2v = Array(x*xafstand+xKolomdikte,0,0) 77. pt3v = Array(x*xafstand+xKolomdikte,y*yafstand+yKolomdikte,0) 78. pt4v = Array(0,y*yafstand+yKolomdikte,0) 79. pt5v = Array(0,0,Vloerdikte) 80. pt6v = Array(x*xafstand+xKolomdikte,0,Vloerdikte) 81. pt7v = Array(x*xafstand+xKolomdikte,y*yafstand+yKolomdikte,Vloerdikte) 82. pt8v = Array(0,y*yafstand+yKolomdikte,Vloerdikte) 83. 84. Vloer = Rhino.AddBox (Array(pt1v,pt2v,pt3v,pt4v,pt5v,pt6v,pt7v,pt8v)) 85. 86. Dim l, arrStart2, arrEnd2 87. For l = 0 To z+1 88. arrStart2 = Array(0,0,0) 89. arrEnd2 = Array(0,0,l*(kolomhoogte+Vloerdikte)) 90. Rhino.CopyObject Vloer, arrStart2, arrEnd2 91. Next 92. 93. ‘Delete origineel van vloer 94. 95. Rhino.DeleteObject Vloer 96. 97. End Sub
Afbeelding: Een door Rhinoscript gegenereerd flatgebouw.
53
54
Ontwerpen met generatieve tools
Afbeelding: Hetzelfde resultaat als het script dat hiervoor is beschreven in Grasshopper. Het definiëren van het script kost nog geen tien minuten.
Ontwerpen met generatieve tools
55