[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16090] branches/soc-2008-nicholasbishop/ source/blender/blenkernel/intern/multires.c: For loading old files: no need to generate maps for the last level.

Nicholas Bishop nicholasbishop at gmail.com
Thu Aug 14 01:31:29 CEST 2008


Revision: 16090
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16090
Author:   nicholasbishop
Date:     2008-08-14 01:31:29 +0200 (Thu, 14 Aug 2008)

Log Message:
-----------
For loading old files: no need to generate maps for the last level.

Modified Paths:
--------------
    branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c

Modified: branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c	2008-08-13 23:26:25 UTC (rev 16089)
+++ branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c	2008-08-13 23:31:29 UTC (rev 16090)
@@ -1040,13 +1040,13 @@
 
 		}
 
-		/* calculate vert to edge/face maps for each level */
-		fmap = MEM_callocN(sizeof(ListBase*) * mr->level_count, "multires fmap");
-		emap = MEM_callocN(sizeof(ListBase*) * mr->level_count, "multires emap");
-		fmem = MEM_callocN(sizeof(IndexNode*) * mr->level_count, "multires fmem");
-		emem = MEM_callocN(sizeof(IndexNode*) * mr->level_count, "multires emem");
+		/* calculate vert to edge/face maps for each level (except the last) */
+		fmap = MEM_callocN(sizeof(ListBase*) * (mr->level_count-1), "multires fmap");
+		emap = MEM_callocN(sizeof(ListBase*) * (mr->level_count-1), "multires emap");
+		fmem = MEM_callocN(sizeof(IndexNode*) * (mr->level_count-1), "multires fmem");
+		emem = MEM_callocN(sizeof(IndexNode*) * (mr->level_count-1), "multires emem");
 		lvl = lvl1;
-		for(i = 0; i < mr->level_count; ++i) {
+		for(i = 0; i < mr->level_count - 1; ++i) {
 			create_old_vert_face_map(fmap + i, fmem + i, lvl->faces, lvl->totvert, lvl->totface);
 			create_old_vert_edge_map(emap + i, emem + i, lvl->edges, lvl->totvert, lvl->totedge);
 			lvl = lvl->next;
@@ -1054,41 +1054,36 @@
 
 		/* Interior face verts */
 		lvl = lvl1->next->next;
-		for(i = 3; i <= 3/*(mr->level_count*/; ++i) {
-			tottri = totquad = 0;
-			dst = 0;
-			for(j = 0; j < lvl1->totface; ++j) {
-				int sides = lvl1->faces[j].v[3] ? 4 : 3;
-				int ldst = dst + 1 + sides * (st - 1);
+		dst = 0;
+		for(j = 0; j < lvl1->totface; ++j) {
+			int sides = lvl1->faces[j].v[3] ? 4 : 3;
+			int ldst = dst + 1 + sides * (st - 1);
 
-				for(s = 0; s < sides; ++s) {
-					int st2 = multires_side_tot[totlvl - 2] - 2;
-					int st3 = multires_side_tot[totlvl - 3] - 2;
-					int st4 = st3 == 0 ? 1 : (st3 + 1) / 2;
-					int mid = ldst + st2 * st3 + st3;
-					int cv = lvl1->faces[j].v[s];
-					int nv = lvl1->faces[j].v[s == sides - 1 ? 0 : s + 1];
-					int pv = lvl1->faces[j].v[s == 0 ? sides - 1 : s - 1];
+			for(s = 0; s < sides; ++s) {
+				int st2 = multires_side_tot[totlvl - 2] - 2;
+				int st3 = multires_side_tot[totlvl - 3] - 2;
+				int st4 = st3 == 0 ? 1 : (st3 + 1) / 2;
+				int mid = ldst + st2 * st3 + st3;
+				int cv = lvl1->faces[j].v[s];
+				int nv = lvl1->faces[j].v[s == sides - 1 ? 0 : s + 1];
+				int pv = lvl1->faces[j].v[s == 0 ? sides - 1 : s - 1];
 
-					multires_load_old_faces(fmap, emap, lvl1->next, vvmap, mid,
-								vvmap[dst], cv,
-								find_old_edge(emap[0], lvl1->edges, pv, cv)->mid,
-								find_old_edge(emap[0], lvl1->edges, cv, nv)->mid,
-								st2, st4);
+				multires_load_old_faces(fmap, emap, lvl1->next, vvmap, mid,
+							vvmap[dst], cv,
+							find_old_edge(emap[0], lvl1->edges, pv, cv)->mid,
+							find_old_edge(emap[0], lvl1->edges, cv, nv)->mid,
+							st2, st4);
 
-					ldst += (st - 1) * (st - 1);
-				}
-
-
-				dst = ldst;
-				if(sides == 4) ++totquad;
-				else ++tottri;
+				ldst += (st - 1) * (st - 1);
 			}
 
-			lvl = lvl->next;
+
+			dst = ldst;
 		}
 
-		for(i = 0; i < mr->level_count; ++i) {
+		lvl = lvl->next;
+
+		for(i = 0; i < mr->level_count - 1; ++i) {
 			MEM_freeN(fmap[i]);
 			MEM_freeN(fmem[i]);
 			MEM_freeN(emap[i]);





More information about the Bf-blender-cvs mailing list