Will scanning the object (in X, Y and Z) with the inside() function do what
you want? I've used that approach to compute the centre of mass for things,
I don't think it's much different. You can easily modify it to do the
adaptive subdivision thing as well.