Surface with smooth mounds

How would you model a surface with smooth mounds that undulate up and down, like Renzo Piano’s California Academy of Science?

https://www.autodesk.com/gallery/exhibits/currently-on-display/california-academy-of-sciences

Thank you.

if you google the question you get answers - one of many:

1 Like

Hi - If you are looking to do this in plain Rhino, you can just rebuild a plane to increase the point count and then pull points up with the regular Move command or with SoftEditSrf.
-wim

I was kind of headed that way but the image looks like the shapes are specifically spheres(?) and not just bumps… which makes it more complicated. I can’t tell if the sort of directional vibe is just from the parallel lines or if the surface(s) are also somewhat biased in one direction as well.

-Pascal

Thanks Pascal, that’s exactly it.

I would like to make spherical mounds that transition smoothly into another mound that may face downwards as well. In Piano’s wood milled model, there is no clear directionality but in his real building, it’s linear. Does it matter? And how would it affect one’s ability to model it?

Hello - I’m not sure - are you saying that without any lines in the texture - just plaster for instance - there would be no stretch of the surface features in one direction? I can’t quite tell from the image. If not, it will make life a little easier, I would say, but to make the blends go to true spheres smoothly will be a bit of work, it seems to me. I’m trying to think of a relatively cheap way out…

I think there is a direction…

-Pascal

just messing around the other day making sure the softwares and a new machine are communicating properly…

it’s not what your image shows but similar in some ways:


that was done like this:

import rhinoscriptsyntax as rs
import random

def randomsheet():
    crvlist=[]
    for i in range(0,10):
        ptlist= []
        y=i*50

        for i in range(0,10):
            rand=random.uniform(0,50)
            pt= ([i*50, y, rand])
            pt= rs.AddPoint(pt)
            ptlist.append(pt)

        crv= rs.AddCurve(ptlist,3)
        crvlist.append(crv)
        rs.DeleteObjects(ptlist)

    rs.AddLoftSrf(crvlist)
    rs.HideObjects(crvlist)

randomsheet()

all it’s doing is making a grid of points at various Z heights:


using the rows of points to make curves:


then lofting the curves:


this may be too random for your vision but it could be made more controllable/less random…

if you’re wanting to make exactly what’s shown in the original image then this won’t work…