[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32948] trunk/blender/source/blender/ blenkernel/intern/multires.c: Fixed own mistake from previous commit -- get_levels_from_disps can' t be used

Sergey Sharybin g.ulairi at gmail.com
Mon Nov 8 15:39:36 CET 2010


Revision: 32948
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32948
Author:   nazgul
Date:     2010-11-08 15:39:36 +0100 (Mon, 08 Nov 2010)

Log Message:
-----------
Fixed own mistake from previous commit -- get_levels_from_disps can't be used
when handling topology changes.
Added grid size detection based on totdisp and corners count.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/multires.c

Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c	2010-11-08 14:08:22 UTC (rev 32947)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c	2010-11-08 14:39:36 UTC (rev 32948)
@@ -1613,27 +1613,34 @@
 void multires_topology_changed(Object *ob)
 {
 	Mesh *me= (Mesh*)ob->data;
-	MDisps *mdisp= NULL;
-	int i, totlvl;
+	MDisps *mdisp= NULL, *cur= NULL;
+	int i, grid= 0, corners;
 
 	CustomData_external_read(&me->fdata, &me->id, CD_MASK_MDISPS, me->totface);
 	mdisp= CustomData_get_layer(&me->fdata, CD_MDISPS);
 
 	if(!mdisp) return;
 
-	totlvl= get_levels_from_disps(ob);
+	cur= mdisp;
+	for(i = 0; i < me->totface; i++, cur++) {
+		if(mdisp->totdisp) {
+			corners= multires_mdisp_corners(mdisp);
+			grid= mdisp->totdisp / corners;
 
+			break;
+		}
+	}
+
 	for(i = 0; i < me->totface; i++, mdisp++) {
-		int corners= 0;
 		int nvert= me->mface[i].v4 ? 4 : 3;
 
 		/* allocate memory for mdisp, the whole disp layer would be erased otherwise */
 		if(!mdisp->totdisp) {
-			int side = multires_side_tot[totlvl];
+			if(grid) {
+				mdisp->totdisp= nvert*grid;
+				mdisp->disps= MEM_callocN(mdisp->totdisp*sizeof(float)*3, "mdisp topology");
+			}
 
-			mdisp->totdisp= nvert*side*side;
-			mdisp->disps= MEM_callocN(mdisp->totdisp*sizeof(float)*3, "mdisp topology");
-
 			continue;
 		}
 





More information about the Bf-blender-cvs mailing list