algorithmic modeling for Rhino

Periodic boundary conditions with TranslationLock - examples

While Kangaroo is all about applying the laws of physics to digital modelling, there are times when it can be useful to be able to bend these laws a bit.

(I've written about some other examples of this before here:

If we want to design repetitive structures, we might want to be able to assign periodic boundary conditions to some structure to enforce translation symmetry. For instance, a long row of connected arches or vaults, which we want to be identical for ease of fabrication.

We could simulate this by adding many identical vaults in a row, and as we added more, the ones near the middle would get closer and closer to being identical. But they would never quite reach the point of being truly identical, even as we added hundreds of copies, and this would be very inefficient for large simulations:

One way around this is to take some points on one side of our structure, and lock them to some points on the other side of the structure using the new TranslationLock component:As far as the physics engine is concerned, each pair of points linked in this way is then actually just one point. It is as though the space itself has been wrapped around to join one side with the other.

Anyone who has played the game Portal will be familiar with a version of this concept (or for the older ones among you - asteroids).

Translation locks can be applied in any direction, and combined with any of the other forces. However, a few things to bear in mind:

-Be careful not to double up forces unintentionally. For instance, if you are adding a gravity load to the nodes of a catenary arch, and you want an equal load on every point, add only half the load to the locked particles, because when joined together these get combined (or equivalently you could add the full load to just one particle of the pair).

Similarly for springs - if you are smoothing a periodic tensile mesh using springs, be careful not to add the forces of the boundary springs twice.

-If you are using this for structural form-finding, remember that space we inhabit in the real world doesn't have these periodic boundary conditions (at least not on everyday scales!), so when you build it you will need to provide appropriate balancing forces at the ends.

-For forces which act on more than 2 particles, such as bending or Laplacian smoothing, you need to lock an appropriate number of particles on one side to those on the other side. Sometimes this may require adding 'ghost vertices'.

For example, here we model a periodic elastica curve:

This is achieved by applying a translation lock to the pairs shown by the red and blue arrows.

(note that the particle at the end of the blue arrow is 1 segment beyond the end of the curve)

One possible use of this tool would be the form-finding of periodic minimal surfaces (following the example of the great Surface Evolver by Ken Brakke). His site has many more great examples of these:

Generating these surfaces in a way that they remain minimal across the boundary would be very difficult without this periodic constraint.

Perhaps more interesting from a design perspective is the possibility to move beyond pure mathematical surfaces, and generate more free-form repeating units, but still preserving continuity across the boundaries, something like the work of Erwin Hauer:

Views: 5547


Replies to This Discussion

Very helpful! I hadn't realized that the translation lock component had been added. Thanks!

Hi Daniel, thank you for sharing your knowledge!
You're saying that one possible use of this tool is form finding of periodic minimal surfaces. I'm unable to make the jump from the examples you provided, to periodic minimal surfaces. Could you please elaborate on that, maybe show an example?
Thank you!

Hi Shalom,

I've edited the post to add a definition for a triply periodic surface. The principle is more or less the same for other topologies, such as the ones on Ken Brakke's page.

The result is not necessarily minimal, as it has an option for setting unequal warp/weft tensions.

For mathematically pure minimal surfaces, one could also use the Laplacian smoothing (with the cotan weighting option selected), but applying this over periodic boundaries is a bit more complex, as it would require an extra row of 'ghost vertices'.

Hi Daniel,

Thank you so much for the GH file, achieving these structures using Kangaroo is a great solution. I don't mind if they are not mathematically pure minimal surfaces. I'm interested in this from the design possibilities.

Thank you!

I have tried to do the Erwin Hauer surface useing translationlock component,but the connect is not smooth.

anybody could give me some hint to make them better.Thanks

The files



Here is a definition showing how to apply Laplacian smoothing with periodic boundaries. There is a manual step where you have to create your row of 'ghost' faces and vertices (which keep the tangency across the periodic boundary).

I've shown it with some very simple geometry here, but the same principles apply to more complex topologies such as the Hauer example.

the file:


Hi Daniel

Thank you so much for the Gh file,now I understand the 'ghost' faces and vertices,I'll try the Hauer again.

Great job,very helpful!


This helps converting some implicit algebraic surfaces into nurbs.And this geometry can be given an material now.

Thanks panhao,

I'm interested to hear more about how you are converting to nurbs.

While the quad mesh with warp/weft directions is a start, getting the control points right to maintain continuity over the seams (and particularly at points where multiple seams come together) seems tricky.






  • Add Photos
  • View All


  • Add Videos
  • View All

© 2018   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service