From the 1869 paper by James Clerk Maxwell On reciprocal figures, frames and diagrams of forces :

…to construct the Polygon of Forces, by drawing in succession lines parallel and proportional to the different forces, each line beginning at the extremity of the last. If the forces acting at the point are in equilibrium, the polygon formed in this way will be a closed one.

Applications of such reciprocal force diagrams include the method of *graphic statics*, and also *thrust network analysis *(see Block and Ochsendorf 2007) for the form-finding of masonry vaults*, *in which the planar reciprocal network corresponds to the *horizontal* equilibrium of the nodes.

Kangaroo can generate structures in static equilibrium in a simple and intuitive way using dynamic relaxation. Once we have this equilibrium structure we can rearrange the force vectors to form such a reciprocal diagram. When the structure is modelled as a mesh I found there is a nice easy way to do this rearrangement also with Kangaroo: *Scale the edges of the mesh so that their length corresponds to the force along that edge, then for each face, take the start points of its edges and just pull them together with attraction forces, but keeping the edge lengths and orientations fixed (ie allowing only pure translation)*. If the forces are balanced (which they will be if the simulation has stopped moving) then everything matches up as neatly closed polygons in the resulting reciprocal diagram. We can also optionally rotate the edges by 90° before pulling them together, which reduces the distance they have to move.

*Grasshopper definition can be downloaded here*

(Note that unlike the thrust network analysis approach which actually uses the reciprocal diagram as part of the process of generating the equilibrium structure, here I am just showing a way to generate such a reciprocal diagram from a structure *after* we have found its equilibrium. So in this case it is used not as an essential step, but as an alternative visual representation which I think can be quite revealing about the behaviour of the structure.)

In the special case where our structure has been form-found by treating the edges of a mesh as zero-rest-length springs of uniform stiffness, this generation of the reciprocal figure becomes even simpler still. Recall that the force in a spring is proportional to its extension relative to its rest length. If the rest length is zero, then the length* is* the extension, so the edge lengths already correspond to their forces and there is no need for any scaling step (another way of looking at this is that zero rest length springs of the same stiffness correspond to constant *force-density* elements).

This lead me to thinking about the equivalent for tensile structures. If we relax the edges of a mesh with a non planar boundary, we can get a tensile network in space. Here because the only forces in the system are in the edges themselves (unlike the compression shell example, where there is also a vertical load vector on each point), we can actually form the reciprocal force diagram in 3d space without having to project to the plane. The reciprocal diagram is then another stable 3d tension structure of zero-rest-length springs.

(if you focus on a single edge, you will see that they do not rotate or change length, but only translate)

The word *reciprocal* is also used in a quite different context to refer to frame structures of mutually supporting elements, also sometimes called nexorades (which I explored a bit here).

As I was finding these reciprocal force diagrams, I noticed that as the lines were moving from the triangulated tension structure to its reciprocal (in the force diagram sense), the intermediate stages actually bore some resemblance to such reciprocal structures (in the nexorade sense). As shown the video above, by adding another force to keep the lines pulled onto each other while moving between the 2 forms, this can be emphasized even more, and means that the intermediate networks also form surfaces.

This suggested to me a connection to *Bonnet rotations* and *associate*, or *adjoint* families of minimal surfaces – see 1, 2, 3 for some more info on these (this also ties back in with my old interest in complex analysis).

The work of Pinkall and Polthier uses *nonconforming triangulations* for performing these Bonnet rotations, as well as describing the now widely used cotan weighting scheme for calculating discrete minimal surfaces. Kangaroo does now contain an option for such cotan weighted mesh smoothing, but this was not actually used in generating the mesh in the video above, because of how using uniformly weighted zero length springs simplifies the transition to the reciprocal diagram described earlier. However, because I have performed a remeshing so that the mesh triangles are all similar, the difference between these is greatly reduced.

Open question – what sort of linkages might allow a physical realization of these Bonnet rotations as an actual transformable structure?

Coming back to compression structures for a moment – in the last few years there has been something of a resurgence of interest in this area, and some great work not just from architecture and engineering departments, but also from the geometry processing/graphics side, and I think it is very exciting to see these disciplines coming together more.

Some recent papers that I have particularly enjoyed:

On the Equilibrium of Simplicial Masonry Structures by De Goes, Alliez, Owhadi, Desbrun

Computing Self-Supporting Surfaces by Regular Triangulation by Liu, Pan, Snyder, Wang, Guo

The use of a particle method for the modelling of isotropic membrane stress for the form finding of shell structures by Aish, Joyce, Malek, Williams

