From Blue Mars Developer Guidebook
This document summarizes the mechanism used in Blue Mars to deform arbitrary polyhedrons smoothly with simple controls.
There are 2 cages: The Display cage and Internal cage.
The Internal cage has more points. The Display cage is used to control shape change.
The Internal cage needs to be smoothed to avoid gaps. Object surface can exist outside the cage or inside the cage (see Figure 1).
Each vertex is projected onto the internal cage surface perpendicularly. This maintains the distance and face UV coordinates on each vertex. This process only happens in the initialization stage (see Figure 2).
When the display cage changes, the internal cage will also update at the same time (see Figure 3).
Vertex coordinates are calculated by reversely projecting the positions.
This process is similar to the technique used when computing surface displacement mapping (see Figure 4).
This approach is useful in many different areas. In Blue Mars, we use this method in facial modification, face animation, cloth & hair simulation, body skinning and cloth fitting.
This deformation is based on changing surface normal angles. So if the object surface is located at a far distance from the internal cage, it will result in non-smooth results. In some cases, the object surface may belong to the wrong cage surface.