[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44321] trunk/blender/source/blender/bmesh /operators/bmo_mesh_conv.c: Fix #30290: Shape Keys not working as expected

Sergey Sharybin sergey.vfx at gmail.com
Wed Feb 22 13:11:57 CET 2012


Revision: 44321
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44321
Author:   nazgul
Date:     2012-02-22 12:11:56 +0000 (Wed, 22 Feb 2012)
Log Message:
-----------
Fix #30290: Shape Keys not working as expected

New method of vertex shapekey propagation didn't restored coordinates in
me->mvert array which lead to unwanted deformation of basis mesh and
lead to issues like described in the report.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_mesh_conv.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_mesh_conv.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_mesh_conv.c	2012-02-22 12:04:44 UTC (rev 44320)
+++ trunk/blender/source/blender/bmesh/operators/bmo_mesh_conv.c	2012-02-22 12:11:56 UTC (rev 44321)
@@ -759,6 +759,7 @@
 					currkey->data = fp = MEM_mallocN(sizeof(float) * 3 * bm->totvert, "shape key data");
 					currkey->totelem = bm->totvert;
 
+					mvert = me->mvert;
 					BM_ITER(eve, &iter, bm, BM_VERTS_OF_MESH, NULL) {
 						co = (currkey == actkey) ?
 						            eve->co :
@@ -771,6 +772,15 @@
 							add_v3_v3(fp, *ofs_pt++);
 						}
 
+						if (currkey == actkey && oldverts) {
+							keyi = CustomData_bmesh_get(&bm->vdata, eve->head.data, CD_SHAPE_KEYINDEX);
+
+							if (*keyi >= 0 && *keyi < currkey->totelem) // valid old vertex
+								copy_v3_v3(mvert->co, oldverts[*keyi].co);
+
+							mvert++;
+						}
+
 						fp += 3;
 					}
 					break;




More information about the Bf-blender-cvs mailing list