Roll over a surface keeping constant contact?

In the picture below, I would like to be able to "roll" the small purple ball all over the surface of the larger golden ball.

In the simplest case of smooth spheres, I could simply lock both of them in fixed positions and rotate them.

However, I have this added complexity that my golden ball has these green warts. Now, I need to "roll" over these, as well.

The absolute necessity here is that the purple ball never ever ever ever ever loses contact with the surface of the larger object. Ever!

alt text

Thus far, I think this needs to be strictly geometrical rather than physical. Gravity and other forces don't appear to work as regardless of the strength of the force, the purple ball tends to lose contact with the backside of the bumps. It get's "air".

I tried a spring joint, but that also gave other dynamic oddities.

The solution basically needs to maintain contact between the two surfaces instantaneously for all Update() calls.

hurm...

Maybe you can extend How can I make movement on a sphere?, and change control to the "warts" when it collides with them, or when it is found in a raycast pointing down from the purple ball? That way you can reuse the same logic but snap to different spheres.