[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57856] trunk/blender: Fix #35551: the topology mirror setting affected shape key and vertex group but
Brecht Van Lommel
brechtvanlommel at pandora.be
Fri Jun 28 19:13:09 CEST 2013
Revision: 57856
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57856
Author: blendix
Date: 2013-06-28 17:13:09 +0000 (Fri, 28 Jun 2013)
Log Message:
-----------
Fix #35551: the topology mirror setting affected shape key and vertex group but
this was confusing as there was no setting visible for it. Now these menus
contain an entry to mirror without and with topology mirror.
Modified Paths:
--------------
trunk/blender/release/scripts/startup/bl_ui/properties_data_mesh.py
trunk/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py
trunk/blender/source/blender/editors/armature/armature_skinning.c
trunk/blender/source/blender/editors/armature/meshlaplacian.c
trunk/blender/source/blender/editors/include/ED_mesh.h
trunk/blender/source/blender/editors/mesh/editmesh_select.c
trunk/blender/source/blender/editors/mesh/editmesh_tools.c
trunk/blender/source/blender/editors/mesh/editmesh_utils.c
trunk/blender/source/blender/editors/mesh/meshtools.c
trunk/blender/source/blender/editors/object/object_shapekey.c
trunk/blender/source/blender/editors/object/object_vgroup.c
trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c
trunk/blender/source/blender/editors/transform/transform_conversions.c
Modified: trunk/blender/release/scripts/startup/bl_ui/properties_data_mesh.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_data_mesh.py 2013-06-28 17:10:25 UTC (rev 57855)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_data_mesh.py 2013-06-28 17:13:09 UTC (rev 57856)
@@ -34,6 +34,7 @@
layout.operator("object.vertex_group_copy_to_linked", icon='LINK_AREA')
layout.operator("object.vertex_group_copy_to_selected", icon='LINK_AREA')
layout.operator("object.vertex_group_mirror", icon='ARROW_LEFTRIGHT')
+ layout.operator("object.vertex_group_mirror", text="Mirror Vertex Group (Topology)", icon='ARROW_LEFTRIGHT').use_topology = True
layout.operator("object.vertex_group_remove_from", icon='X', text="Remove from All Groups").use_all_groups = True
layout.operator("object.vertex_group_remove_from", icon='X', text="Clear Active Group").use_all_verts = True
layout.operator("object.vertex_group_remove", icon='X', text="Delete All Groups").all = True
@@ -53,6 +54,7 @@
layout.operator("object.shape_key_transfer", icon='COPY_ID') # icon is not ideal
layout.operator("object.join_shapes", icon='COPY_ID') # icon is not ideal
layout.operator("object.shape_key_mirror", icon='ARROW_LEFTRIGHT')
+ layout.operator("object.shape_key_mirror", text="Mirror Shape Key (Topology)", icon='ARROW_LEFTRIGHT').use_topology = True
layout.operator("object.shape_key_add", icon='ZOOMIN', text="New Shape From Mix").from_mix = True
layout.operator("object.shape_key_remove", icon='X', text="Delete All Shapes").all = True
Modified: trunk/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py 2013-06-28 17:10:25 UTC (rev 57855)
+++ trunk/blender/release/scripts/startup/bl_ui/space_view3d_toolbar.py 2013-06-28 17:13:09 UTC (rev 57856)
@@ -1153,7 +1153,9 @@
if obj.type == 'MESH':
mesh = obj.data
col.prop(mesh, "use_mirror_x")
- col.prop(mesh, "use_mirror_topology")
+ row = col.row()
+ row.active = mesh.use_mirror_x
+ row.prop(mesh, "use_mirror_topology")
col.prop(wpaint, "input_samples")
Modified: trunk/blender/source/blender/editors/armature/armature_skinning.c
===================================================================
--- trunk/blender/source/blender/editors/armature/armature_skinning.c 2013-06-28 17:10:25 UTC (rev 57855)
+++ trunk/blender/source/blender/editors/armature/armature_skinning.c 2013-06-28 17:13:09 UTC (rev 57856)
@@ -199,10 +199,11 @@
bDeformGroup *dgroup;
float distance;
int i, iflip, j;
+ bool use_topology = (mesh->editflag & ME_EDIT_MIRROR_TOPO) != 0;
/* for each vertex in the mesh */
for (i = 0; i < mesh->totvert; i++) {
- iflip = (dgroupflip) ? mesh_get_x_mirror_vert(ob, i) : 0;
+ iflip = (dgroupflip) ? mesh_get_x_mirror_vert(ob, i, use_topology) : 0;
/* for each skinnable bone */
for (j = 0; j < numbones; ++j) {
Modified: trunk/blender/source/blender/editors/armature/meshlaplacian.c
===================================================================
--- trunk/blender/source/blender/editors/armature/meshlaplacian.c 2013-06-28 17:10:25 UTC (rev 57855)
+++ trunk/blender/source/blender/editors/armature/meshlaplacian.c 2013-06-28 17:13:09 UTC (rev 57856)
@@ -652,6 +652,7 @@
float solution, weight;
int *vertsflipped = NULL, *mask = NULL;
int a, tottri, j, bbone, firstsegment, lastsegment;
+ bool use_topology = (me->editflag & ME_EDIT_MIRROR_TOPO) != 0;
MVert *mvert = me->mvert;
int use_vert_sel = FALSE;
@@ -716,7 +717,7 @@
if (dgroupflip) {
vertsflipped = MEM_callocN(sizeof(int) * me->totvert, "vertsflipped");
for (a = 0; a < me->totvert; a++)
- vertsflipped[a] = mesh_get_x_mirror_vert(ob, a);
+ vertsflipped[a] = mesh_get_x_mirror_vert(ob, a, use_topology);
}
/* compute weights per bone */
Modified: trunk/blender/source/blender/editors/include/ED_mesh.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_mesh.h 2013-06-28 17:10:25 UTC (rev 57855)
+++ trunk/blender/source/blender/editors/include/ED_mesh.h 2013-06-28 17:13:09 UTC (rev 57856)
@@ -77,9 +77,9 @@
/* editmesh_utils.c */
void EDBM_verts_mirror_cache_begin_ex(struct BMEditMesh *em, const int axis,
const bool use_self, const bool use_select,
- const bool is_topo, float maxdist, int *r_index);
+ const bool use_topology, float maxdist, int *r_index);
void EDBM_verts_mirror_cache_begin(struct BMEditMesh *em, const int axis,
- const bool use_self, const bool use_select);
+ const bool use_self, const bool use_select, const bool use_toplogy);
void EDBM_verts_mirror_apply(struct BMEditMesh *em, const int sel_from, const int sel_to);
struct BMVert *EDBM_verts_mirror_get(struct BMEditMesh *em, struct BMVert *v);
void EDBM_verts_mirror_cache_clear(struct BMEditMesh *em, struct BMVert *v);
@@ -241,7 +241,8 @@
bool ED_vgroup_give_array(struct ID *id, struct MDeformVert **dvert_arr, int *dvert_tot);
bool ED_vgroup_copy_array(struct Object *ob, struct Object *ob_from);
void ED_vgroup_mirror(struct Object *ob,
- const bool mirror_weights, const bool flip_vgroups, const bool all_vgroups,
+ const bool mirror_weights, const bool flip_vgroups,
+ const bool all_vgroups, const bool use_topology,
int *r_totmirr, int *r_totfail);
bool ED_vgroup_object_is_edit_mode(struct Object *ob);
@@ -304,8 +305,10 @@
/* retrieves mirrored cache vert, or NULL if there isn't one.
* note: calling this without ensuring the mirror cache state
* is bad.*/
-int mesh_get_x_mirror_vert(struct Object *ob, int index);
-struct BMVert *editbmesh_get_x_mirror_vert(struct Object *ob, struct BMEditMesh *em, struct BMVert *eve, const float co[3], int index);
+int mesh_get_x_mirror_vert(struct Object *ob, int index, const bool use_topology);
+struct BMVert *editbmesh_get_x_mirror_vert(struct Object *ob, struct BMEditMesh *em,
+ struct BMVert *eve, const float co[3],
+ int index, const bool use_topology);
int *mesh_get_x_mirror_faces(struct Object *ob, struct BMEditMesh *em);
bool ED_mesh_pick_vert(struct bContext *C, struct Object *ob, const int mval[2], unsigned int *index, int size, bool use_zbuf);
Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c 2013-06-28 17:10:25 UTC (rev 57855)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c 2013-06-28 17:13:09 UTC (rev 57856)
@@ -59,8 +59,9 @@
#include "BIF_gl.h"
+#include "DNA_mesh_types.h"
+#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
-#include "DNA_meshdata_types.h"
#include "GPU_extensions.h"
@@ -76,10 +77,12 @@
void EDBM_select_mirrored(BMEditMesh *em, bool extend,
int *r_totmirr, int *r_totfail)
{
+ Mesh *me = (Mesh *)em->ob->data;
BMVert *v1, *v2;
BMIter iter;
int totmirr = 0;
int totfail = 0;
+ bool use_topology = (me && (me->editflag & ME_EDIT_MIRROR_TOPO));
*r_totmirr = *r_totfail = 0;
@@ -92,7 +95,7 @@
}
}
- EDBM_verts_mirror_cache_begin(em, 0, true, true);
+ EDBM_verts_mirror_cache_begin(em, 0, true, true, use_topology);
if (!extend)
EDBM_flag_disable_all(em, BM_ELEM_SELECT);
Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2013-06-28 17:10:25 UTC (rev 57855)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2013-06-28 17:13:09 UTC (rev 57856)
@@ -1099,11 +1099,13 @@
static int edbm_do_smooth_vertex_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
+ Mesh *me = obedit->data;
BMEditMesh *em = BKE_editmesh_from_object(obedit);
ModifierData *md;
int mirrx = false, mirry = false, mirrz = false;
int i, repeat;
float clip_dist = 0.0f;
+ bool use_topology = (me->editflag & ME_EDIT_MIRROR_TOPO) != 0;
const bool xaxis = RNA_boolean_get(op->ptr, "xaxis");
const bool yaxis = RNA_boolean_get(op->ptr, "yaxis");
@@ -1111,7 +1113,7 @@
/* mirror before smooth */
if (((Mesh *)obedit->data)->editflag & ME_EDIT_MIRROR_X) {
- EDBM_verts_mirror_cache_begin(em, 0, false, true);
+ EDBM_verts_mirror_cache_begin(em, 0, false, true, use_topology);
}
/* if there is a mirror modifier with clipping, flag the verts that
@@ -1183,6 +1185,8 @@
{
Object *obedit = CTX_data_edit_object(C);
BMEditMesh *em = BKE_editmesh_from_object(obedit);
+ Mesh *me = obedit->data;
+ bool use_topology = (me->editflag & ME_EDIT_MIRROR_TOPO) != 0;
int usex = true, usey = true, usez = true, preserve_volume = true;
int i, repeat;
float lambda_factor;
@@ -1202,7 +1206,7 @@
/* mirror before smooth */
if (((Mesh *)obedit->data)->editflag & ME_EDIT_MIRROR_X) {
- EDBM_verts_mirror_cache_begin(em, 0, false, true);
+ EDBM_verts_mirror_cache_begin(em, 0, false, true, use_topology);
}
repeat = RNA_int_get(op->ptr, "repeat");
@@ -4257,7 +4261,7 @@
BMEditMesh *em = BKE_editmesh_from_object(obedit);
BMesh *bm = em->bm;
int *index = MEM_mallocN(bm->totvert * sizeof(*index), __func__);
- const bool is_topo = false;
+ const bool use_topology = false;
const float thresh = RNA_float_get(op->ptr, "threshold");
const float fac = RNA_float_get(op->ptr, "factor");
@@ -4276,7 +4280,7 @@
BMVert *v;
int i;
- EDBM_verts_mirror_cache_begin_ex(em, axis, true, true, is_topo, thresh, index);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list