Surface Remixing with Dynamo

Buildz is very pleased to Welcome Andreas Dieckmann for this guest post.  I met Andreas in Spring of 2012 at the WoodStEx Autodesk European Student Experts conference in Spain.  This meeting was a exhausting and jittery time (the conference was sponsored by Redbull) and I had a pretty solid case of jetlag.  A handful of people also got food poisoning, so that was fun.  The students were fantastic, engaged and ready to learn, and Andreas was presenting these meticulous matrices of divide and repeat functionalities that blew me away.  Since then we have collaborated on presentations and been sharing work and ideas around parametrics, building technology, and teaching.  Andreas teaches BIM and Parametric Design as the Chair for Computer Aided Architectural Design (CAAD) at RWTH Aachen University / Germany.

Surface Remixing with Dynamo
Last year, I had the privilege and the pleasure to teach an AU2012 class together with Zach called "Echo Chamber: Complex Parametric Arrays in Autodesk Revit" ( At the very end of the class Zach showed a method to map the distance between two arrays of nodes of two separate divided surfaces on the second divided surfaces and create an entirely new form in the process. To make this work, he made use of an adaptive component, some reporting parameters, some formulas and the divide/repeat functionality introduced in Revit 2013:

And here's an image of the resulting form when you map a torus onto a sphere (BTW: My boss's first reaction was: "Oh nice, now we can also make turds with Revit!"):

Enter Dynamo. I had been following the project's progress ever since Zach posted about it in 2011 ( In early summer this year, I started working with Dynamo (again) on a regular basis when a bug was fixed that had previously made it rather hard to work with on a computer with German regional settings. I was thoroughly impressed with all the new functionality that had been added to it in a relatively short amount of time, so I decided I would create some examples for my upcoming parametrics class in fall. This is one of them.

Dynamo has a lot of nodes that allow you to work with XYZ coordinates. In order to learn more about how all of these XYZ nodes interact with each other I set out to recreate Zach's AU2012 TurdMakerTM without the use of smart (i.e. reporting parameters & formulas) adaptive components. I ended up not only doing that, but also creating some more functionality because it was just a matter of adding a few extra nodes. Here's an overview of what I came up with:

The basic idea of this definition is to select two faces, go through some additional settings and then have Dynamo create a new surface for you based on the inputs, hence surface remixing. Although I am not a big fan of the term “form finding”, this really is just a tool for form exploration (and maybe for learning a little something about Dynamo in the process).

So how does it work? First we need XYZs, so I built a custom node called XYZGridFromFace to create coordinates from both selected faces – it also provides us with the surface normals at those coordinates (which we might need later on):

We can then perform some basic operations on those XYZs: Invert the XYZs if we so choose – which is basically a point reflection through (0,0,0) – and scale them, i.e. increase the magnitude of one surface's XYZs versus the other surface's XYZs to make one surface more dominant than the other.

When combining the XYZs of both faces, we can choose between four different methods:
a) Add the XYZs of face #2 to those of face #1
b) Subtract the XYZs of face #2 from those of face #1
c) Use the cross-product of both XYZs
d) Measure the distance between a set of points on both faces and use it to drive the offset of new XYZs over the normals of face#2 (and that actually is Zach's original method described above)
To accommodate all of these options I used a set of nested IF nodes and Boolean switches – I hope that at some point in Dynamo's future this can be solved more elegantly with a switch that allows you to select several (custom) options.

As I had previously tried to recreate the functionality of the Parameter Values From Image plugin in Dynamo (, I thought I might as well include the option to further deform the resulting face based on an image in this definition as well. This includes the ability to invert and mirror (horizontally and vertically) the image data. Apart from all the above, there are also some other settings available like an overall scale for the resulting form and the ability to move the form in X, Y and Z direction.

Finally, the resulting XYZs are fed into a Watch 3D node. Once we've found some settings that we like, we can connect it to either one of two series of nodes, one of which will create a lofted form while the other will create quadrilateral adaptive components. The latter option should always work, but not every resulting form can be lofted as the resulting geometry might self-intersect. When the geometry cannot be created, try changing the loft direction (U vs. V) – sometimes it helps.

To wrap this up, here are some images of various resulting forms based on Zach's original setup (sphere & torus). As you can see, turds come in all shapes and sizes. ;-)

Download the full dataset here.

Watch this short video to see how to operate the files

Andreas Dieckmann teaches BIM and Parametric Design at the Chair for Computer Aided Architectural Design (CAAD) at RWTH Aachen University / Germany. You can find CAAD on Facebook ( as well as on YouTube (