Propagate changes from Basic shape key


I have a model of a plunger and for its animation I use shape keys. Now I decided, after I had sorted out all the shape keys for the hopping, to add some eyes to the model and see how that would look like. So I selected the Basic shape key, changed to Edit Mode and fiddled around a bit, adding stuff. I then changed to Object Mode and flipped through the different shape keys and indeed, the eyes were there as well, but alas, on the wrong side of the model. So I selected the Basic shape key again, changed to Edit Mode, rotated the eyes and changed back to Object mode. Now if I flip through the different shape keys, the eyes are there, but on the wrong side for all but the Basic shape key.

So the question is: Why do changes to the model only propagate from the Basic shape key to the others during the first edit, not from subsequential ones? Is there a button to force this behaviour. If not, there bloddy well should be.

Alternatively, am I missing something?


Okay, since apparently nobody had an idea on what I meant or how to solve the issue, I thought that this might be the opportunity for me and dive into Blender’s plugin system. So I fiddled a bit, again, and had the following idea:

I’ll get the positions of the selected vertices in the basic shape key.
Then I’ll loop through all shape keys and copy the positions of the selected vertices over.

But alas, two new problems:
The Blender Python documentation states that the data field in KeyBlock holds NMVert types for the vertices, however when printing the type, it says they are in fact Blender Vector. Hence I have no way of using the index field of NMVert to identify vertices in the different shape keys.
Secondly, the data field is readonly, so that I cannot overwrite the positions even if I knew which to overwrite.

Is anyone following? If so, does anyone have an idea?


so, when you modify the basis to add verts, they are added to all the shapes. If you change the basis, Blender assumes you want them to morph from that new basis position to the shape key’s location.

To exclude/include a vert from a shape key, create a group and specify it in the shape key. The shape key will on only act on verts in that group (e.g. create a group that excludes the eyes).