27
$\begingroup$

I couldn't apply a Boolean Modifier to duplicate linked object and object array. I got this message in both case:

modifier cannot be applied on multi-user data

Why couldn't I apply the Boolean Modifier, and what do I have to do so that I can apply modifiers in scenarios like this?

$\endgroup$
1
  • $\begingroup$ Thanks, the first part is working for me, however I wanted to preserve the shape keys - to import them to . So I am trying to do as follows: - Make a duplicate of the entire collection - On the copy: - Remove shape keys and un-parant - Apply the modifier - Then re-link (this is perhaps where things go wrong?) - Mirror the shape keys from the Original to the The shape keys are visible but they are not working... I think the are getting mirrored, but not to all of my meshes..?? The mesh I am working with is a Makehuman character where I try to create shape-keys for expressions etc. This work $\endgroup$ Commented Feb 5, 2020 at 15:56

3 Answers 3

36
$\begingroup$

If you have a linked object from another scene, you won't be able to apply any modifiers to it. You will have to unlink it by clicking the unlink button in the object properties panel and possibly also in the data properties panel.

unlink object

If you have two objects, which reference to the same data, you will have to make them a single user. This is done by either clicking the users icon in the data context. This will make the data single user. Both objects will now be individual copies.

make single user

You can also press U in the 3D viewport, then select Object & Data. make single user with shortcut

Method of linking the objects back together

  • With the unedited object selected, set the mesh datablock in the Object Data section of the Properties Panel to the edit mesh.
  • Select the unedited objects, then select the edited object. Press Ctrl + L and select Object Data to link the objects to the same datablock.

linking objects

Apply Modifier to Multi User Python Script

I have added a script to do exactly what the question describes: Apply All Modifiers to Multi-User Datablock.

Just paste this in the text editor, when you want to apply all modifiers to a mesh, hit the run script button of the text editor.

You can resize the text editor until only the RUN SCRIPT button is visible to save space. If you want to add this functionality to Blender, check out how to add a python addon.

import bpy

def applyModifierToMultiUser(scene):
    active = scene.objects.active
    if (active == None):
        print("Select an object")
        return
    if (active.type != "MESH"):
        print("Select an mesh object")
        return
    mesh = active.to_mesh(scene, True, 'PREVIEW')
    linked = []
    selected = []
    for obj in bpy.data.objects:
        if obj.data == active.data:
                linked.append(obj)
    for obj in bpy.context.selected_editable_objects:
        selected.append(obj)
        obj.select = False

    for obj in linked:
        obj.select = True
        obj.modifiers.clear()
    active.data = mesh
    bpy.ops.object.make_links_data(type='OBDATA')

    for obj in linked:
        obj.select = False
    for obj in selected:
        obj.select = True
scn = bpy.context.scene
applyModifierToMultiUser(scn)
$\endgroup$
6
  • $\begingroup$ So you are saying that I can't develop all parts in the same time? because the result to what you suggest is unlink the objects, and any farther update will not auto applied on the others (the purpose of linking in the first place) $\endgroup$
    – Lion4H
    Commented Sep 30, 2016 at 21:00
  • $\begingroup$ Yes, as far as I know this is a limitation that has no better solution. I have added an explanation on linking objects back together to the answer. $\endgroup$
    – Leander
    Commented Sep 30, 2016 at 21:13
  • $\begingroup$ So I unlink, apply modifier then relink, I didn't though relinking will apply the update,Thanks for that. $\endgroup$
    – Lion4H
    Commented Sep 30, 2016 at 21:18
  • $\begingroup$ I have extended the answer with a python script, which does exactly, what you asked for. $\endgroup$
    – Leander
    Commented Sep 30, 2016 at 22:56
  • $\begingroup$ What's the equivalent Python code to 'clicking the users icon in the data context'? $\endgroup$
    – June Wang
    Commented Dec 18, 2020 at 6:17
17
$\begingroup$

In Blender 2.8 here is where you can find "make single user":

make single user

Note that there is also "make single user" when you right click on the object in the scene collection, but as of this writing you just get "not implemented" if you try to use it.

$\endgroup$
-1
$\begingroup$

Blender 2.9.1 and it's not implemented, but a work around was to export an FBX and import it into the same scene, apply material and you're good to go.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .