Parametric Design

Shani Margulis
Extend
Published in
8 min readAug 8, 2017

Parametric design is not only for architects, designers and artists, while programming parametrically is not only for programmers. Besides, who’s to decide which one of these you are? Maybe you’re both. If you don’t have programming skills yet, don’t let that stop you from crafting parametrically. If you are a programmer, what’s stopping you?

What is parametric design?

Parametric design “is a process based on algorithmic thinking that enables the expression of parameters and rules that, together, define, encode and clarify the relationship between design intent and design response.” (Wikipedia)

This is a fancy way of saying that parametric design is drawing or crafting visualization with code. If code is a means of expressing mathematics, in parametric design we express mathematics visually in an artistic way. By using a mathematical definitions and mathematical constraints we create an on screen visualization of this math.

Parametric design as a field is aimed mainly at architects. As they craft our world they must take into account the physical constraints and limitations along with their design. The most intuitive “fit” for parametric design is while crafting a building — along with the physical constraints the world provides, which must be taken into consideration, we may add some design parameters. These will transform our building from an uninspired 3D block into a work of art. It allows us to include within our design not only the limitations of the world (physics and such), but also the artistic vision we would like to enforce.

From the programmer’s point of view, and since I don’t care much about buildings, we craft a virtual world. We may or may not define any physical or other constraints, but mainly we will craft our world, parametrically, the way we see fit.

It may sound limiting and even quite pointless at first. It feels to me that I’ve just described a graph, and I’m trying really hard to convince you that it is a really pretty graph. Well, in a way it is a graph. But once you get to understand the options this concept holds, you will find that your world has opened up, and everything is suddenly possible. And, you’ll be using code to create visual art (in 2D or 3D), and not your hands or artistic skill that you might not have.

Parameters in Nature

To get us going, and to emphasize the importance and usefulness of parametric design for both programmers and designers, I would like to go over some examples of parametric design in nature. You’ve probably seen it already — maybe you had no idea it was parametric, perhaps it will make sense now. Don’t panic, you need to be familiar with these concepts, not understand the bits and bytes of the math.

Fractals
A fractal is a never ending pattern which is created by repeating a simple process again and again in an ongoing feedback loop. Many patterns in nature are repeating patterns which create a fractal, and therefore may be converted into a mathematical representation of the pattern \ fractal.

Both the leaf and the snowflake have their own repeating patterns, which are the same pattern if you zoom in.

The golden ratio and Fibonacci sequence

“two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities.” (Wikipedia)

The ratio between two successive Fibonacci numbers, is very close to the golden ratio. A Fibonacci spiral is built according to this ratio. Both Fibonacci sequences and the golden ratio appear in nature more often than we realize.

A Fibonacci spiral

All of the following examples are built on top of a golden ratio spirals (even the seeds within a sunflower).

Voronoi diagram

“The partitioning of a plane with n points into convex polygons such that each polygon contains exactly one generating point and every point in a given polygon is closer to its generating point than to any other.” (Wolfram Mathworld)

A Voronoi tessellation emerges by radial growth from the seeds (points) outward. The final result is a Voronoi diagram.
The giraffe’s pattern is a Voronoi tessellation.
Dry mud is also a Voronoi tessellation.

I’m not a designer, but one of the things I have learned is that symmetry is something the eye favors. The above examples create symmetry and patterns which are “easy on the eyes”.

If you’re panicking at the moment remember this: you don’t have to understand the math, you only need to be familiar with the existing options. For instance, you don’t need to implement a Voronoi diagram yourself, someone has already done it. You do need to know that there is such a thing, and realize when is it relevant to your design and use it.

Using parametric design: The programmer becomes the designer, or is it the other way around?

Parametric design for programmers

Why? (Who’s to decide if you’re an artist or not?)

Parametric design allows you to create graphics or drawings. You don’t have to be able to draw yourself, you don’t have to be artistic or talented. You do need to write code, have a visual idea (even a basic one), and understand how to convey this idea using your code.