Form-finding with Polyhedral Meshes Made Simple by Tang, Sun, Gomes, Wallner, Pottmann

Design of Self-supporting Surfaces by Vouga, Hobinger, Wallner, Pottmann

Interactive Vault Design by Rippmann, Lachauer and Block

Designing Unreinforced Masonry Models by Panozzo, Block, Sorkine-Hornung

Weighted Triangulations for Geometry Processing by De Goes, Memari, Mullen, Desbrun

I should also mention that all of my examples above also make use of the remeshing tools I have been working on recently, for preparing the meshes before relaxation. Since the last time I wrote about dynamic remeshing here, I have made significant improvements to these tools (making use of the Plankton half-edge mesh library developed by Will Pearson and myself), and am finding many applications for them. Having meshes with well formed triangles of near equal edge lengths comes in very handy for all sorts of physical simulation and optimization (some more videos of this here: 1,2). I’m also now exploring more ways of actually carrying out the remeshing at the same time as the form-finding, and some of the papers above suggest to me some very interesting further possibilities in this direction.

Here is one example of using the dynamic remeshing coupled with surface smoothing for a very interactive approach to tensile form-finding:

…

Well, that turned into a longer post than I expected – lots of exciting stuff going on!

That’s about all from me for now, but I’d welcome any comments and discussion.

For some more on graphic statics see the Active Statics site by Simon Greenwold (who also wrote the particle-spring library used by the Cadenary tool, which was one of the early inspirations for Kangaroo), and also the eQuilibrium site from ETHZ.

For a lot more on things like thrust network analysis, force-density, dynamic relaxation and shells in general, the new book Shell Structures for Architecture: Form Finding and Optimization is now out. I had the pleasure of being one of the reviewers, and am very happy to see this book now in print – such a reference on these topics is very welcome, and I hope it will lead to even more interesting development and application of shells in architecture.

]]>

The top row shows three different minimal surfaces from the same boundary curves.

The bottom row shows the same 3 surfaces rotated and in a different order.

Which number corresponds to which letter?

]]>

I’ve always aimed to make Kangaroo a specifically *architectural* physics engine. While it shares many characteristics with similar engines used for other purposes, such as games and animation, it has some features that are uniquely suited to designing buildings.

Form-finding and physics-based-modelling often result in curved shapes, with an elegant and natural appearance which is something I greatly enjoy about these methods.

However, the fact remains that most existing architectural geometry consists of straight lines and right-angles.

So the latest addition I have made to Kangaroo is for interaction between boxes, which remain aligned with the global XYZ directions. As shown in the video above, this can be combined with other forces such as gravity and attraction, causing the boxes to cluster together, and they will always remain orthogonal.

Because of the constraint to the component directions, this actually removes the need for calculating any square roots for distances, which is usually a significant part of the physics computation, so it is simple and fast.

I’ve also added an option to allow the boxes to alter their proportions in order to maintain a fixed volume. So as they get pushed on by neighbouring boxes or other forces they may get squashed or elongated, but they keep their contained volume the same (Movement could also be constrained in the vertical direction, so areas are fixed).

Some people have already used Kangaroo for arranging rooms (for example see Marc Syp’s project Realtime Physics for Space Planning), using systems of weighted springs and colliding spheres to balance complex networks of adjacency requirements between different functional areas of buildings. I’m hoping this new functionality could be useful in taking these ideas further…

]]>

In architectural geometry over the last few decades, a common topic of research has been how to build and clad doubly curved surfaces in an efficient way.

While computer aided manufacturing has made it possible to make buildings where every panel has slightly different dimensions, there are still often significant benefits in fabrication and assembly if *identical* panels can be used.

However, it is a geometric impossibility to smoothly cover a doubly curved surface with many perfectly identical panels, all meeting exactly edge-to-edge. The typical way of dealing with this is to have many variations in the shapes of the panels. Non-uniformity in the connectivity of the mesh (ie. some irregular vertices) can help reduce the magnitude of these variations (see my previous post for more on this), but still leaves many different panel shapes.

An approach I’ve been exploring a bit recently is to allow some gaps to open up between panels in a controlled way, but still keeping vertices connected. By each panel rotating slightly in a particular alternating clockwise/counter-clockwise pattern they are able to expand and contract to allow for the curvature of the surface. To keep a high ratio of panel to gap area, this expansion must be limited, and well positioned irregular vertices (the 4 pointed stars in the image above) can help with this.

