Soft Hole Patterns (Like the Jambox)

Hi Guys

I’m relatively new and would like to ask for some tips on making these soft hole patterns. They’re not simply soft concaves formed on a flat surface.
The surface in between the holes have a slight curvature bulging out making it much more organic.

I understand maybe plugins like Grasshopper may do the job but is there a way to do it in Rhino w/o the help of Grasshopper?

If Grasshopper is the only method I would be glad to have some tips with that as well.

Many thanks.


You could model something like this approaching it in the same manner shown in this video…

The additional undulating form that the small hole pattern is on may be best captured as another surface that you use FlowAlongSrf on with your flat small hole pattern.

You definitely don’t need Grasshopper for this. You can model this in vanilla Rhino with a host of different methods.
One quick fun one is make a planar surface, rebuild it with new grid of points, you don’t need many. Select the required applicable/alternating points. Move them in the z axis. Then for even more fun use the weight command to set the control point weight of those points. Fun times!
I’m sure more will chime in with tons more ways.
(yes grasshopper would offer ways to do this as well!)

have fun!

Thanks Brian that helped a lot. Works really well so far on a flat surface. Have yet to try on a slightly arced surface but I assume it is the same, or like you mentioned flow along surface.

Thank you very much.

Thanks for the suggestion carvecream I just tried it and it works as well. The positioning of the control points is a bit hard though, as I need, say 15 holes forming that pattern on a specific area on the surface.

Will play around with it along with Brian’s suggestion too.

Many thanks!

I have this file from a while ago- this is not exactly the same but might help- you’d place a grid of points on the surface to locate the details rather than just random as in my example.

Simple Tufted Upholstery.3dm (1.2 MB)


Thanks a lot Pascal. I’m learning something new everyday.

Say I have a surface, slightly arced, 100x50 rectangle.
I have 3 rows of holes (10x3) where each hole is 6.0mm apart.

Is there a way I can build the surface to have array of control points centered on those holes that are 6mm apart?

Is the goal to have markers for placing the details or do you actually need surface control points spaced evenly.?


another idea to get somewhat of an organic look… probably could use some fine tuning though.

ptOffsetPoints (random)
Move certain points down

patchPT.3dm (792.4 KB)

Hi Pascal, yes I need surface control points spaced evenly so the the points are at the center of the holes that are 6mm apart.

Like on the attachment from jeff_hammond, the grid is somewhat uneven with squares and rectangles. It would be best if I could spread those control points evenly so the control points are aligned centered to the circles.

Thanks jeff_hammond I will try this method out as well and let you know how it comes out. THANKS!

expanding on that a bit in order to get more of a bulge in between the buttons…

make a module in a similar manner as brian has shown in his video except shaped differently. (i just used 4 arcs then simple sweep2… arrayed with a gap in between then blendSrf to make this module:

i then arrayed points in a grid the size of the 4 modules and pulled them to the surface… then randomly offset those points and patched the points… ending up with this:

i’m either over doing the amount of points or the amount of patch UV or a combo of both because this looks more like a biscuit’s texture than fabric but the technique should work out after some more experiments.

in reality, unless you’re going to render very close, it would probably be best to just use the original module style without all the points and patching etc.

If the effect is for rendering, consider bump mapping in the material, or ApplyDisplacement, with a regular bitmap.

Quick displacement:


had another idea on doing it… i think i’m done thinking about it after this though… good luck :wink:

dimples.3dm (326.4 KB)

I really appreciate this jeff_hammond thanks a lot. I’m finally back on my desk and will try all the methods.

Will post results on here when done.

Thanks again!

Are displacements only for rendering? As in for digital visuals only and won’t change anything physically on the model correct?

Yes and no- that is, the render mesh is displaced in 3d by ApplyDisplacement, but the underlying model is not changed. You can get at the displaced mesh using ExtractRenderMesh. This is unlike bump mapping where the mesh is not changed at all in 3d, only the normals are manipulated at render time.