Behaviour of Shape Keys in Multi Object Mode


I want to port MESH_OT_shape_propagate_to_all as described in T54643 but I am not sure how it should behave.

Are objects in object mode supposed to share keys? If I select many objects and then press “add shape key to the object” then only the active object will get a new key. If not, how are MESH_OT_shape_propagate_to_all and MESH_OT_blend_from_shape supposed to behave?


The goal is to get all tools in the 3D viewport to work on all selected objects, even if for now the ones in the properties editor only work on the active object.

Objects do not share the same shape keys in general, so it’s not entirely obvious how these tools should work. For MESH_OT_shape_propagate_to_all I think it can work on all objects that have shape keys, and MESH_OT_blend_from_shape can list the shape keys from the active object, and then apply to all objects that have shape keys with a matching name.

1 Like

No. They are not tools to propagate shapekey among several objects.
When you have a mesh with several shape keys, you are still able to edit and modify each of these shapekey individually.
But if you make a modification of one shapekey, maybe it is interesting to make same modification on several other shapekeys or on all shapekeys of the same mesh.

So, they are tools to propagate modifications made by editing one shapekey to some or all shapekeys already created on the same object.

If you want to transfer shapekeys to other objects, you have to use transfer data tools.

So, for multi-object editing, both tools have to work on shapekeys sharing same name on all objects.
That’s a matter of what is the purpose of the shape key.
If edited objects that have shapekeys must not be animated the same way for different purpose, it may be unwanted to propagate a change to all objects.
A multi-object editing workflow for shapekeys is a kind of unknown territory.
It would require experimentation to know if it brings real benefits and what behaviour should be appropriate.

In fact, we don’t know how to correctly handle shapekey editing with multi-object editing.
Currently, 2.8, is editing active key on selection. There is no way to prevent user to edit the wrong shapekey.
Active key on object 1 can be basis and active key on object 2 can be a shapekey with another index/name.
And with the idea of mode shared through all objects of workspace, it could become a real mess.
It would be better avoid that for the moment, to wait a design task for shapekey editing.

But isn’t the purpose of Multi Object Editing to treat all selected objects as if they were one object in Edit Mode? So I think it is desired to propagate a change to all objects.

After playing around with the tool a bit I think “propagate to shapes” should be simply applied to each selected object individually. I’m not sure though, whether the operator should abort when at least one selected object does not have shape keys or whether it should ignore it (or print warning?) and propagate shapes for other selected objects with shape keys.

EDIT: here’s a diff to explain what I mean

I would show a warning if none of the objects have shape keys, otherwise silently ignore that some objects don’t.

Thanks for the feedback! I now updated the revision.

The goal is to be able to use tools on several objects as if they were one. There is a difference.
If you want to treat all properties of objects as one, you can join all objects into one. Data will be less numerous and properties easier to manage for the user.

Purpose of shapekeys is animation.
Imagine that you want to edit a moment of an animation by creating a new shapekey for objects in scene.
You add a new shapekey to objects. And you realize that for a consistency reason, some part of modification done should be kept for active object. Blender should warn you that you have to quit object mode to deselect the other objects otherwise all objects with shapekeys will be affected.
This was an example where the user create a new shapekey for this edition.
Or it could be possible to edit existing shapekeys that were made for different purpose but could absorb a slight difference to emphasize a moment.

These tools were thought without multi-object editing in mind. The fact to add multi-object editing implies to rethought the way shapekey editing is done. A barrier was taken off. In that free land, where is the new playground and where are dangerous areas to avoid ?
OK, that can’t be done without experimenting. But you could simply ask Spring team how they would see the feature of multi-editing for shapekeys behaviour.
Because there are probably more that one warning or restriction to support, here.

Thanks for the feedback! For now, I implemented MESH_OT_shape_propagate_to_all and MESH_OT_blend_from_shape as Brecht suggested, but I’ll post on blenderartists for more user feedback.

Both patches are now committed to Blender 2.8 (with small changes).
I like the idea from Brecht too, I think it’s a nice solution in the end.