This can be done with various tiling types – squares, triangles, and hexagon/triangle combinations. However, to allow this alternating twist pattern, it must be one which can be coloured in a checkerboard fashion, which also means every internal vertex must be surrounded by an even number of faces.

Of course, if we want to make such a structure into a closed skin, then something needs to fill in the gaps, which do all vary in shape, but if these are made from a material which is easier to cut, I think there could still be a significant overall benefit. For example, mass-produced identical triangular or square glass panels, with varying aluminium ‘stars’ or ‘diamonds’ for the gaps.

Designing such panelizations is a good application of a computational physics design tool like Kangaroo. Indeed I was inspired by the sculptures of Ron Resch, who produced some similar forms as an emergent result of physical processes of folding paper.

*Ron Resch in his studio. Photo from Joan Michaels Paque via Eric Gjerde*

(Eric also pointed out to me this wonderful video of some more of Resch’s work)

See also the ‘Tile Magic’ series here for some other possible tilings that could be used

A more recent inspiration is Haresh Lalvani who has produced some related forms, by cutting thin slits in sheet steel, allowing it to twist and expand in a similar way when deformed.

*Sculpture by Haresh Lalvani
*

It is not always easy to predict what surfaces it is possible to panel in such a way, and only by setting up the physical constraints and manipulating the surface do we see how it can deform and get a feel for its possibilities.

At a small scale we can actually do this with the real material, but at a larger scale, if we wanted to pre-calculate the shape and the dimensions of the varying gap pieces beforehand then the digital-physical form-finding is vital.

Amazingly Ron Resch actually even wrote some computer programs back in the 60s to do some fairly similar iterative form-finding and even produce 3d animations. (See in the video linked to earlier from about 28:00 to 38:00)

Such examples of what was possible even with relatively primitive technology are an inspiration to push things further today…

]]>

As regular readers of this blog will know, I’m passionate about the use of relaxation and force-based methods for optimizing geometry in a very interactive way.

There is a great variety of form-finding that can be done by assigning physical forces as interactions between sets of particles. However, in my investigations so far, the *topology* of these interactions has usually remained fixed. So the overall shape changes dramatically, but the number of points -and the underlying network of which point interacts with which- remains the same throughout the simulation.

I have written about topology optimization before, in my post on self organizing structures, but the videos above use a fundamentally different approach than any of the examples shown there, as this new work is based on purely **local interactions, which reconfigure their connectivity as the geometry changes**.

I did experiment a while back with a different technique for dynamic remeshing based on repelling/colliding particles or spheres (see this video, skip to around 1:27 for the mesh generation), but this was limited by a number of factors – although the spheres only exert force on each other when they are closer than a certain distance, they still need to be constantly checked against all the other spheres to see if they are within this distance. Checking every sphere against every other one means the number of interactions increases as the *square* of the number of particles, which becomes slow for even modest meshes of a few thousand vertices.

There are various ways of significantly reducing this complexity and cutting down the number of distance calculations to be performed at each iteration (such as partitioning the space into cubic cells, and only checking for interactions between particles in the same or neighbouring cells). However, there still remains the question of how to remove or add spheres if they get too close or too spread out. Then even when a fairly equal distribution of points across the surface has been achieved, turning this into a clean mesh can still be tricky.

Instead, using the mesh connectivity itself from the very beginning as the network of which vertices interact with which, and updating it iteratively and *locally* based on its changing geometry, solves all of these problems at once. This connectivity update can be done by using repetitions and combinations of just 3 essential *moves* :

edge flip

edge collapse

edge split

(or alternatively, one can use edge flip, vertex insertion and vertex removal)

vertex insertion/removal

I’m always using a triangulated mesh here. In the 2nd and 3rd videos at the start, the underlying physics is still working with triangles, but I’ve shown the *dual* of this, which exchanges the roles of faces and vertices, turning a mesh of mostly triangles into one of mostly hexagons:

Notice that the *irregular vertices* of the triangle mesh (ones which have 5 or 7 connected edges instead of the regular 6) correspond to pentagons and heptagons in the dual. Finding the right number and placement of these irregular vertices is an important part of making a good mesh. There is a close relationship between these irregular vertices and the overall topology and curvature of the mesh. Euler’s polyhedron theorem gives us a precise relationship between the number of faces/edges/vertices, and the genus of the mesh (F-E+V=2-2g). This is linked to Descarte’s polyhedron theorem, which relates the total angle defect at the vertices to the genus, and is itself a *discrete* version of the *continuous* Gauss-Bonnet theorem which describes a similar relationship for the integral of Gaussian curvature in the smooth case.

