13

I am looking for a way to take all the faces of an object and make each face it's own object. Basic object to desired solution, each face it's own object.

In the image above, you'll see a basic representation of what I'm trying to accomplish. On the left is a shape with faces, all attached. On the right is the result I want, an object for each face. The project I'm working on is much more complicated than this example, so I can't select each face and separate by selection. I have over 3,000 faces to work on.

David
  • 49,291
  • 38
  • 159
  • 317
Jeff Lange
  • 642
  • 1
  • 5
  • 17

3 Answers3

29

In edit mode with all the faces selected, press space type split and select Edge Split. Then press P > By Loose Parts. Every face is now a separate object.

Warning separating 3000 faces into different objects will take a while, if not crash blender.
After splitting the faces, you may have to brake up your mesh in to smaller pieces, then run the By Loose Parts command. You can select (say half of the faces) and separate them into different objects with P > Selection.

If you need the new objects' origins relocated, you can select all the objects and press ShiftCtrlAltShiftC > Origin to Geometry. Or if that keyboard short cut is too long, in the 3D view header Object > Transform > Origin to Geometry.

David
  • 49,291
  • 38
  • 159
  • 317
6

also you can copy, paste and run this code, making all with 1 clic :D :

import bpy
bpy.ops.object.mode_set(mode = 'EDIT')
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.edge_split()
bpy.ops.mesh.separate(type='LOOSE')
bpy.ops.object.mode_set(mode = 'OBJECT')

script


UPDATE

in order to set the "origin_geometry" in each new face run this:

import bpy
bpy.ops.object.mode_set(mode = 'EDIT')
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.edge_split()
bpy.ops.mesh.separate(type='LOOSE')
bpy.ops.object.mode_set(mode = 'OBJECT')
bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY')

script2

yhoyo
  • 2,285
  • 13
  • 32
1

Another option - use and apply the Edge split modifier (play with angle setting to tell it above what angle it would split edges)

Selrond
  • 372
  • 2
  • 9