Easy Minimal Surfaces

comments 32
Free Tutorials

This episode we managed to get away from our workstations and head outside to Munich’s beautiful olympic park. There we found some prime examples of the shapes soap films form when they evolve between metal wires.

Yes – we’re talking about Frei Otto and his Olympiapark. Frei Otto was one of only two german architects to ever win the Pitzker price for his contribution to the design of tensile structures. Noticed those tent like roofs that span across the Olympic Stadium and The Olympic Halls? Those are what’s called minimal surfaces. But how do you design a shape like this when you don’t have access to powerful computers? (When the Munich Olympiapark was planned in the late 60s, there was only limited computational power available to engineers and architects.)

Frei Otto used a very analog approach – building major structural components in a wire model and then dipping it into liquid soap. Et voilรก the soap by its very nature formed the shapes we can now marvel at in Munich.

We (of course) stuck to a computational approach of solving the minimal surface problem. There are advanced techniques involving heavy calculations but we stick to a more brute force approach – building a particle network that behaves as if it’s particles were interconnected by small springs.

Have fun with it!

Download Project File (.hipnc)

Liked it? Take a second to support Moritz on Patreon!
Become a patron at Patreon!


    • Ha! Great – thanks for sharing. Quite colorful. Nice contrast to the usual minimalism we’re surrounded by ๐Ÿ™‚

  1. Great technique! Would you guys consider doing some rendering tutorials as well (or include the techniques you use to render each project at the end of the video) ?
    I feel your scenes are as great in the modelling/simulation as they are in the rendering ๐Ÿ™‚


    • We’ll consider it. I think in our carreer we’ve been talking about rendering so much we were glad that we could dive into generative geometry for a while. But I guess we might do our take on rendering as well ๐Ÿ™‚


    • I’d use other approaches for foam bubbles than this one. It is more suited for single soap films imho…


    Brilliant and out of the box! Simply loved it!

  3. Hey,

    really great tutorial. I am still learning Houdini and your tutorials are as always very helpful.
    But I was wondering about one thing. I would like to have the structure slimmer and more group points also inside the volume, so that they could connect with the points on the surface of the sphere.

    To be more flexible I thought I could create some small spheres inside, use the points on them as groups and move them around until I like the look. But I am struggeling with merging these two groups of points together. I thought it can be done with the combine group node, but I am not getting it to work. So I guess I am missing something obvious. Do you have an idea what it could be?

      • Hi Moritz,

        thanks for your quick answer.

        No, although it looks really intersting. When I said “move them around”, I didn’t ment to animate them, just more like placing them at the right position, so that the overall mesh would look different and maybe not so wide in the middle. I know that I can influence the look of it by the spheres which are scattered on the bigger sphere, but I would like to have some inside the bigger sphere as well. But as they are not intersecting with the surface of the bigger sphere, there won’t be any points created, will there? So I thought I could just add some sphere nodes, connect them with a second group node, then “merge/combine” these two groups together and than connect the “new combined” group with the wrangler.
        But I am not getting these two groups combined.

        Have nice day


        • Hi Anna,

          as far as grouping in H16 is concerned – there is this neat tutorial by Rohan Dalvi: https://vimeo.com/209767952

          Apart from that the concept of the current setup isn’t that the sphers scattered on the bigger sphere infuence it. They are there to select a set of points on the big sphere that remain static (by setting their mass to 0.0). So if you want to pull/move points on the surface you just have to move those static points around and your simulation should follow.


          • Hi Moritz,

            thanks a lot for your explanation and the link. That really helped ๐Ÿ™‚

            Have a nice week


  4. Paul Schultze

    That’s a really great tutorial, thank you! Just one question: can I somehow import collision objects into the dop network? So the surface will wrap around objects inside of them?

  5. You guys are from far, far beyond, showing backlights to a whole industry.

    Keep on driving.

  6. Great one guys! The thing I love most about minimal surfaces is its those forms you just know from seeing them in nature they are harmonious and beautiful, even if you don’t understand the math behind why it is so, your body just instinctively knows it to be natural and beautiful. You can’t make a “bad” shape!

  7. Pingback: MINIMAL SURFACES | Houdini Gubbins

  8. Neeraj Mahajan

    Interesting tutorial. Thank you for sharing.
    I was wondering how to specify the positions of scattered points and how to put some obstacle mesh in there so that it finds path around that.

  9. Very nice approach on this one! Loved the small digression into architecture!
    As usual very helpful and easy to follow!

    Thank you so much!

  10. Doesn’t work for me unfortunately, impulse activation is at 0 not 1. Disappears when played. :/ I follow every step to the point.

  11. Didn’t work, no stretching occurred, sphere didn’t expand or move at all.

  12. Patrick Stevenson-Keating

    Using the latest build H17 apprentice im getting an error in the POP Grains node “required attribute pscale is missing”

    When I run the sim at 7min20 the sphere inflates rapidly. Wondering if there’s been any changed in H17 since this tutorial?

    • Hey Patrick,

      I just checked with the scene file we provided. Runs fine on my H17.0.352… Could you check with that file too?

      Thx & Cheers,

      • Patrick Stevenson-Keating

        Hi Mo – thanks for getting back to me on this. Ive just run your file on my system and works fine. Not sure what the problem was before, as Im pretty sure Id followed along exactly, but more investigation needed!

        Thanks for all the fantastic resources!

  13. Daniel Grosse


    It works, if you define pscale for the points. Add in the first Point-Wrangler( with f@mass = 1;)
    this Line: f@pscale = 1;

  14. Hi Mo – was playing with this, keeping the velocity blend up and trying to get it to act a bit more like cloth but as it converges, seems to intersect everywhere. Not too familiar with pop grains yet, are there some specific parameters that help with self collisions in there or better to rebuild something like that in vellum?


Leave a Reply