Minimal surface between enclosed curve, network curves, or surface

Hi all,

I am looking for a form finding technique to find the form of a tensile fabric structure when given any of the following:

  1. a single boundary curve
  2. multiple boundary curves
  3. an existing surface

My method for form finding right now, using kangaroo, is that I generate a U-V mesh by panelling tools using lunchbox. I then proceed to add anchor points to mesh points that touch the edge curve. Then I vary the goals from soapfilm, mesh length factor, lines-spring, and constant tension. Seeing whichever form I like best.
Is there any way to tell which one is the most accurate and a real minimal surface?
Also, my fixed anchors are moving after the simulation. Any reason as to how or why it is happening?

Cheers!
form finding trial.gh (17.8 KB)

Hi @Jack_R

The Live Soap goal is the one which will give an actual minimal surface, since the shape does not depend on the initial meshing, and the forces are based on the triangle areas, not just the edges.

The EdgeLengths component is simply a convenient way of creating Length(spring) goals, so these two are the same.

While these edge based goals will not give you a minimal surface, that doesn’t necessarily mean the resulting surface cannot be used for a tensile structure. In fact, many built tensile membrane structures are not in the shape of minimal surfaces. It is important that all parts of the fabric are in tension, but having different magnitudes of tension depending on direction is not itself a problem, and it does allow more freedom in choosing the shape. Strictly minimal surfaces (equal tension in all directions, zero mean curvature, as approximated by soap films) are of interest in mathematics though.
Bear in mind when finding tensile shapes with springs that the ratio of U to V divisions will affect the shape, and using a boundary aligned vs diagonal grid will give different results.

I don’t think it makes much sense to use constant tension goals in this way. They can be useful for designing cable net structures though.

There is no need for any timer component. Kangaroo2 does the iteration automatically.

The regular ‘Solver’ component is the one I’d recommend using most of the time rather than the bouncy one, since it converges quicker, and gives you structured data output.

You can set the Anchor strength to 1e300 to make sure they do not move at all.

There should be no need to change the strength of the tension goals here, since the resulting geometry is the same if you are finding the form with no other forces acting. You can just leave them at their default values.

1 Like

Hello Daniel,

Thank you for your detailed response. Just wanted to say I love using Kangaroo, an amazing tool.

Just had a few other questions I wanted to ask you:

  1. How exactly are the length and strength parameters linked to the material properties or elasticity?
  2. Is it actually possible to emulate deformations (close to FEA) based on accurate boundary conditions?
  3. Is there any documentation on exactly how these forces and and goals work in Kangaroo? Because all I could find was videos and examples. Finding what you require using Ctrl+F would be quite beneficial I feel and speed up the process
  4. What goals should I use for compression form finding?

Thanks a lot for your guidance, it is extremely helpful

Hi Jack,

For length goals, they act as a spring following Hooke’s law - the Length input is the rest length, and the Strength input is k - the spring constant. To use known material properties you can calculate k using EA/L, where E is Young’s modulus, A is area, and L is the rest length.

Some other answers I’ve posted on the units and methods that might be helpful:


You can find some example definitions here, including catenary form-finding for compression structures:

I hope this is helpful