0
$\begingroup$

I'm trying to do a deformation with a mix of bones and shape keys. I created a bone first, attached it to the mesh with an Armature modifier and animated it (only 2 keys). I copied the modifier so that I have as many modifiers as keys. I applied the first key as shape key, the second modifier was not active. I did the same with the second one then I keyed the shape keys as well.

I'd need your help in the following matter: When I apply the shape keys, the deformation doesn't follow the bone anymore, starting and end position are ok but the mesh shrinks in between the two keys (see 3rd picture). It really destroys the whole animation... I tried "preserve volume" when applying the armature modifier as it sounded good but it didn't do anything noticable. Do you have any idea how to keep the mesh the same size throughout the animation?

Your help would be much appreciated!

enter image description hereenter image description here enter image description here

$\endgroup$
8
  • $\begingroup$ I'm not sure what you are trying to do... what are the shape keys for? Usually you use them to change the shape of a mesh. The armature on this object is also used to change the shape of the mesh. So the problem would be that they interfere with each other in some way. Like, let's say a bone squashes a mesh from 100% to 50% of it's height. And now you take 100% as the base, 50% as a shape key. If the bone is now squashing the mesh along with the shape key, than it will squash the mesh to 50% of 50% which is 25%. More complex deformations and armatures might result in very strange results. $\endgroup$ Nov 17 '20 at 12:08
  • 1
    $\begingroup$ Sorry, the armature might be a bit misleading, I left it there for demonstration purposes, so that you can see how big the difference between the "should be" and the real size is. it doesn't influence the geometry anymore, it's only the shape keys that are deforming the object at this point. My main issue is that while I did the animation with the bones, the object stayed the same propotion throughout the whole animation but when I applied the keys as shape keys, the mesh shrinks at the in between part of the animation (where I don't have keys) $\endgroup$
    – youdite
    Nov 17 '20 at 13:30
  • $\begingroup$ I see... without talking about your specific mesh you have to keep in mind that shape keys only store positions of vertices, not the transition you did to get them into this position. This means, if you move a mesh by rotation and store it as a shape key, the shape key will not follow the rotation but move all vertices straight from base position to shape key position. $\endgroup$ Nov 17 '20 at 13:41
  • 1
    $\begingroup$ So the only option would be to set as many shape keys as it takes to get a smooth transition between my two "main" frames? Or can you think of a better solution as to how to get the mesh not to shrink in between? $\endgroup$
    – youdite
    Nov 17 '20 at 13:52
  • 1
    $\begingroup$ I agree but I need to export the mesh to another software as gltf so I need the deformation in the mesh. I'm sure an explanation would be helpful for a lot of people! $\endgroup$
    – youdite
    Nov 17 '20 at 14:45
1
$\begingroup$

The mesh changing its size is caused by the way the shape key transforms the vertices. You can use different operations (in your case, bone deformation) on a base mesh to create the shape you want, but the shape key only stores information about positions of vertices. To illustrate it here's a simple example:

If you rotate a cube mesh to get the new shape, the shape key doesn't store the path the vertices are moved, so the transition from base mesh to shape key is linear which can result in changing the appearance of the mesh between start and end position.

The top image shows the way how the shape was created by rotating the cube mesh around the 3D cursor. At the bottom it shows how the transition from the base mesh to the shape key will be performed. As you see, the vertices move in a straight line from start to end position and change the cube's size.

To get the same deformation the bones would create it would be best to keep the armature deforming the mesh. If you can't keep the bones for some reason, inserting more shape keys to get closer to the original deformation causes a problem, since shape keys store the delta transformation: if you set key1 after moving vertices from Z = 0 to Z = 2, and for key2 you move those vertices to Z = 3, then key1 is moving up 2 - 0 = 2 units, and key2 is moving up 3 - 0 = 3 units. If you set both shape keys then the vertices are going up 2 + 3 = 5 units. If you ignore key1 to move them only 3 units you'll have the same problem like before with only one shape key.

Shape Key transition

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.