This is a little tricky to properly explain, so bear with me. Is there no built-in function to recalculate a world-space AABB bounding-box on a mesh?
For example, say I import a cube which has rotation of 45 deg on one or more axis. Of course Unity gives bounds larger than the actual cube volume, due to the rotation.
OK, so now let's say I 'correct' the cube's rotation in Inspector so it is now AA (aligned to world axis). Does renderer.bounds give me the new (smaller) bounds that are equal to the cube volume?
Apparently NO, it gives me LARGER bounds that encapsulate the original rotated bounding box. It seems renderer.bounds simply translates the (now rotated 45 degrees) mesh.bounds bounding box into world-space, INCLUDING the local rotated bounding box. Isn't that somewhat less-than-useful in terms of accuracy? It works the same for the Box Collider.
What I'd like to do is find the "OBB" (Oriented Bounding Box) / "MVBB" (Minimum Volume Bounding Box). I thought I would iteratively rotate the object and then re-calculate the bounds, until I found the smallest bounding volume.
But the best I can think of now is to manually re-calculate the world-space bounding box by iterating through each mesh vertex and TransformPoint(vertex) to world-space while cumulatively Encapsulate() into a new Bounds.
Is there no built-in function to do this....? Obviously Unity does it on original import of the mesh, right?