algorithmic modeling for Rhino

The new version (0.095) of Kangaroo is now available for download:  

Additions include:  

  • Remote timer controller - can replace the use of the reset toggle and grasshopper timer to simplify simulation control. Double click the main Kangaroo component to open this remote. There are buttons for Stop(reset), Play, Pause, and Step (moves the simulation forward one iteration).
  • Line-line force - allows interaction between line segments - they are treated as rigid cylinders. As with springs, there are settings for offset and rest distance, so this can be used to simulate colliding rods, and also for keeping cylinders tangent to one another (can be used for reciprocal structures).
  • Gear simulator - collision between curves in a plane, can be used for various mechanical simulations - cams, gears, rack and pinions etc.
  • Developablize force - adjusts vertices of a mesh locally, to make angles around each interior vertex sum to 2*Pi, so the mesh can be unfolded to a flat sheet without stretching.
  • Volume dependent pressure force - allows you to set a rest volume for a mesh instead of just a fixed pressure. When combined with Laplacian smoothing for area minimization, this can be used to optimize for CMC (constant-mean-curvature) surfaces. It will also work on open meshes.
  • Translation lock - maintains a fixed relationship between a pair of points. This can be used to enforce periodic boundary conditions for TPMS.
  • Equalize angles force - given a set of angles (defined by 3 points each), this tries to adjust them all to become equal.
  • Mirror symmetry force - can be used to minimize curvature variation, and optimize for higher order curve continuity. It can also be used for simulating torsional resistance in curved rods.
  • True minimal surface relaxation - Laplacian smoothing force now includes an option for cotangent weighting, which optimizes for zero mean curvature, unlike spring based methods, or uniform weighted Laplacian smoothing which only roughly approximate this.
  • Fast sphere collide - allows much faster collision detection between large numbers of spheres. By placing these spheres at the vertices, this can also be used for collision between meshes.
  • Force-density element - an experimental one, more on this later
  • Projected-force  - adjusts its strength so the component of the force in a given direction stays constant.

New mesh tools:

  •  WarpWeft - sorts the edges of a quad mesh into warp and weft directions. This can be used to assign them different stiffness in fabric form-finding.
  • Checkerboard - sort the faces of a mesh into 2 lists so that 2 faces of the same colour are never adjacent.
  • MeshDirection - sorts the vertices of a quad mesh to give it a sort of u-v directionality
  • Refine Strips - subdivision in one direction only - can be used to generate developable strips
  • Stripper - separates out the strips of quads from a larger mesh
  • Unroller - unfolds a quad strip to flat without stretching
  • MeshMap - maps points from one mesh to another (can be used together with circle-packing to generate conformal mappings)
  • Reciprocal structure - generates starting geometry for a reciprocal structure from any input mesh (using the Plankton mesh library *Note* If you already have the Plankton components installed, you will need to update to version 0.3.0, which is available from here)
  • ReMesher - adjusts the connectivity of a mesh by flipping, splitting and collapsing edges to make all edge lengths closer to a target value
  • Diagonalize - creates a new face for every edge of the original mesh. Can be used on quad meshes to easily convert to a diagrid.
  • Refine - simple non-smoothing subdivision, splitting quads into 4 quads, and triangles into 4 triangles
  • QuadDivide - subdivide quads by any number squared, not just powers of 4
  • Corners - finds the corner vertices of a quad mesh
  • ByParent - simple quad subdivision, keeping the output grouped by parent face.

User objects:

The download comes with an increased collection of user objects to simplify setting up common simulation types - Including a simple to use origami simulator, a reciprocal structure generator, and a tool to generate compact circle packings from a CP mesh.


Geometry input now accepts polylines and straight curves.

Hinges can now be fold completely flat in both directions.

Various other minor bug fixes and speed improvements (including much faster removeDuplicatePoints/Lines components)


I've not yet updated all the documentation and example files to reflect this new version, but over time I will keep posting here with new demos and explanation of all these new features. I'll try and add a few new examples each week. Vote in the comments below if there is a feature mentioned above that you're particularly keen to hear more about soon.

No doubt there are still some bugs to be discovered. If something isn't working the way you expect or want it to, please post in this forum (ideally with a description or sketch of what you think should be happening, and a clear description of what happens instead and any error messages).

There are also some more new features that weren't quite ready to make it into this release, but are on the way shortly...

Kangaroo remains completely free, for personal, academic, and commercial use. I'm always interested to hear about projects done using it, and suggestions for improvements or additions.


Views: 11409

Replies to This Discussion

Oooh Boy :D

Thank you Daniel !! it's more&more than a Xmas gift !

I can't wait to try this. I've met in the past people learning Rhino just to be able to use Grasshopper. Now I'm meeting people learning Grasshopper just to be able to use Kangaroo.

I think you've posted previously that in a future release we would be able to use a Kangaroo library inside a scripting component. I'm guessing this is not ready yet?

That's great to hear!

No, sorry the properly scriptable version is not ready yet - I am still working on that.

There is a small amount of functionality exposed by the MeshPhysics class if you reference the Kangaroo0095.gha in a script - I'll try and post an example soon.

Great, I'll play with the MeshPhysics class meanwhile.

Btw, last week I went to London for a couple of days mainly to help architecture students use Kangaroo on their projects. We were seated on a window table at a Starbucks and you happened to walk by in front of us on the street (I was with a couple of Bartlett teachers who pointed you out to me).

Ah, you should have stopped me! It would have been nice to meet.

I thought about it but the table was far from the door, I'd had to run to intercept you and that would've made me look a bit like a stalker :P. Another time I hope.

I got to meet some other Grasshopper users that frequent the forum, which was nice. A lot of you are very near by in the area where the AA and Bartlett is.

Hi Daniel,

I saw your Virtual Paper video and am trying make an illustration of a steel sculpture that would be a plate that is turned 3/4 of they way of around to form an almost complete infinity sign. It seems that using kangaroo is the way to do it, but the question is: what tools/functions/commands are primarily using to generate it? Any advise is helpful.cheers.



Amazing this seems to be a major upgrade to an already great tool !!

Thanks a lot !!!

:) thanks Daniel!

Great and wonderful! Thanks!

(Outputting the force components per particle per simulation step doesn't seem possible yet, or did I miss something?)

Hi Ola, thanks for reminding me - this is now possible, but I forgot to mention it.

If you convert a point to a vector and feed it into the geometry input, the geometry output will be the total force acting on that point.

I've attached a simple example that shows this, and also how the entwine and explode components can be useful for organizing geometry input/output.

(In time I do still intend to add a way of outputting the separate components from the different forces that contribute to this total)







  • Add Photos
  • View All


  • Add Videos
  • View All

© 2023   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service