Un creasing mesh for minimal surface

Glad you’ve got it working now. Just getting a smooth tensile mesh for a boundary like this should be as simple as applying zero length springs and not require other forces:


simple_tensile.gh (16.1 KB)

My earlier comments were specifically about actual minimal surfaces which have zero mean curvature (as approximated by soap films). Shapes found with meshes of zero length springs like shown above will generally not be strictly minimal. They will still be all in tension though, with negative Gaussian curvature everywhere, and can be built as tensile membranes - its just that the tensions will not be identical in all directions (which isn’t usually a bad thing).
Indeed, most built membrane structures are not actually minimal, and sticking strictly to zero mean curvature surfaces can often be a bit restrictive, as you cannot adjust the shape by changing relative warp/weft tensions, and for some boundaries the true minimal surface will even split into separate parts.

That said - finding surfaces which are truly minimal can be interesting and useful for various reasons, and it is possible to do this in Kangaroo using the SoapFilm element.
Because the soap film element by its nature has no in-plane stiffness, you generally need something else to control the movement of the points tangential to the surface. For shapes which stay fairly close to one plane this can be as simple as restricting the movement of the points to a single axis with the AnchorXYZ goal.
For something like the example above though, that won’t work well, as the sides are close to vertical while the middle is horizontal. So here you might want to use the TangentialSmooth goal, which works to keep the mesh well spaced without interfering with the surface shape. As mentioned in my earlier post - I found the current release has a bug in the way the TangentialSmooth component is initialized (it wasn’t properly sorting the vertices before creating the goal). Sorry I didn’t post this fix earlier - here’s a file showing the corrected TSmooth in action:

tangentialsmooth_example.gh (24.7 KB)


As you see, it gets a lot flatter in the middle than the springs version, and this is what a real soap film would do on this boundary.

However, even with the tangential smoothing working, one can still sometimes run into problems finding minimal surfaces when the shape has to change significantly from the initial input shape, because even if the triangles started out well shaped, as it changes they may become very elongated, which makes the soapfilm calculation less accurate. The tangential smoothing can improve the spacing, but without changing the mesh topology, it is sometimes not possible to keep well shaped triangles as the surface evolves.
So to this end, the next release of Kangaroo includes a new LiveSoap goal, which can update the mesh topology while relaxing, and this gives accurate minimal surfaces (checked against results from Surface Evolver) even if the relaxed shape is wildly different from the starting one.
soapmesh

9 Likes