[Bf-blender-cvs] [d5ec62a0c3a] blender2.8: Multires: Remove unused function

Sergey Sharybin noreply at git.blender.org
Mon Jun 18 12:06:18 CEST 2018


Commit: d5ec62a0c3a489d94d77854b563f7c42a5a9d174
Author: Sergey Sharybin
Date:   Mon Jun 18 11:14:00 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBd5ec62a0c3a489d94d77854b563f7c42a5a9d174

Multires: Remove unused function

It uses derived mesh, and relies on scene stored in modifier data.
So port is needed anyway.

===================================================================

M	source/blender/blenkernel/BKE_multires.h
M	source/blender/blenkernel/intern/multires.c
M	source/blender/bmesh/intern/bmesh_mesh.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h
index 851f2360f51..cecea927e8a 100644
--- a/source/blender/blenkernel/BKE_multires.h
+++ b/source/blender/blenkernel/BKE_multires.h
@@ -97,14 +97,6 @@ int multiresModifier_reshapeFromDeformMod(struct Depsgraph *depsgraph, struct Sc
 
 void multires_stitch_grids(struct Object *);
 
-/*switch mdisp data in dm between tangent and object space*/
-enum {
-	MULTIRES_SPACE_TANGENT,
-	MULTIRES_SPACE_OBJECT,
-	MULTIRES_SPACE_ABSOLUTE
-};
-void multires_set_space(struct DerivedMesh *dm, struct Object *ob, int from, int to);
-
 /* Related to the old multires */
 void multires_free(struct Multires *mr);
 void multires_load_old(struct Object *ob, struct Mesh *me);
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index a9fded4a074..5bd4a1a0475 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -1333,126 +1333,6 @@ void multires_modifier_update_hidden(DerivedMesh *dm)
 	}
 }
 
-void multires_set_space(DerivedMesh *dm, Object *ob, int from, int to)
-{
-	DerivedMesh *ccgdm = NULL, *subsurf = NULL;
-	CCGElem **gridData, **subGridData = NULL;
-	CCGKey key;
-	MPoly *mpoly = CustomData_get_layer(&dm->polyData, CD_MPOLY);
-	MDisps *mdisps;
-	MultiresModifierData *mmd = get_multires_modifier(NULL, ob, 1);
-	int *gridOffset, totlvl;
-	int i, k, numGrids, gridSize, dGridSize, dSkip;
-
-	if (!mmd)
-		return;
-
-	mdisps = CustomData_get_layer(&dm->loopData, CD_MDISPS);
-
-	if (!mdisps) {
-		goto cleanup;
-	}
-
-	totlvl = mmd->totlvl;
-	ccgdm = multires_dm_create_local(ob, dm, totlvl, totlvl, mmd->simple, false);
-
-	subsurf = subsurf_dm_create_local(ob, dm, totlvl,
-	                                  mmd->simple, mmd->flags & eMultiresModifierFlag_ControlEdges, mmd->flags & eMultiresModifierFlag_PlainUv, 0);
-
-	numGrids = subsurf->getNumGrids(subsurf);
-	gridSize = subsurf->getGridSize(subsurf);
-	gridData = subsurf->getGridData(subsurf);
-	subsurf->getGridKey(subsurf, &key);
-
-	subGridData = MEM_calloc_arrayN(numGrids, sizeof(CCGElem *), "subGridData*");
-
-	for (i = 0; i < numGrids; i++) {
-		subGridData[i] = MEM_calloc_arrayN(key.elem_size, gridSize * gridSize, "subGridData");
-		memcpy(subGridData[i], gridData[i], key.elem_size * gridSize * gridSize);
-	}
-
-	/* numGrids = ccgdm->dm->getNumGrids((DerivedMesh *)ccgdm); */ /*UNUSED*/
-	gridSize = ccgdm->getGridSize((DerivedMesh *)ccgdm);
-	gridData = ccgdm->getGridData((DerivedMesh *)ccgdm);
-	gridOffset = ccgdm->getGridOffset((DerivedMesh *)ccgdm);
-
-	dGridSize = multires_side_tot[totlvl];
-	dSkip = (dGridSize - 1) / (gridSize - 1);
-
-	k = 0; /*current loop/mdisp index within the mloop array*/
-
-	/* TODO: Use BLI_task parallel range for that one too? */
-	for (i = 0; i < dm->numPolyData; ++i) {
-		const int numVerts = mpoly[i].totloop;
-		int S, x, y, gIndex = gridOffset[i];
-
-		for (S = 0; S < numVerts; ++S, ++gIndex, ++k) {
-			MDisps *mdisp = &mdisps[mpoly[i].loopstart + S];
-			/* CCGElem *grid = gridData[gIndex]; */ /* UNUSED */
-			CCGElem *subgrid = subGridData[gIndex];
-			float (*dispgrid)[3] = NULL;
-
-			/* when adding new faces in edit mode, need to allocate disps */
-			if (!mdisp->disps) {
-				mdisp->totdisp = gridSize * gridSize;
-				mdisp->level = totlvl;
-				mdisp->disps = MEM_calloc_arrayN(mdisp->totdisp, 3 * sizeof(float), "disp in multires_set_space");
-			}
-
-			dispgrid = mdisp->disps;
-
-			for (y = 0; y < gridSize; y++) {
-				for (x = 0; x < gridSize; x++) {
-					float *data = dispgrid[dGridSize * y * dSkip + x * dSkip];
-					float *co = CCG_grid_elem_co(&key, subgrid, x, y);
-					float mat[3][3], dco[3];
-
-					/* construct tangent space matrix */
-					grid_tangent_matrix(mat, &key, x, y, subgrid);
-
-					/* convert to absolute coordinates in space */
-					if (from == MULTIRES_SPACE_TANGENT) {
-						mul_v3_m3v3(dco, mat, data);
-						add_v3_v3(dco, co);
-					}
-					else if (from == MULTIRES_SPACE_OBJECT) {
-						add_v3_v3v3(dco, co, data);
-					}
-					else if (from == MULTIRES_SPACE_ABSOLUTE) {
-						copy_v3_v3(dco, data);
-					}
-
-					/*now, convert to desired displacement type*/
-					if (to == MULTIRES_SPACE_TANGENT) {
-						invert_m3(mat);
-
-						sub_v3_v3(dco, co);
-						mul_v3_m3v3(data, mat, dco);
-					}
-					else if (to == MULTIRES_SPACE_OBJECT) {
-						sub_v3_v3(dco, co);
-						mul_v3_m3v3(data, mat, dco);
-					}
-					else if (to == MULTIRES_SPACE_ABSOLUTE) {
-						copy_v3_v3(data, dco);
-					}
-				}
-			}
-		}
-	}
-
-cleanup:
-	if (subsurf) {
-		subsurf->needsFree = 1;
-		subsurf->release(subsurf);
-	}
-
-	if (ccgdm) {
-		ccgdm->needsFree = 1;
-		ccgdm->release(ccgdm);
-	}
-}
-
 void multires_stitch_grids(Object *ob)
 {
 	/* utility for smooth brush */
diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c
index 5a04fcaa490..442cd9275ec 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@ -1041,59 +1041,6 @@ void BM_edges_sharp_from_angle_set(BMesh *bm, const float split_angle)
 	bm_mesh_edges_sharp_tag(bm, NULL, NULL, NULL, split_angle, true);
 }
 
