
colidescope
/guides/ intro-to-computational-design

colidescope
/guides/ intro-to-computational-designIntro to Computational Design
This guide will introduce you to the exciting field of computational design and show you some of the tools you can use to create your own computational workflows
¶The role of Computers in Design
Computers have been integral to the design profession since the emergence of the personal computer in the early 1980s. Nowadays, nearly all design professionals rely on specialized software like AutoCAD, Revit, Solidworks, and Rhino to do their day to day work. These applications offer graphical user interfaces (GUIs) which abstract away the underlying computer code, making the software easier to use but also limiting its flexibility.
¶The rise of Computational Design
Computational design goes one step further. Beyond just using off-the-shelf software packages, computational designers write code or use other programming tools to either customize existing tools or create entirely new ones tailored to specific design needs. While computational design requires some level of programming knowledge, you don't have to be a coding expert to get started. You also don't need to code an entire CAD software just to test out an idea. These days, most CAD software allow for running custom code through virtual code editors and custom plugins, so you can start creating computational design workflows without a single line of code (or with just a single line of code). Once you learn the basics, you can decide whether you want to invest more time to learn more and become a better programmer, at which point the opportunities and resources available to you are almost boundless.
¶What do computational designers do?
Computational design is a rapidly evolving field with various applications across the architecture, engineering, and construction industries. Some of the most prominent use-cases include:
¶Parametric design
Traditional design software represent designs as fixed two- or three-dimensional objects. With parametric design, we represent the process to create a given geometric solutions as a sequence of smaller operations (this sequence of steps is sometimes called a "workflow"). Representing a design this way allows the designer to expose certain parameters that can be used to adjust the design. This means the model can be adapted to changing conditions or requirements without needing to rebuild the entire model, which can save a great deal of time and effort.
¶Formal complexity
Traditional design tools require you to model the geometric form of a design manually using a set of tools. This means there is a limit to the formal complexity that can be represented, and each design needs an equal amount of effort to generate. With computational design, instead of manually playing out a set of operations for each design, we encode those operations using a computer programming language like Python or a visual programming tool like Grasshopper. This allows us to run a large number of operations quickly and automatically, which can be used to generate designs of much higher formal complexity than what can be efficiently created by manual methods. If an approach is generalizeable, it can even be developed into a custom tool that can be applied to any input geometry (for example the triangulated facade system in the image below).
¶Design automation
Computational design workflows can be used to automate repetitive tasks in a design process, allowing for more efficient workflows. Advanced algorithms like optimization and machine learning can even generate and analyze a large number of potential designs and automatically deliver the best solutions.
¶Performance-driven design
Computational design methods allow for seamless integration with another application of computation for design - computer-driven simulation. Connecting a computational workflows to a simulation software can allow for exciting applications such as automatically optimizing the form of a building to maximize daylighting while minimizing solar gain, or optimizing the structure of a tower based ona set of forces.
¶Tools for Computational Design (welcome to the jungle)
To start to utilize computational design in your own design process, you need a new set of tools, as well as a new set of skills. Although there are now a variety of different tools out there you can use for computational design, in this set of guides we will focus on the 3d modelling tool Rhino and Grasshopper - a visual programming language built for Rhino.
Rhino and Grasshopper are industry standard software used across a number of design disciplines from jewelry design to interior and building design. One big reason for Grasshopper's popularity is that it does not require writing any code, which can be daunting for designers starting out with computational design. This makes it easy to get started with simple workflows before committing the effort to learning a more robust programming language like Python.
While being a relatively easy tool to get started with, Grasshopper is also extremely flexible and extensible. Not only does it support the development of custom plugins but the integration of code in several languages including Python. This means Grasshopper can be both the first tool you learn, as well as the platform that continues to support your projects as they grow in complexity. These features have made Rhino and Grasshopper the go-to platform for computational design in both research and practice (and is the reason the author has been using these tools for over a decade).
What's next
The following guides will introduce you to the basics of both Grasshopper and Python, focusing specifically on their applications for computational design. Here are some guides and webinars you can check out next: