Page MenuHome

Maintain Volume constraint appears to have no effect in 2.79
Open, NormalPublic

Description

System Information
Fedora 28, dual NVIDIA 1080 GTX cards

Blender Version
Broken: 2.79b f4dc9f9d68b
Worked: 2.78

The Maintain Volume constraint appears to have no effect when combined with an IK constraint. I created a stretchy leg rig for a character in Blender 2.78 following this tutorial (https://www.youtube.com/watch?v=m-ErKAsL4QE) a while ago, and when I upgraded to Blender 2.79 the rig no longer held its volume like it did in 2.78.

The constraint works on its own, but if it's combined with the stretch IK features it appears to have no effect anymore. I'm assuming it's a bug but it could have also been a change by design.

Exact steps for others to reproduce the error
Open attached blend file and move the foot controller around. No errors or warnings thrown in the console.

Details

Type
Bug

Event Timeline

Bastien Montagne (mont29) triaged this task as Normal priority.Nov 29 2018, 4:33 PM

Am not sure it's working better in 2.78? Bone scale in XZ plane remains the same, while in 2.79 it increases, but this is not affected by MaintainVolume constraint afaikt.

@Brecht Van Lommel (brecht), iirc you are pretty familiar with IK and such, maybe you know more here?

This not working at all in all versions from 2.5 to 2.80. In video there is a walkaround - additional bones copy loc rot scale, then afterwords - maintain volume.

Just as a note: behavior changed in rBec76f38b0902 and again in rBa9509a2f8a9a (but apparently unrelated? -- like mentioned this also isnt working before these commits...)

I just changed Maintain Volume yet again in 2.8 - now it has a dropdown to choose from all ways it has been working up to now.

Regarding IK, however, even without looking at the file this sounds like a misunderstanding of how IK works. Specifically, IK always runs after all constraints on its bones (irrespective of the ordering of the IK constraint itself in the stack), so to apply further constraints to its result, it is mandatory to make a new chain with Copy Transforms - that's not a 'workaround'.