Keeping a good quality triangular mesh (close to even sized equilateral elements, with no obtuse, skinny or degenerate ones) can be very useful for many other types of optimization and simulation, as well as an advantage for fabrication if it is to be built as a physical structure.

I’m thinking I could also vary the remeshing rules depending on whether the priority is regularity of geometry, or regularity of connectivity. For example, on a sphere, a geodesic dome has a small number of irregular vertices (this is sometimes referred to as a *semi-regular* mesh), but a fair amount of variation in edge length, whereas solutions to the Thomson or Tammes problems reduce the variation of distance, but have larger numbers of irregular vertices.

If the triangles all have identical edge lengths, then all of the *angle defect* is concentrated at the irregular vertices, whereas if the edges can vary slightly, the angle defect can be spread out across the mesh. As mentioned above, by Descarte’s theorem, the *total* angle defect is fixed, but if the number of vertices is increased it can be divided between more of them. Subdividing each triangle (using a smoothing scheme such as Loop subdivision) does not alter the configuration of irregular vertices, but reduces the angle defect at each vertex (and in the *smooth* limit it approaches zero as the number of vertices approaches infinity).

The remeshing can also be based on other criteria than just equal triangles. Reducing triangle size in high curvature areas is an obvious one, but I have a hunch there could also be some interesting ways of basing it not just on geometry, but on stresses, and using it for *structural* optimization.

I find remeshing fascinating because the same geometric rules and operations have relevance across so many different disciplines and at a variety of scales.

For example, in the carbon nanostructures graphene and nanotubes, which are hexagonal arrangements of atoms, there is a much studied crystallographic defect which occurs called the Stone-Wales defect – where instead of all hexagons we get 2 pentagons and 2 heptagons. It has important implications for the material’s mechanical and electrical properties. If we look again at our edge-flip move on a regular triangular mesh, and its effect on the dual, we see that it is exactly the Stone Wales defect!

There are even hypothetical carbon nanostructures (proposed by Mackay and Terrones) in the shape of doubly curved triply periodic minimal surfaces known as Schwarzites.

(from the paper Curved nanostructured materials)

As the bond lengths between the Carbon atoms are very rigid, the only way these curved structures can be formed is through the variations in mesh connectivity.

Because such complex geometries are only dependent on the way in which many *identical elements* are connected, rather than variation in the elements themselves, they can be modelled using simple materials (no laser cutting involved – just clever assembly!):

(by Bih-Yaw Jin from the beaded molecules)

(by Dimitry Tishchenko)

(by Loop.ph)

Going down to even smaller scales, we can even find the use of similar ideas about mesh connectivity in theories of loop quantum gravity, spin foams, and Regge calculus (for example, see Canonical Simplicial Gravity by Dittrich and Höhn, or The Feynman diagramatics for the spin foam models). *Pachner moves* or *bistellar flips *generalize the mesh moves described earlier to higher dimensional simplices.

(images from *Canonical Simplicial Gravity*)

So as well being potentially useful for design, *meshes* and their properties have profound relevance to our understanding of the nature of space and curvature, because of the way they link the *discrete* and the *continuous*.

I’ll be continuing to work on these remeshing tools and their combination with other types of relaxation and optimization. These recent developments are not publicly available for now, but I’ll update here with any news.

Here are a few more references on remeshing:

Dynamic Remeshing and Applications

A Remeshing Approach to Multiresolution Modeling

__________________________

also – a general update : Around a year ago I started working full time for Foster+Partners in the Specialist Modelling Group. This has been a really great experience, working on (and applying Kangaroo on) some big and exciting projects, but core Kangaroo development (and posts here) did necessarily slow down a bit during this time. However, I have recently left F+P and things will be changing ! More news to follow…

]]>

]]>

One way of demonstrating the idea of solitons is the coupled pendulum model: Imagine a series of pendulums attached at even spacings along a horizontal rod, free to rotate only in the plane perpendicular to the rod, and connected to their neighbouring pendulums by torsion springs. If the pendulum at one end is pulled over the top of the rod it introduces a twist into the system. The weight of the pendulums makes them want to hang straight down, and along most of the rod they do, but at this twist they cannot. Because of the pendulums pulling down either side of the twist, it remains localised and cannot spread out. It can move along the rod like a wave, but unlike a normal wave, it cannot simply dissipate and disappear (except by leaving one end of the rod). These twists can be in either direction (sometimes called kink and anti-kink solitons), and interestingly they can pass through each other and emerge unchanged. Curious about this behaviour, I had a go at simulating it in Kangaroo :

[vimeo 35462854]Another model for solitons can be made with playing cards :

[vimeo 35469549](I think I first encountered this model in the book *‘The New Ambidextrous Universe’* by Martin Gardner)

A form of soliton even occurs in traffic jams, and here is yet another model of soliton like behaviour – the Jacob’s ladder toy.

I see a link here with the the idea of *bistable structures*. A normal elastic object has a single unstressed configuration, and if you bend it away from this shape(provided you do not bend it too far) it will always try and spring back to that one rest configuration. A bistable object on the other hand has 2 different states in which it is at rest, and in between a more highly stressed state. An example of a bistable structure that some readers may remember are the ‘snap bracelets‘ popular during the early 90’s.

These were very similar to metal measuring tape – a strip of thin metal with a slight curvature across its short direction when straight along its length. A normal metal tape measure is not actually bistable, because it is still stressed when in its rolled state, but it is much less stressed in the rolled or straight configurations than in the in between state.

This allows a sharp bend to move along the tape while staying localized, a bit like the pendulum soliton.

[vimeo 35469746]I’ve recently been exploring the idea of whether it is possible to create something similar, but on a surface, not just a linear element.

Here I am also drawing on the idea of *auxetic* materials – defined as having a negative *Poisson’s ratio*. This means that unlike most materials which get thinner in cross section as you stretch them along their length, auxetics surprisingly actually get fatter. This can be achieved by small scale structures within the material behaving as linkages.

Many of the origami textured surfaces I have explored in previous posts actually have auxetic properties. Something I am recently trying to do is combine auxetic and bistable properties in a single sheet material through 3d printing. I’ll update when the test print arrives, but I’m hoping that the transition region between the two different contracted states of the material will behave something like a 2 dimensional version of the unstable region of the tape measure, causing some interesting out of plane buckling.

I’ve barely scratched the surface of the real study of solitons, and what I’ve mentioned here are only really toy models of a highly complex subject. For some more related reading :

Wikipedia article on the Sine-Gordon equation

A real version of the pendulum model, and another

and there are also all sorts of exotic Soliton related objects, such as Skyrmions, Twistors, Instantons and Hopfions…

For more on auxetics, check out Rod Lakes’ page

and for more on bistable structures try Simon Guest’s page

Finally – sorry for such a long hiatus, it’s good to be writing again, more posts coming soon.

]]>

Firstly, rather than attempting to paraphrase or summarise, I will link to the posts in question so you can read them (and particularly the comments people made in reply) yourself:

Patenting Geometry on Daniel Davis’ Digital Morphogenesis blog

and Evolute’s response

Why is Evolute Patenting Geometry ?

