For this test, I had an idea of what kinds of balls I wanted to use, but didn’t think about how they could interact until I saw a smiley ball on eBay. Then things started to come together bit by bit.

To prevent the balls from slipping as they roll, I used an expression to establish the relationship between the ball rotateZ and the translateX of a parent cube node which drives the Z rotation as I drag the cube along in X. I was surprised this equation wasn’t clearly spelled out on any site I searched, so here it is:

Sphere.rotateZ = -360*Cube.translateX/(2*3.14*r)

In the case of the smiley ball which bounces on his head and then starts to roll, I had to use the inverse of the equation: