diff options
-rw-r--r-- | release/scripts/ui/properties_data_modifier.py | 5 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_modifier_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_modifier.c | 5 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_mirror.c | 10 |
4 files changed, 17 insertions, 4 deletions
diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index b3060e0f337..7a1ea160abc 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -363,7 +363,6 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel): col.prop(md, "use_dynamic_bind") def MIRROR(self, layout, ob, md): - layout.prop(md, "merge_threshold") split = layout.split(percentage=0.25) col = split.column() @@ -374,6 +373,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel): col = split.column() col.label(text="Options:") + col.prop(md, "use_mirror_merge", text="Merge") col.prop(md, "use_clip", text="Clipping") col.prop(md, "use_mirror_vertex_groups", text="Vertex Groups") @@ -383,6 +383,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel): col.prop(md, "use_mirror_v", text="V") col = layout.column() + + if md.use_mirror_merge == True: + col.prop(md, "merge_threshold") col.label(text="Mirror Object:") col.prop(md, "mirror_object", text="") diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 914a980cd79..f219f54cc25 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -235,6 +235,7 @@ typedef struct MirrorModifierData { #define MOD_MIR_AXIS_Y (1<<4) #define MOD_MIR_AXIS_Z (1<<5) #define MOD_MIR_VGROUP (1<<6) +#define MOD_MIR_MERGE (1<<7) typedef struct EdgeSplitModifierData { ModifierData modifier; diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 15da48a82d4..6045b920e01 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -776,6 +776,11 @@ static void rna_def_modifier_mirror(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_VGROUP); RNA_def_property_ui_text(prop, "Mirror Vertex Groups", "Mirror vertex groups (e.g. .R->.L)"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "use_mirror_merge", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_MERGE); + RNA_def_property_ui_text(prop, "Merge Verticies", "Merge verticies within the merge threshold"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); prop= RNA_def_property(srna, "use_mirror_u", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_MIRROR_U); diff --git a/source/blender/modifiers/intern/MOD_mirror.c b/source/blender/modifiers/intern/MOD_mirror.c index 9546bf1300b..19f21ce655f 100644 --- a/source/blender/modifiers/intern/MOD_mirror.c +++ b/source/blender/modifiers/intern/MOD_mirror.c @@ -142,7 +142,11 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, if (mmd->mirror_ob) { mul_m4_v3(mtx, co); } - isShared = ABS(co[axis])<=tolerance; + + if(mmd->flag & MOD_MIR_MERGE) + isShared = ABS(co[axis])<=tolerance; + else + isShared = 0; /* Because the topology result (# of vertices) must be the same if * the mesh data is overridden by vertex cos, have to calc sharedness @@ -154,8 +158,8 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, indexMap[i][0] = numVerts - 1; indexMap[i][1] = !isShared; - - if(isShared) { + // + if(isShared ) { co[axis] = 0; if (mmd->mirror_ob) { mul_m4_v3(imtx, co); |