The idea doesn’t have to be a final or a complex one, or even fully-realized, as you may change so many parameters along the way, and get different results. You can play with it, and see for yourself which option is the best for you — allow it to evolve. You don’t have to explain your vision to anyone else, and you don’t need anyone else to express your visual ideas for you. It might sound far-fetched, or unnecessary, but parametric design allows you to create your own art, by yourself, and most importantly simply by writing code.

Parametric design for artists

Why? (You don’t need mediators)

Artists and designers, in a way, are the target audience of parametric design. As such, they don’t need an intermediate between them and their vision. A programmer cannot know exactly the designer’s intention and what is the image they have in mind. When it comes to parametric design the artist or designer should be the one in charge. In order to do that, they must be the person who writes the code.

Nowadays some of the tools for parametric design are not traditional programming, which makes it more accessible for people with zero programming knowledge. With some of the tools, you don’t have to have any knowledge in programming or scripting. With other tools, though you do write code, everything is nicely wrapped and simplified. In my opinion, with the available tools, and due to the downside of having mediators, learning how to use these tools for parametric design is totally worth it.

How?

Fractals are, as I understand it, the most basic parametric concept. It is a pure mathematical function, that with the right tools (and aesthetics) may be visualized beautifully. You don’t have to reinvent the wheel, the math is already there; you just need to visualize it and use it. Whether it is in 2D or 3D, you choose the most fitting visualization platform, and display it. Remember, though the function itself is endless, you decide what and when to display.

Two useful examples of such fractals are the fractal tree, and the Koch snowflake. I find them useful because both are easy to implement, yet the visualization output is not abstract at all. They help you get the basic understanding of programming parametrically, especially with the parametric output. They also don’t limit you in any way: you may change as many parameters as you like, and see the results visually (e.g. the thickness or the angle of the tree’s branches, in the fractal tree).

The fractal tree (left), Koch snowflake (right).

Getting started

Learn your parametric model. Understand where the parameters are and their impact on the model. It takes time to understand the math that is required, but it will become quite basic once you do. Everything is made out of common shapes (spheres, squares, etc.). There are some contour lines which you’ll need to mirror or rotate; maybe lines on which you’ll need to place other shapes in order to create a complex surface. You should try to break it down into the most basic building blocks of parameters and the math which is relevant to your model.

Take seashells as an example: each seashell is built on top of a golden ratio spiral. On top of that spiral, we may connect ellipses of different sizes in order to create a seashell. Manipulation of the location of the spiral on the z axis will allow us to change the shape of the spiral from a “flat” one, into a cone-shaped spiral, and so on.

Seashells are just the tip of the iceberg. Any object may be modeled parametrically, if we break it down correctly.

These seashells were parametrically generated with a Grasshopper code I wrote. With different parameters, I can generate completely different seashells.

Toolkit

Explaining how to use the toolkit is beyond the scope of this post. Also, there are many more tools out there besides the ones I’m using. I will give you a brief intro for two tools: Processing, and Grasshopper.

Processing

Processing is an open-source (and free) sketchbook and language which allows you to code within the context of the visual arts. One of its goals is to allow non-programmers to start programming aided by visual feedback.

Processing is built on Java, but uses a simplified syntax. There are also processing libraries for both Python and JavaScript.

Processing Website: Tutorials and documentation

Open Processing: This website contains processing projects, as well as their code. It’s a great place to get inspired by others.

Grasshopper (for Rhino 3D)

Rhinoceros is a 3D computer graphics and computer-aided design (CAD) application. Grasshopper is an amazing tool for Rhino 3D. It’s an algorithmic editor which allows you to work with most of the functionality of Rhino.

Some knowledge in Rhino will be very helpful before you get started with Grasshopper, as Grasshopper uses Rhino’s functionality for parametric design.

Though Grasshopper is free, Rhino is not; but you may use Rhino for free for 90 days.

Introducation to Grasshopper (A video tutorial): https://vimeopro.com/rhino/grasshopper-getting-started-by-david-rutten

Paramarch YouTube channel also have wonderful Grasshopper tutorials: https://www.youtube.com/channel/UCk-taU3sDSSyM6qehAJmTRg

There are many possibilities in parametric design. It is a magical playground which allows us to create stunning visualizations, and the only limitations are the ones of our imagination!

--

--