How to make minimal surface like Daniel Piker?


I’m trying to make a minimal surface like Daniel Piker, but I have no idea how to do it or where to start. Please help! Thank you!


Hello, to start the best is to use search engine. With tags like the one in the video.

Now there is discourse

1 Like

Hello, I’ve searched everywhere on Rhino, Grasshopper3D, and Google, but I still have not managed to find a script that is like his. There are nice tensile grasshopper codes out there, but, since I am a noob, I do not know how to manipulate grasshopper very well besides the basic functions.

you could also search for Costa surface

and that

You put many different shapes, there are many examples out of there, I can’t believe you didn’t find a script . Begin with a script and if you don’t manage to make it work we could help. You could also read that, it helps to get help.


I’ve tried searching for over 10 hours. Please do not insinuate that I did not do the work. I’ve also played with many grasshopper scripts that I’ve already come across. Also, I’ve seen ALL of the forum questions you have posted, and I have searched on this forum, Grasshopper3D forum, and google myself already. And yes, I have looked at the replies for those questions. For the costa surface question, replies consist of a final rhino model of the costa surface without grasshopper code, which is what I am hoping to find or any instruction on how to construct a code myself. If you actually looked at the forum questions you have sent me, those questions don’t consist of a grasshopper code nor does it consist of any instruction on how to make a code like it. Again, I am a noob and a college student, so, of course, I am not genius at this program. I may have listed a lot of shapes, but my primary goal is to find the one that is like vimeo video posted, so I apologize for the confusion on that part. I will not edit my post.

Please don’t be rude and insinuate that I did not attempt at researching. Perhaps there is a source out there that I haven’t seen, but I have definitely done a good bit of research. If you do not intend to reply to me with a proper answer, then I appreciate if you don’t reply at all.

1 Like

Here’s a quick file to get you started. Play around with it and try to rebuild it on your own using Daniel’s Vimeo video as a guide for how to model the intersecting cylinders. If you keep the edge curves live in Rhino, but set into GH, you can adjust their position and shape and the K2 simulation should update accordingly. This is not exactly what is happening in the Vimeo video, but is a partial way there. (37.8 KB)


Also, I should say that Laurent’s links did in fact provide a few samples, albeit indirectly. Reading through I quickly found these files posted, and will attach them here for your reference.

You may need an earlier version of Mesh Machine to run this one, which is also in one of the posts above, (95.3 KB), but this one shows a nearly identical example to the video you found.

Also, this one can be quite useful (19.5 KB)

Just tinkering around …
Here is an updated version of Daniel’s circles_tensile_example, using the intersecting cylinders instead. I also added a thing or two to control how quickly the mesh tears or ‘pops’ like a soap film.

circles_tensile_example_NB (26.0 KB)

Hello, I don’t think I am rude, you came with no script, just images how could I know that you read everything when you don’t follow rules of this forum … I tried to help.
Here is a very simple example using the geometry used by Daniel Piker and a plugin to make the minimal surface.

I just used one of the many minimal surface plugin, here Millipede. Others were on this page (link I gave) and on Food4Rhino.

minimal with millipede .gh (11.3 KB)


For anyone else who might be in my same situation, trying to replicate Daniel Piker’s effect where the circles, ONCE INTERSECTING EACH OTHER, still maintain a minimal surface, use the .gh definitions provided in this thread, but add a ‘live soap’ component to the solver, and GIVE IT A VOLUME PARAMETER. Then, reference the boundary curves via Rhino and move them around. They’ll live update, and maintain the ‘soap’ surface like in the originally referenced vimeo video.

(it took way too long for me to finally figure this out, so hopefully you can save yourself the time)

Hi @nick6

Using the volume parameter in LiveSoap will give you a constant mean curvature surface (CMC), which in general won’t be minimal. It is the type of surface you would get for a closed bubble with air trapped inside. This might be what you want, just something to be aware of.

Here’s a simple current example for making a minimal surface between a pair of loops that updates each time you move them around with Rhino: (11.0 KB)

alternatively, if you want to move the boundary loops with the grab tool in Grasshopper, so it actually updates as they move, you can do it like this (14.2 KB)

Thank you so much! I am a huge fan & follower of all of your work, and I appreciate you taking the time to share this with me.