Grasshopper


Here are some more videos of early tests of Kangaroo – the live physics engine for design modelling that I have recently started developing – and a bit more about its context and what it could be used for.

One of the things it allows is the virtual use of some of the physical form-finding techniques for design that were pioneered by architects/engineers such as Frei Otto and Antoni Gaudí.

They made use of a principle discovered by Robert Hooke : When a flexible chain hangs freely its elements are in pure tension, and when this form is flipped vertically it produces a form of pure compression, which is ideal for constructing masonry arches, an idea which can be extended to chain nets and stone vaults :

Another area in which physics based form-finding has been important in architecture is in the design of lightweight and tensile structures such as cable-nets and fabric canopies. Soap films have sometimes been used to model these surfaces because they approximate minimal surfaces, but measurement and control of such models is very difficult.

The large deformations involved pose a challenge when analysing these structures computationally, as many of the conventional techniques are effective only in the case of small deflections. Special techniques must be used to deal with the non-linearity of the problem.

Kangaroo allows the relaxation of nets of arbitrary topology:

Catenary/Funicular structures and Surface Relaxation are now relatively established methods of form-finding in design, but I think there is potentially a huge variety of other ways in which physical laws could be used (and misused) to create forms which are somehow optimal, interesting, useful, perhaps even beautiful.

Like the reversal of gravity to find ideal forms for masonry arches, I think an environment which allows the designer to play, to flip and twist the Laws of Nature, to cross the wires and combine forces in a way that might be impossible in the real world – all within an easy but powerful visual programming environment and with rapid feedback – could make a fertile ground for the growth of powerful and exciting new techniques.

Kangaroo is designed to be extensible to include several other types of forces, such as electrostatics – as I worked with before in Jellyfish. These different forces could then be applied simultaneously in various combinations. Other things I might also add at some point include collisions and friction.

This becomes something like a sandbox game – Virtual worlds which behave according to the laws of physics we intuitively recognise. (Here are some nice 2D examples : Crayon PhysicsSodaplayPhunCinderella )

I believe that fun need not mean frivolous. Toys can be tools – both playful and powerful.

I suspect a part of the wide success of Grasshopper is due to its toy-like nature. The playfulness of the interface makes it enjoyable to use, which aids learning and encourages experimentation and the development of new ideas. Though it may mislead some into underestimating it, this playfulness actually reinforces its usefulness. A lot of the same qualities that make good toys also make good design tools – such as great flexibility and intuitive interaction.

Hopefully Kangaroo can be something fun that enables serious play to feed into creative and responsible design.

Colour coded tension/compression, and arrows showing reaction forces at constrained nodes :

Structural analysis has traditionally always been carried out by engineers in a separate program from that used by architects to design.

When the architects get the results of the analysis back from the engineers it can inform the next round of design, but with all the steps of converting file formats, assigning material properties etc. this process can take considerable time.

If instead the designers can see the structural implications of the changes they make on screen in 3D as they make them, it opens up a whole new way of working. While not a replacement for a full structural analysis, this type of feedback could over time build up the designer’s intuition for effective forms, and also allow the use of output data such as stress distribution to closely and directly control details of the building in ways far beyond simple member sizing.

Elements with different properties, such as struts, cables and membranes can be combined and interact dynamically with one other:

Unlike previous work done by others with interactive spring systems using Java/Processing, Kangaroo works within Rhino – a leading architectural design package, and links directly with its familiar 3D manipulation and modelling tools, with no need for any conversion step.

Working within Grasshopper also makes controlling and customising Kangaroo much more fluid – Users can quickly and easily create their own simple or complex parametric links between a wide range of geometric or other data and the inputs of the simulation, and also use the outputs to build further parametric geometry, and have it all update together as changes are made.

Some very impressive physics solvers for 3D modelling and animation packages already exist, such as Reactor for Max, and Nucleus for Maya, and the intention with Kangaroo would certainly not be to try and compete directly with these, but rather to make something more specifically geared towards the design of buildable structures.

This is not a port or a copy of any existing physics engine – I am writing this from scratch.
Kangaroo is not released yet. I will announce it here first as soon as it is.

In the meantime I would value your input –

  • What role might you imagine Kangaroo playing in your own workflow ?
  • What features would you particularly like to see included ?

Please do comment with your answers and any other ideas.

Special thanks to Giulio Piacentino, Moritz Fleischmann and David Rutten for their help and inspiration in the early development of this.
Some other people whose work has inspired and informed this project are :
Simon Greenwold, Jeffrey Traer, Jos Stam, Robert Aish, Ron Fedkiw, John Ochsendorf,  Philippe Block, Axel Kilian, Paul Bourke, Chris Williams, Daniel Shiffman, Damien Alomar, John Harding.

Finally, here is the first video of Kangaroo I posted, in case you missed it:

video:

JellyFish is a new tool that works with Grasshopper and Rhino to enable various ways of modeling with attractive and repulsive forces. It is a generalisation of my popular Magnetic Displacement definition to 3-dimensions, along with some other improvements.

Any number of Sources and Sinks of variable strengths can be placed freely in space, and their combined effect can be used to move/orient/create any Rhino geometry based on points (including curves, NURBS surfaces and meshes).

The force model used is basically Coulomb’s Law for electrostatics, and a simple vector field integrator is included, so rather than just moving points along the tangent to the field at their start point you can actually move them iteratively through the curving field. This can help avoid particles crossing over each other:

grd grdx

Deformation of a grid shown with and without iteration

It also provides an alternative way of creating some of the kinds of surface usually modeled with Metaballs.

Because they are based on implicit surfaces, Metaballs produce an unstructured mesh. JellyFish on the other hand can produce a surface which keeps its explicit u v parameterization. This is potentially useful for fabrication or adding further layers of structure in Grasshopper or Paneling Tools.

metaball jellyfish comparison

Disclaimer: I am in no way endorsing the uncritical use of blobs in design!

JellyFish came about partly as a by-product of some more serious work with physical forces for structural modeling, but I thought others might find it fun to play with ( and maybe even useful )

You can download JellyFish here :

JellyFish.ghx (Shared under a CC Attribution Non-Commercial Share Alike license.)

Update – I’ve just added the option to draw the streamlines traced out by the particles as they move:  JellyFish_Streamlines.ghx. See the video here for an example. For now it is a separate definition so I recommend to download both, though the intention is to merge them into a single tool (possibly a plug-in) at one point

I am currently available for long or short term work and writing custom scripts or GH definitions, as well as individual or group GH training. In the London area now, but would consider travelling or relocating for the right opportunity. Please do not hesitate to get in touch if you have any questions.

Also, I am thinking of running a Grasshopper Workshop in London soon. If you think you would be interested in attending, drop me an email with your details to pre-register.

my address

medrg
distsm
(more…)

This video collects some of my recent geometrical play in Rhino/Grasshopper. I’ll be posting further explanations and definition files here over the next few days. Among the things shown are:

(more…)

Next Page »