How can I apply all the modifiers on all the selected objects at once?

I have a scene with 1500 objects, each with several modifiers. I would like to apply all the modifiers on all the objects at once, instead of one at a time, essentially baking all data into plain meshes.

I know I can probably join all the objects into one big mesh, but then I lose all of their individual pivots and any animation data they may already have.

Is there something I’m missing here? How on earth to people deal with this??

Thanks for the help!

here is a quick script that should do that…


import bpy
sce = bpy.context.scene

for obj in bpy.context.selected_objects:
    sce.objects.active = obj
    for mod in obj.modifiers:
        bpy.ops.object.modifier_apply(modifier=mod.name)

it could be slow I guess… it is like applying them one by one :wink:

edit: tried on a lot of objects and seems to work ok…

Thanks!! Would this be something that would make sense to have included in the UI as default? It’s a pretty important feature! In any case, this will be very useful. Thanks a million!

I need to apply all modifiers as well, but running the script in 2.62 gives me the following error:

Traceback (most recent call last):
File “C:\Program Files\Blender Foundation\Blender\2.62\scripts\startup\bl_ui\space_text.py”, line 67, in draw
if text.filepath:
UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xe4 in position 35: invalid continuation byte

location:<unknown location>:-1