I welcome this debate, and think it is of great interest and importance to everyone involved in the future of computational geometry. There is also a discussion starting on the Grasshopper forum (http://www.grasshopper3d.com/forum/topics/patenting-geometry) and I’d be interested to hear the thoughts of you my readers on the matter. There are also some further comments and discussion on the download site here http://www.food4rhino.com/project/kangaroo#comment-209

To clarify some aspects of my own position :

Several of the geometry optimization features I have developed in Kangaroo have been informed and inspired by the works of the Polyhedral Surfaces Unit at TU Berlin lead by Alexander Bobenko, and the Geometric Modeling and Industrial Geometry Group at TU Wien lead by Helmut Pottmann. I first encountered some of these works as a student, via a long running interest in minimal surfaces, circle packing, and conformal mapping, which lead me to papers and presentations such as these:

Minimal surfaces from circle patterns: Geometry from combinatorics – Bobenko Hoffmann and Springborn 2006 (and a presentation on the same title)

Discrete differential geometry. Consistency as integrability – Bobenko and Suris 2005

Discrete Minimal Surfaces from Quadrilaterals – Bobenko 2007

The focal geometry of circular and conical meshes – Pottmann and Wallner 2006

Geometry of Architectural Freeform Structures – Pottmann, Schiftner and Wallner 2008

Despite usually not fully understanding most of the technical details of these often beautiful papers I somehow found the results very appealing, and they alerted me to the great potential for the use in design of planar quad meshes, circular and conical meshes and other related geometry.

Another important later influence for me in my recent work has been the paper Physics-based Generative Design – Ramtin Attar, Robert Aish, Jos Stam, Duncan Brinsmead, Alex Tessier, Michael Glueck & Azam Khan 2010, where among other things they describe embedding properties useful for fabrication (such as planar mesh faces and constant offsets) in an interactive model, and iteratively enforcing these constraints.

Following the example of how Grasshopper has made advanced computational methods vastly more accessible to many people, I saw a potential to put some of these geometrical results in the hands of ordinary designers by adding them to my physics engine Kangaroo, and make them intuitive to use and cheaper(free!) than the existing commercially available software for this (Evolute Tools). I don’t claim to replicate all the capabilities of their software, and my work is still under development, but I do think I offer a unique way of interacting with some of these geometric properties, and feel the results so far are very promising.

The method I use is quite simple compared to many other optimization techniques, and in fact I can describe it here:

It works by assigning every vertex a mass and velocity, and calculating and applying forces for the set of points acted on by each force object (such as the 2 end points for a spring, or the 4 vertices of a quad for a planarization force), adding up all of the forces acting on each particle, applying the corresponding accelerations and repeating, with a damping term to cause the system to settle to an equilibrium. Similar techniques are widely used in computer games and animation, and a good overview can be found in Baraff and Witkin’s Siggraph 97 course notes Physically based modeling.

The force calculations themselves are also quite simple – for example, to force 4 points to lie on a circle they must be equidistant from a 5th point and also planar. In Kangaroo this is achieved by:

-An ‘equalization’ force acting on the lines from these points to a floating 5th point (simply taking the average length of the 4 lines and then treating each one as a Hooke’s law spring with this average as its rest length). When these lines are equal length clearly the 4 points lie on a common sphere.

-A planarization force. If the 4 points are not coplanar, they define a tetrahedron. As the volume of this tetrahedron decreases to zero, the quad becomes planar, so a zero rest-length spring-like force is applied pulling the the top and bottom diagonals towards each other. When the distance between these diagonals is zero the quad is planar.

(That takes care of circularizing the mesh, but where all this gets really interesting for me is when this is combined with other forces to shape the form – Laplacian smoothing, gravity, inflation, etc and point or boundary constraints which can be interactively adjusted by the designer)

This is not to say that the reasons behind why circular meshes have the interesting properties they do is simple, just that the methods of their creation can be. In fact the study of these discretizations of curved surfaces has its roots in some very deep mathematics going back quite some way.

Much of the discussion in the pages linked to at the start centres around the distinction between patenting the use of geometric* results* vs geometric* methods. *This can lead to some fascinating abstract philosophical and moral debates, such as whether mathematics and mathematical truths are *invented* or *discovered, *and to what extent can or should they, or certain uses of them, be owned. However the debate about the legality of these things also has much more immediately practical and economic implications for those in the business of designing buildings.

I’m not actually going to go into my own personal thoughts and feelings on these matters much here, and I do not have the expertise to contribute meaningfully to any legal debate, but I will certainly be following developments with interest, and am keen to hear your opinions.

Fortunately for me, whatever debate there may be about who has what right to use certain geometry in their buildings, nobody is trying to stop me developing Kangaroo. In fact I have had some enjoyable and encouraging discussions with the people at Evolute, and even provided them with some meshes which they used to demonstrate some of their new optimization procedures in a recent paper.

Aside from any other discussion I also want to publicly thank Helmut Pottmann and his co-authors for their many great papers over the years. I would not want anyone to get the impression that I am ungrateful for or ignorant of the contribution they have made to the field and to some of my own recent work.

I have tried to give credit to those that have influenced and inspired me in my postings on this blog and elsewhere, and make no secret of the fact that all of my work builds on that of others from many sources, just as those sources themselves build on others. I believe everyone who contributes to the increase of knowledge with original work is entitled to public credit (and I believe that there is at least general consensus about this, aside from the issue of legal and commercial entitlement). As this is an informal blog and not an academic publication these acknowledgements have not always followed a standard format, which is why I felt the need to clarify matters.

Finally, on a related note, I want to end with an example of what I enjoy about all this – learning from the work shared by others, applying it in hopefully interesting ways, and sharing my work in turn. So – I am happy to introduce one of the most recent additions to the Kangaroo repertoire of forces – for optimizing a given pair of triangles towards having *tangent incircles*. Meshes where all pairs of adjacent triangles have this property are referred to as circle packing meshes – the wonderful properties of which are described and illustrated in the paper

Packing Circles and Spheres on surfaces (thesis of Mathias Hobinger 2009)

and also a shorter paper of the same name – Shiftner Hobinger, Wallner and Pottmann 2009

from which I learned of these meshes and took the simple length criteria to optimize for with this force.

[vimeo 28519758](more details and documentation for this feature to follow shortly)

Enjoy, join in the discussion, and keep on optimizing!

]]>

I am pleased to announce version **0.06** of the Kangaroo physics plugin for Grasshopper.

Download it free from http://www.food4rhino.com/project/kangaroo

This version contains bug fixes and many new features – wind, planarization, vortex, shear, alignment, anchorsprings, constrain to curves… see my video page for some examples

I am also starting to upload an updated collection of example definitions showing how to use each of these new forces here:

http://www.grasshopper3d.com/group/kangaroo/page/example-files

]]>

New technologies get really interesting once we move beyond just recreating and incrementally improving what was possible with previous methods, and start exploring the qualitatively new things they enable .

The initial impetus for Kangaroo was to embed in the digital modelling environment the kind of *form-finding* methods previously explored through real physical models – hanging chains, stretched fabrics and so on.

While this simulation of real physical material properties is still something I will be developing (and there is still much more work to be done here), the direction I find most exciting at the moment, and what I want to talk about today, is digital material behaviour which does * not* directly simulate anything from the real world, yet is nonetheless highly relevant to the design of buildable structures.

When we *form-find* and design through physical model making, we interact with the ** behaviour** of the material. Depending on its internal structure, the material responds to the forces applied to it in a certain way, generating reaction forces and deforming its shape;

-stretch a spring and it tries to return to its original length,

-push the ends of a flexible rod together, and it buckles into a particular curve,

-attach a soap film to a boundary curve, and it minimizes its surface area,

-crumple a piece of paper, and it bends and folds but with little shear or stretch.

Forms found through interaction with physical materials also impose certain constraints – not everything is possible. Try and force it into a shape which conflicts with its material properties and it resists, pushing back at you, or push it too far and it rips or crumples.

These limitations are an essential guiding part of the design process (and one which is often missing in digital design systems, where with a few clicks we can effortlessly loft a curve into a surface that would deform its intended fabrication material far beyond physical limits).

Of course the models we use for form-finding are usually not simply a scaled down version of the real structure, but involve a level of abstraction. We use materials which are quite different from those we will eventually build with at full scale, but which have key behaviours which give the forms they find geometric properties which will be relevant to their construction in other materials.

Surfaces modelled with paper or card are approximately * developable* (zero Gaussian curvature), which means they can be fabricated from sheet metal without expensive forming processes.

The surfaces found by soap films are useful because they are

Funicular or catenary models are yet another step removed from the final structure – not only are they a different scale and a different material, but we reverse their orientation with respect to gravity to find a form which acts in pure compression, as is suitable for masonry construction.

In the computer we can go much further in these abstractions, creating virtual materials which have no real world analogue. We do not need to limit our form finding to only those geometric properties which have convenient existing modelling materials that maintain them, but can invent new custom materials to maintain a much wider range of possible geometric properties (ones based on ease of fabrication, or structural or environmental performance, or aesthetics…).

I am calling these *pseudo-physical** materials – virtual materials *with custom rules for how they respond to deformations, which do not correspond to the behaviour of any real material.

A physics engine (in this case Kangaroo) allows us to assign *material properties *to geometric objects, and then calculates how they interact with each other and any applied forces and constraints. These material properties are created through functions in the physics engine code which use some mathematical rules and variables to calculate what force to react with in response to a given deformation. Conventionally we use known mathematical expressions of physical laws here, such as Hooke’s law for springs.

However, as long as they fit within this general framework (of taking some geometry and numerical variables as input, and outputting some force vectors), the rules for calculating the material’s response can be anything we want – including ones based on purely geometric properties.

For example, we can create a surface made up of triangles and give it the property that these triangles attempt to stay equilateral, though they are free to change in size – something impossible with any known real world materials (perhaps suitably designed auxetic materials might be able to achieve somewhat similar properties, though that is a subject for another time…).

In the physics engine we can explicitly design and specify which geometric properties we want to leave free, which we want to constrain, and how we want to link them.

For form-finding we are usually interested in reaching a stable solution, so it often makes sense to define this material behaviour such that it produces a force which tends towards zero as the object’s shape gets closer to a certain target property. Many optimization techniques work by minimizing certain *objective functions*. Treating any and all objective functions as *energy functionals*, and actually simulating this as the *potential energy* of a physical system – which gets converted into *kinetic energy* and dissipated through entropy until an equilibrium is reached – makes them much more accessible and intuitive to interact with. Millions of years of evolution have given us brains highly adapted for interacting with physical material systems – so by putting otherwise abstract mathematical properties into this framework, we allow that powerful intuition to be applied to them.

Dealing with everything within the framework of classical dynamics also means that we can easily throw all these different forces and material properties together (combining conventional physical material properties with *pseudo-physical* ones), and simply add all the force vectors acting on each point in the system, then use the *resultant* or net force to find the acceleration (via Newton’s 2^{nd} law) of that point.

