Group: Unstable (example)
I saw some weeks ago that the Maintain Volume Constraint was introduced. But it just adjust the scaling of an object or bone. So i came up with the idea to write a modifier for closed meshes, that computes the initial volume (in local space) of a mesh and compares it to the current volume of the mesh from the modifier stack. If there is a difference in volume it moves the vertices along the normals, until the original volume is restored. So it is usual the last modifier in the stack.
For better understanding watch this short clip: http://www.youtube.com/watch?v=jtygcwZsGCM
Mostly comparable to the Displace Modifier, but it gives you no control over the displacement distance. Instead it tries to figure out how far it needs to move the vertices, to reach it's goal: equal volume.
So im opening this patch entry to get some valuable response. I appended a patch, that shows it's basic functionality. It could need some more improvements:
* Speed (Creates temporary meshes for normal computation, should be done with optimized code)
* Weightgroup Interpolation (usually its linear, but not good for this modifier)
Currently it probides 4 settings:
* Volume Adjustment: Mulitplies original Volume with this factor, so you can change the volume, if needed)
* Vertex Group: Defines which part of the mesh can be used how much for volume correction
* Steps/Render Steps: Works like multiple Displacement Modifiers applied after each other with low displacement, adding up to "1".