The Dynamo team is 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” (
http://au.autodesk.com/au-online/classes-on-demand/class-catalog/2012/autodesk-revit-for-architects/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
(http://buildz.blogspot.de/2011/10/dynamo-hum.html). 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
(
http://autodeskvasari.com/forum/topics/parameter-values-from-image-for-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 (
https://www.facebook.com/pages/CAAD/252048391538317) as well as on YouTube (http://www.youtube.com/user/caadtv).