Here's step 1 in the process: elastic billiard balls with the cueball bigger. Next step is to account for squishiness and the other mass possibilities. After that, a more precise form of surface detection. (At the moment this just uses the radius, which is OK for nearly spherical things but not OK for figures.) This GIF shows the PZ3 before applying the script. The big ball passes through the little one in true Poser ectoplasmic style.
My python page
My ShareCG freebies