Topic outline

  • Studio curriculum includes extensive skill-building tutorials focused primarily on Rhino, Python and Grasshopper. These skills are a prerequisite in order to approach the design task from the point of view of algorithmic design and are essential for the successful completion of the studio. In the studio, we will teach them from scratch through a series of intensive hands-on scripting tutorials accompanied with individual assignments.


    What is algorithmic design?


    Algorithmic design explores design methodologies which heavily employ digital data structures and algorithms.

    Since the Renaissance and Leon Battista Alberti’s book “De re aedificatoria” from 1452, architect was defined as an author of the building solely based on his deliberate action of drawing up the design. Drawing itself became not only an authorship claim, but also an indispensable design tool for centuries to come. To build was to draw, and without a prior drawing, no building could be executed. Drawing became synonyms with the design, and design synonyms with the building. This rather simplified viewpoint neglected all the complexities of a large-scale building endeavor, be it a cathedral, aqueduct, a palace or urban-fortifications. In the idealistic, individual-centered philosophy of the Renaissance, only the design mattered, and the design was envisioned by a single creative mind through the means of a drawing. This position was only strengthen after the invention of the printing press in the late 15th century, little after Alberti published his book. Now drawings and designs they represent could be reliably reproduced and distributed to masses.


    Today, computers became ubiquitous tools used by designers and architects. Still, to a large extent they are still being used as digital stand ins for drawing implements used for centuries: rulers, compasses, protractors and pantographs. But computers have much more to offer us. Their inbuilt Von Neuman architecture is used to process data as well as code instructions which operate on that data. Together with inventing a calculating machine, we invented formal languages with which we can communicate with them. It was the first time in history that we invented languages to communicate with machines.


    This enables us to use computers not only as drawing implements, but actual, programmable drawing agents themselves. This “agency” of the computer enables us to explore designs previously exclusive to Nature herself.


    Computational topics


    • Grasshopper basics

    • Rhino Python basics

    • Vectors, fields, attractors, sampling

    • Pattern systems, cellular automata

    • Particles and forces

    • Solvers and optimization strategies 


    Grasshopper - Plugin References


    • Plethora-Project.com is an initiative to accelerate computational literacy in the frame of architecture and design. It aligns with the "show me your screens" motto of the TopLap live-coding group attempting to get rid of Obscurantism in digital design. Since 2011, the Plethora Project has been posting over 200 video tutorials on Vimeo and YouTube. The videos are a contribution to the community that provided many of the open source tools available to the public. The tutorials cover issues of programming and computational design issues in a diverse range of software.

      An extensive introduction to Rhino Python in PDF or hyper-text format can be found on Rhino Python Guides website.

      TUTORIAL 01: INTRO
      TUTORIAL 02: RHINO REFERENCE
      TUTORIAL 03: LOOPING
      TUTORIAL 04: CONDITIONALS
      TUTORIAL 05: FUNCTIONS
      TUTORIAL 06: CLASSES
      TUTORIAL 07: EXAMPLE 01
      TUTORIAL 08: CALLING CLASSES
      TUTORIAL 09: LISTS
      TUTORIAL 10: VECTORS
      TUTORIAL 11: TANGENTS / CURVE PARAMETERS
      TUTORIAL 12: EXAMPLE 02
      TUTORIAL 13: GRASSHOPPER AND PYTHON IN RHINO 5

      TUTORIAL 14: PYTHON IN GRASSHOPPER 1 - KOCH CURVE
      TUTORIAL 15: PYTHON IN GRASSHOPPER 2 - RECURSIVE AGGREGATION


    • Plethora-Project video tutorials on Grasshopper:

      TUTORIAL 01 : INTRO
      TUTORIAL 02 : DATA MATCHING
      TUTORIAL 03 : LISTS AND SORT
      TUTORIAL 04 : CULL / DISPATCH
      TUTORIAL 05 : SHIFT LIST
      TUTORIAL 06 : SERIES / RANGE
      TUTORIAL 07 : GRAPH-MAPPER
      TUTORIAL 08 : FUNCTIONS AND ATTRACTORS
      TUTORIAL 09 : EXAMPLE 01
      TUTORIAL 10 : VECTORS 01
      TUTORIAL 11 : VECTORS 02
      TUTORIAL 12 : DATA TREES
      TUTORIAL 13 : VORONOI AND COLOR GRADIENTS

      KANGOROO TUTORIAL 01 : INTRO

    • Course details

      • 6h 24m
      • Beginner + Intermediate
      • Updated: 10/26/2018

      Algorithmic modeling is where design and programming intersect. Grasshopper—a plugin for Rhino 3D—is a graphical algorithm editor that allows you to create complex 3D models with less grunt work. The resulting designs are both sophisticated and flexible. In this course, artist and programmer Chris Reilly introduces advanced math techniques and fully-developed hands-on projects that help you understand how to make the most out of the parametric design tools in Grasshopper. See how to build a flexible product design for mass production with a parametric design algorithm. Plus, learn how to use plugins like Ladybug to model big data sets, generate recursive patterns with scripting, and build geometric patterns that auto-tessellate.

      By the end of the course, you'll see how even basic literacy in Grasshopper can be applied to developing projects for art, manufacturing, architecture, and design.


      Learning objectives

      • Working with algorithms
      • Modeling a base profile
      • Extruding elements
      • Finishing an algorithm
      • Planning for mass production
      • Customizing Grasshopper
      • Scripting with Python and Visual Basic .NET
      • Modeling data with Ladybug
      • Creating a tiling grid
      • Tiling 3D objects
      • Using reflection symmetry and mirroring to repeat tile
      • Tessellating tile in any direction

    • Course details

      • 5h 12m
      • Beginner + Intermediate
      • Released: 8/8/2018

      Grasshopper allows designers to perform graphical, component-based algorithmic modeling in Rhino. Python extends this functionality, allowing you to create custom scripts for Grasshopper and perform more complex workflows by working directly with the Rhino API. This course introduces the Python programming language to designers who want to do more with Grasshopper. Learn the basics of Python, including variables, data types, conditionals, and loops, and discover how to import additional libraries to extend Grasshopper. Instructor and computational design expert Jeremy Graham then introduces workflows for lofting, sorting, and baking geometry in Grasshopper—using powerful and fast Python scripts that push the boundaries of this visual programming tool.


      Learning objectives

      • Python components
      • Accessing the Rhino API
      • Python programming basics
      • Importing modules and libraries
      • Grasshopper workflows
      • Evaluating surfaces
      • Creating and splitting surfaces
      • Transforming geometry
      • Baking geometry from Python into Rhino
      • Adding text objects
      • Exporting rendered frames for animation

    • There are many online resources for learning Python. They are usually organized as step-by-step text or video tutorials. Some of them even offer a browser-based IDE (Integrated Development Environment), basically an editor that allows you to directly execute Python code (like Codecademy). Rhino 5 also comes with Python editor pre-installed.



      Codecademy

      “Perfect for absolute beginners. Their free code tutorials are very popular, and for good reason. In this tutorial, you'll get a good idea of what it's like to code Python by having some free, hands-on lessons where you actually get to write some code.”

      https://www.codecademy.com/learn/learn-python


      Google's Python Class

      “Great resource for someone looking to get a professional take on the learning the language. The class isn't for complete coding beginners, but those with a little coding knowledge will be able to learn Python using the videos, lectures, written materials, and code exercises that Google provides in this course.”

      https://developers.google.com/edu/python/


      A Byte of Python

      “Free book on programming using the Python language. It serves as a tutorial or guide to the Python language for a beginner audience. If all you know about computers is how to save text files, then this is the book for you.”

      Download PDF

      https://www.gitbook.com/book/swaroopch/byte-of-python/details

      Web version

      https://python.swaroopch.com/


      TutsPlus

      “This TutsPlus tutorial provides you with dozens of different resources that can be used to learn Python, and it even gives you a syllabus so you can be sure to know what resource to use, and at which point in your coding journey you should use it. Perfect for both coding newbies and code veterans.”

      https://code.tutsplus.com/articles/the-best-way-to-learn-python--net-26288



    • File icon
      Mathematical Principles of Computational Design - 2020 DRAFT File
      Not available unless: You are a(n) Student


    • DWG file containing a base plan in vector format of Helsinki and surrounding area. It can easily be opened in Rhino and contains following layers:

      • roads in three hierarchies
      • parks
      • water coastlines
      • building outlines
      • railways



    • The reality mesh model

      This model allows you to examine Helsinki as it was in summer 2017 and visit places that you might not think to go to otherwise. You can explore the outer islands of Helsinki or find your home building, for example. The model is based on aerial photographs and includes all the stationary objects in the city at the time of photography, such as buildings, cars and ships. The only thing you need to view the model is an up-to-date browser.

      https://kartta.hel.fi/3d/mesh/

      https://kartta.hel.fi/3d/mesh/Kalasatama/


      The Helsinki city information model

      The city information model allows you to view not only the city’s buildings and information on them, but also the city’s terrain model. Thanks to the terrain model, buildings are presented at their correct elevation. You can search for buildings by address or properties. Clicking on a building allows you to access its property data, such as the year of construction and number of floors. You can view buildings textured or untextured. For viewing the terrain model, you can choose between an open street map view and a view based on aerial photographs.

      https://kartta.hel.fi/3d/#/


      Model download as OBJ

      Download the model as open data from a map view here. Go to Layers and select 3D City Models -> Triangle Mesh Model -> Triangulation mesh model, obj (2017). Then click on the map to download the part of the city model. OBJ models can be imported into Rhino as textured meshes. L in the name of the model stands for the level of detail.

      https://kartta.hel.fi/

      The same model parts can be downloaded over this site as well (but no nice preview):

      http://3d.hel.ninja/data/mesh/