Many powerful tools for constraint solving and optimization do already exist and are widely used in engineering, but the methods for specifying constraints and targets are often complex, and optimization techniques are often mysterious in how they reach their results, which limits their usefulness in early design.

In cases where the problem can be precisely defined, such as minimizing the weight of a truss subject to stress constraints, this need not be such a problem – as long as it outputs the right result, you don’t need to see how it got there.

But design in general is a much more fuzzy and flexible problem, and sometimes quite open ended. For this sort of *design exploration* it is better if the optimization process can be seen and controlled while it is running.

*Optimum* suggests something static and fixed, and in optimization literature metaphors of hill or mountain climbing are often used, with the peak representing the goal – and hills do not generally move as we climb them.

What I find more interesting though, is *interactive* optimization where the goal is not completely fixed at the start of the process, but the ‘optimum’ is something that can shift according to the changing desires of the designer, which are simultaneously being refined and altered in response to the constant visual feedback provided by the system. Unpredicted and emergent phenomena during this process can even suggest an entirely new goal.

A criticism which has often been levelled at digitally designed architecture over recent decades is that the tools adopted from the software of the animation industry allow wild formal exploration, and the creation of fantastic smoothly curved 3D objects, but without a way of building them at large scale so they stand up, they are somewhat irrelevant or indulgent.

While manufacturing technologies have been catching up, and more of what we create on screen can now be created in the real world, much of it is still expensive to fabricate on a large scale, and only gets applied on a few high profile, high budget buildings, lending further weight to the criticism of architects’ indulgence.

There are various geometric properties which are very important for making forms practical to fabricate that are not easy to maintain with conventional CAD modelling tools, particularly when dealing with complex curved forms.

Quad panels taken from NURBS surfaces and subdivision meshes (the common ways of making curved surfaces in current software) will nearly always be slightly doubly curved. Doubly curved panels are typically something like an order of magnitude more expensive to fabricate than planar ones.

Some sophisticated techniques do now exist for *post rationalizing* ‘freeform’ geometry so that it can be fabricated, and with specialist help many of the curved forms created by architects can eventually be panelized, but this is a complex process, constrained by what is geometrically possible, and meeting demands such as planarity and number of panels and surface smoothness will often require some modification of the design.

This separation of geometric constraints from the main design process seems to me a slightly bizarre situation. NURBS and subdivision technologies are powerful and well developed for applications such as vehicle/product design and animation/rendering, but if we need these additional highly complex techniques for converting and post rationalizing the models we produce with them before they become buildable then they are not really working for architects as well as they should.

I believe the term ‘freeform’ is often rather a misnomer. Tools such as NURBS modelling constrain and guide the shapes created with them in all sorts of ways – it’s just that those constraints are a mismatch with those needed for many large scale construction techniques.

I propose pseudo-physical digital materials as a possible way of remedying this situation.

No modelling technology is neutral or ‘free-form’ – as soon as the form moves from the designer’s mind to paper, screen or physical model, the tool being used starts to play a role in shaping the design (and I would argue that even in the designers mind, the tools they are habituated to shape their intuition and the forms they are able to conceive).

Let us acknowledge and embrace this and look not just for modelling tools which give us the freedom to design *anything*, but rather tools which will intelligently and responsively constrain the shapes we create with them, so that the virtual model is shaped by what works for structure and fabrication.

Far from stifling design, I believe the constraints pseudo-physical materials impose, and the way they adjust themselves in response to our manipulations could suggest exciting new formal languages.

Special thanks to the following, with whom I have had many enjoyable conversations over recent months that were helpful in the development of these ideas:

*Helmut Pottman, Mark Pauly, Daniel Hambleton, Niloy Mitra, Yongliang Yang, Harri Lewis, Tomohiro Tachi, Lars Hesselgren, Hugh Whitehead, Giulio Piacentino(thanks also for his plugin WeaverBird, which was used in many of the videos above), Dimitri Demin, Matthias Nieser, Felix Kälberer, Philippe Block, Lorenz Lachauer, Adrià Bassaganyes, Mathias Gmachl, Kristoffer Josefsson, Jonathan Rabagliati, Daniel Davis, Enrique Soriano, Pep Tornabell, Sam Joyce, Al Fisher, Chris Williams , Robert Aish, Jose Luis Garcia del Castillo y Lopez, Anders Holden Deleuran, Gennaro Senatore, Matthias Kohler, Marc Syp*

]]>