From 446299db1c0a4cf89068312174c7f30fadbd79d2 Mon Sep 17 00:00:00 2001 From: Michael Fox Date: Thu, 10 Feb 2011 00:05:03 +0000 Subject: [PATCH] small feature request from zanqdo, merging in the mirror modifier is now optional, simply turning town the merge limit just simply do anything, and merging is off by default as this seems more logical behaviour --- release/scripts/ui/properties_data_modifier.py | 5 ++++- source/blender/makesdna/DNA_modifier_types.h | 1 + source/blender/makesrna/intern/rna_modifier.c | 5 +++++ 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);