-static void UNUSED_FUNCTION(bm_mdisps_space_set)(
-        Object *ob, BMesh *bm, int from, int to)
-{
-	/* switch multires data out of tangent space */
-	if (CustomData_has_layer(&bm->ldata, CD_MDISPS)) {
-		BMEditMesh *em = BKE_editmesh_create(bm, false);
-		DerivedMesh *dm = CDDM_from_editbmesh(em, true, false);
-		MDisps *mdisps;
-		BMFace *f;
-		BMIter iter;
-		// int i = 0; // UNUSED
-
-		multires_set_space(dm, ob, from, to);
-
-		mdisps = CustomData_get_layer(&dm->loopData, CD_MDISPS);
-
-		BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
-			BMLoop *l;
-			BMIter liter;
-			BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) {
-				MDisps *lmd = CustomData_bmesh_get(&bm->ldata, l->head.data, CD_MDISPS);
-
-				if (!lmd->disps) {
-					printf("%s: warning - 'lmd->disps' == NULL\n", __func__);
-				}
-
-				if (lmd->disps && lmd->totdisp == mdisps->totdisp) {
-					memcpy(lmd->disps, mdisps->disps, sizeof(float) * 3 * lmd->totdisp);
-				}
-				else if (mdisps->disps) {
-					if (lmd->disps)
-						MEM_freeN(lmd->disps);
-
-					lmd->disps = MEM_dupallocN(mdisps->disps);
-					lmd->totdisp = mdisps->totdisp;
-					lmd->level = mdisps->level;
-				}
-
-				mdisps++;
-				// i += 1;
-			}
-		}
-
-		dm->needsFree = 1;
-		dm->release(dm);
-
-		/* setting this to NULL prevents BKE_editmesh_free from freeing it */
-		em->bm = NULL;
-		BKE_editmesh_free(em);
-		MEM_freeN(em);
-	}
-}
-
 /**
  * \brief BMesh Begin Edit
  *



More information about the Bf-blender-cvs mailing list