[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40012] branches/bmesh/blender/source/ blender/blenkernel/intern: bmesh: proper sculpting on non-multires object
Sergey Sharybin
g.ulairi at gmail.com
Wed Sep 7 14:47:23 CEST 2011
Revision: 40012
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40012
Author: nazgul
Date: 2011-09-07 12:47:23 +0000 (Wed, 07 Sep 2011)
Log Message:
-----------
bmesh: proper sculpting on non-multires object
Problem was caused by unneeded call of CDDM_calc_normals when
creating derived mesh for object which duplicated mvert array.
It shouldn't happen unless object has got shapekeys or deformation
modifiers on the top of stack.
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c 2011-09-07 12:46:30 UTC (rev 40011)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c 2011-09-07 12:47:23 UTC (rev 40012)
@@ -1354,16 +1354,22 @@
} else if(dm) {
finaldm = dm;
} else {
+ int recalc_normals= 0;
+
finaldm = CDDM_from_mesh(me, ob);
- if (build_shapekey_layers)
+ if(build_shapekey_layers) {
add_shapekey_layers(finaldm, me, ob);
+ recalc_normals= 1;
+ }
if(deformedVerts) {
CDDM_apply_vert_coords(finaldm, deformedVerts);
+ recalc_normals= 1;
}
- CDDM_calc_normals(finaldm);
+ if(recalc_normals)
+ CDDM_calc_normals(finaldm);
if((dataMask & CD_MASK_WEIGHT_MCOL) && (ob->mode & OB_MODE_WEIGHT_PAINT))
add_weight_mcol_dm(ob, finaldm);
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c 2011-09-07 12:46:30 UTC (rev 40011)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c 2011-09-07 12:47:23 UTC (rev 40012)
@@ -239,7 +239,7 @@
if(deformed)
return 0;
- return dm->deformedOnly || ob->sculpt->kb;
+ return cddm->mvert == me->mvert || ob->sculpt->kb;
}
static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm)
More information about the Bf-blender-cvs
mailing list