Recently I've been getting into 3D modelling in Blender. I started to model a Glock-17, I blocked out the basic shape then extruded with a mirror.
The problem is when I mirrored it had an offset of 0.09 something and now since i have mirrored the object multiple other times since to duplicate surface detail to the other side and now there is so much extra geometry when I UV unwrap i don't know what to do to get rid of it, is there any external tools i can use or built in tools to fix this. I'm trying to import this model into Unity eventually as a side not.


2 Answers 2


Start with that: Go into edit mode (vertex select) and select all, then in the menue on (most likely) the bottom left of the screen go to mesh --> vertices --> remove doubles and set the merge distance to 0.02 Then in the menue select --> select all by trade --> interior faces and delete them. That should at least reduce the problem. From here on cleaning the rest by hand should be not too much work. To help with that you can use mesh analyses (in the properties panel).

  • $\begingroup$ Thank you that worked perfectly, nice to see someone took the time out of they're day to write an informative reply. $\endgroup$ Commented Mar 2, 2018 at 19:04
  • $\begingroup$ Glad i was able to help :). Would be nice if you accept the answer. $\endgroup$
    – CoD
    Commented Mar 2, 2018 at 19:41

"Demirror" script

Select based on the dimensions, the vertices that have been added by applying a mirror modifier.

Run the following script in edit mode. Recommend being in vertex select mode also. Selects all vertices to the left of local middle of mesh within a tolerance of 0.09. Edit to suit.

enter image description here

import bpy
import bmesh
from mathutils import Vector

from bpy import context
ob = context.object
me = ob.data
#bm = bmesh.new()
bm = bmesh.from_edit_mesh(me)
bl = Vector(map(min, *(v.co for v in bm.verts)))
tr = Vector(map(max, *(v.co for v in bm.verts)))
o = (bl + tr) / 2
eps = 0.09  # merge limit.
o -= Vector((eps for axis in "xyz"))
use_x = True
use_y = False
use_z = False
# x axis mirror keep righthalf
for v in bm.verts:
    x_sel = use_x and v.co.x < o.x
    y_sel = use_y and v.co.y < o.y
    z_sel = use_z and v.co.z < o.z
    v.select = x_sel or y_sel or z_sel


You must log in to answer this question.

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