[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44868] trunk/blender/source/blender/ blenkernel: Add DerivedMesh.gridHidden and CCGDM implementation.

Nicholas Bishop nicholasbishop at gmail.com
Wed Mar 14 07:31:50 CET 2012


Revision: 44868
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44868
Author:   nicholasbishop
Date:     2012-03-14 06:31:49 +0000 (Wed, 14 Mar 2012)
Log Message:
-----------
Add DerivedMesh.gridHidden and CCGDM implementation.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h
    trunk/blender/source/blender/blenkernel/BKE_subsurf.h
    trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c

Modified: trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h	2012-03-14 06:31:38 UTC (rev 44867)
+++ trunk/blender/source/blender/blenkernel/BKE_DerivedMesh.h	2012-03-14 06:31:49 UTC (rev 44868)
@@ -248,6 +248,7 @@
 	DMGridAdjacency *(*getGridAdjacency)(DerivedMesh *dm);
 	int *(*getGridOffset)(DerivedMesh *dm);
 	DMFlagMat *(*getGridFlagMats)(DerivedMesh *dm);
+	unsigned int **(*getGridHidden)(DerivedMesh *dm);
 	
 
 	/* Iterate over each mapped vertex in the derived mesh, calling the

Modified: trunk/blender/source/blender/blenkernel/BKE_subsurf.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_subsurf.h	2012-03-14 06:31:38 UTC (rev 44867)
+++ trunk/blender/source/blender/blenkernel/BKE_subsurf.h	2012-03-14 06:31:49 UTC (rev 44868)
@@ -102,6 +102,7 @@
 	int *gridOffset;
 	struct CCGFace **gridFaces;
 	struct DMFlagMat *gridFlagMats;
+	unsigned int **gridHidden;
 
 	struct {
 		struct MultiresModifierData *mmd;

Modified: trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2012-03-14 06:31:38 UTC (rev 44867)
+++ trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2012-03-14 06:31:49 UTC (rev 44868)
@@ -45,6 +45,7 @@
 #include "DNA_scene_types.h"
 
 #include "BLI_utildefines.h"
+#include "BLI_bitmap.h"
 #include "BLI_blenlib.h"
 #include "BLI_edgehash.h"
 #include "BLI_math.h"
@@ -2357,6 +2358,14 @@
 		if(ccgdm->gridAdjacency) MEM_freeN(ccgdm->gridAdjacency);
 		if(ccgdm->gridOffset) MEM_freeN(ccgdm->gridOffset);
 		if(ccgdm->gridFlagMats) MEM_freeN(ccgdm->gridFlagMats);
+		if(ccgdm->gridHidden) {
+			int i, numGrids = dm->getNumGrids(dm);
+			for(i = 0; i < numGrids; i++) {
+				if(ccgdm->gridHidden[i])
+					MEM_freeN(ccgdm->gridHidden[i]);
+			}
+			MEM_freeN(ccgdm->gridHidden);
+		}
 		if(ccgdm->freeSS) ccgSubSurf_free(ccgdm->ss);
 		if(ccgdm->fmap) MEM_freeN(ccgdm->fmap);
 		if(ccgdm->fmap_mem) MEM_freeN(ccgdm->fmap_mem);
@@ -2663,6 +2672,8 @@
 	gridFaces = MEM_mallocN(sizeof(CCGFace*)*numGrids, "ccgdm.gridFaces");
 	gridFlagMats = MEM_mallocN(sizeof(DMFlagMat)*numGrids, "ccgdm.gridFlagMats");
 
+	ccgdm->gridHidden = MEM_callocN(sizeof(BLI_bitmap)*numGrids, "ccgdm.gridHidden");
+
 	for(gIndex = 0, index = 0; index < numFaces; index++) {
 		CCGFace *f = ccgdm->faceMap[index].face;
 		int numVerts = ccgSubSurf_getFaceNumVerts(f);
@@ -2727,6 +2738,14 @@
 	return ccgdm->gridFlagMats;
 }
 
+static BLI_bitmap *ccgDM_getGridHidden(DerivedMesh *dm)
+{
+	CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm;
+	
+	ccgdm_create_grids(dm);
+	return ccgdm->gridHidden;
+}
+
 static ListBase *ccgDM_getPolyMap(Object *ob, DerivedMesh *dm)
 {
 	CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm;
@@ -2909,6 +2928,7 @@
 	ccgdm->dm.getGridAdjacency = ccgDM_getGridAdjacency;
 	ccgdm->dm.getGridOffset = ccgDM_getGridOffset;
 	ccgdm->dm.getGridFlagMats = ccgDM_getGridFlagMats;
+	ccgdm->dm.getGridHidden = ccgDM_getGridHidden;
 	ccgdm->dm.getPolyMap = ccgDM_getPolyMap;
 	ccgdm->dm.getPBVH = ccgDM_getPBVH;
 




More information about the Bf-blender-cvs mailing list