I am trying to achieve a minimal surface within a given boundary using the attached picture as an inspiration. I used soap film component from kangaroo but the problem with obtained mesh is that its producing creases and not giving a smooth surface. I am attaching picture and grasshopper file. Please suggest to me what forces I can add to avoid this situation.
Triangulate and it could work
It did not work it still produces creases. even after smoothing it from catmull clark.
The main issue here is that the length goal has no rest length input, meaning it is defaulting to the starting length - change this to zero and the creases go away.
Also - I recently found a bug in the tangential smoothing component (that you usually need together with the soap film goal to get true minimal surfaces). I’ll post a fix for this soon.
Thank you Daniel for your input. I tried reducing that to zero but problem is that it does not produce geometry near to true soap film as show in the image. When I set length goal to zero it produces a very less hump in middle.
This is the result I was trying from kangaroo. I used milipede component of minimal surface. …Maybe there is a way to do it from kangaroo too…
It is a bit strange that it worked for me and not for you. Here the script with 0 lenght as advised by Daniel.
MINIMAL SURFACE.gh (55.0 KB)
I’d expect a true minimal surface for the long version of the boundary you showed to be almost flat in the middle. You could get closer to this by adjusting the mesh parameters so the quads are close to square, and reducing the strength of the length goal relative to the soap film.
Also, I can’t post it right now, but I’ll share the soap film/tangential smoothing update tomorrow.
Hi @DanielPiker did you get time to fix the tangential smoothing for kangaroo 2. I waiting for new update if kangaroo too. Excited for that.
I think the base shape is a cube
MINIMAL SURFACE_re.gh (14.9 KB)
Thank you for your reply. Yes that can be a strategy if we want to mimic that form approximately, but this cannot be used to get a true approximation of a minimal surface. Also it wont work with other boundary conditions. So I was trying to solve it with physics simulation. But thank you again for your input.
Hello guys Sometime back I posted this topic for problem of creasing on surface obtained for this particular surface using Kangaroo. It seems little bit of extra thinking was also needed to avoid that creasing by applying some other forces too. Here I share with you the model simulated using Kangaroo without creasing problems. Thank you for all the help from Daniel piker and others.
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:
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.
Thank you for your detailed reply. I am not an expert in mathematics or as designer but yes that is why we need tools like Kangaroo to explore these forms. I am pleased that you addressed this problem in a detailed manner. This further encourages designers like us to use these tools.
What I did to avoid creasing in my solution is I created an acting reverse gravity force on all points equal to their vectors joined with volumetric centroid of the form. That avoided the creases and I was able to achieve a crease less form with quads. I would eagerly wait for your next release. Thank you again !
I think even with the tools in the current release, there are other ways to achieve the smooth surface without this extra force as shown in your image above.
If you are using the simple quad grid without any irregular vertices, then the result should be smooth (though not minimal) even if only using zero length goals for the edges:
If you use the more symmetrical quad layout with the valence 8 vertex in the centre, using only zero length goals gives the result on the right in the image below, which has a creased point in the middle.
If you use the soap film and tangential smoothing on this mesh though, you get the result on the left, which is smooth and minimal.
Also - if you apply the tangential smoothing to the quad grid before triangulating, then you can get a smoother grid without changing the shape of the surface: