Creating a spiral inside a sphere

Hi everyone!
I’m trying to make a spiral walking path inside a sphere, like the one in the Reichstag in Berlin:

I tried making a grid on the sphere using Paneling Tools, and then connecting the dots with an interpolated curve, but trying to follow the grid in 3D is driving my crazy.
Does anyone can think of a better solution?

thanks a lot and excuse my broken English!

Did you consider creating the spiral ramp first, using sweep1 along a spiral rail whose outside diameter is larger than the sphere you will use? Sweep a line segment that extends inward further than the smallest inside diameter that the ramp will reach. Then create the outer sphere and an inner sphere that will define the width of the ramp. Then trim the ramp with the spheres.

Or did I misunderstand what you are trying to do?

This is just a suggestion; I have not tried it.

Try this:
Draw a sphere.
Use the Twist command with the axis on the ends of the seam.
Set the Infinite option to Yes.
Twist the sphere as many revolutions as you need.
Turn off the deformed sphere’s isocurves.
Duplicate the twisted seam to harvest the spiral curve.
Perhaps replace the twisted sphere with an untwisted one.

I use 5 revolutions

Pretty clever, John. Never would have occurred to me to use the seam and twist command this way.

Sounds like a good candidate for the Rhino “Tips and Tricks” Wiki page. Or discourse topic.

What’s fun is there are actually so many ways to do this - JB’s idea is also new to me, what I usually do is make a helix slightly larger in diameter than the sphere, make a line that goes from pole to pole and Loft the line and the helix. That gives you a spiral surface that you can intersect with the sphere to create the spiral curve.


Hi jajandio
Try command _InterpcrvOnSrf like the Youtube Video a :
Ciao Vittorio

that’s neat @John_Brock

another way–

draw a tube with a helix around it then FlowAlongSrf using the tube as base surface and a sphere as the target surface…

So many great answers, thanks everyone!
I’ll try them all and let you know which one worked best for me.

thank you!!

The problem with those solutions is - The pitch of the ramp will increase as the distance of each revolution becomes shorter near top of the dome. You could simply make an array of lines, then use ApplyCrv (or flowAlongSrf) to get them onto the sphere. This may not maintain an exact pitch on the ramp, but it will reduce the height of each revolution in a consistent manner…

(actually just read Jeff_Hammond’s method which is essentially the same thing)


Hi Jonah

My method , with InterpCrvOnSrf, is very accurate, seeing is believing.
Ciao Vittorio

I didn’t watch your YouTube video until just now. But my feeling is there must be some amount of deviation in the pitch, both with the ApplyCrv/Flow method and with your InterpCrvOnSrf method. Have you actually measured to see if pitch is constant along the entire length of curve?

BTW, that is a nice misuse of the InterpCrvOnSrf command. Most times i hate using it because it is so unpredictable and (as shown in your video) begins “winding” around the surface when i don’t want it to. I imagine it is a bug or at least a weakness in the command, that the method is relying internally on some type of “Flow” technique or its based on the surface’s UV directions. I imagine it gets easily confused and sometimes defaults to the UV direction when this winding occurs. I might be wrong, though…

Thanks a lot jeff, your method was the one that best suited my needs, I had forgotten about my old friend FlowAlongSrf!



Have you tried the RhinoLabs plug-in for CurveOnSurface?

I think you’ll find it much more satisfying then InterpCrvOnSrf, I especially like the ability to point edit the curve while constraining it to the surface.



thanks for the link. I tried downloading the plug in and the weird things is that it downloads this file: “InterpCurveOnSurface.rhp”. Isn’t this the plug in that CurveOnSurface is trying to replace? I also tried typing in CurveOnSurface and CurveOnSurfacePtOn, but these were un recognized functions. Any ideas? thanks,


The naming is a little confusing, because both commands do the same thing, but in different ways. You need to drag the .rhp file onto a running copy of Rhino 5 and drop it there, and it will then load the plug-in. It will not replace the existing InterpCrvOnSrf command, you will still be able to run either that command or the new CurveOnSurface and CurveOnSurfacePtOn. If you like, you can create a toolbar button to launch the new commands, see the Rhino help file on how to do that.