[Bf-blender-cvs] [3e97ae4] soc-2014-remesh: Code optimization. The system create a new vertex group, to put the results.

Alexander Pinzon Fernandez noreply at git.blender.org
Fri Jun 13 23:29:36 CEST 2014


Commit: 3e97ae43a0b7208911210e5239a7c7c0745b0c14
Author: Alexander Pinzon Fernandez
Date:   Fri Jun 13 16:24:12 2014 -0500
https://developer.blender.org/rB3e97ae43a0b7208911210e5239a7c7c0745b0c14

Code optimization.
The system create a new vertex group, to put the results.

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

M	source/blender/modifiers/intern/MOD_quadremesh.c

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

diff --git a/source/blender/modifiers/intern/MOD_quadremesh.c b/source/blender/modifiers/intern/MOD_quadremesh.c
index edbb4b4..6e0d6ee 100644
--- a/source/blender/modifiers/intern/MOD_quadremesh.c
+++ b/source/blender/modifiers/intern/MOD_quadremesh.c
@@ -110,7 +110,6 @@ static void deleteLaplacianSystem(LaplacianSystem *sys)
 }
 
 
-
 static void initLaplacianMatrix(LaplacianSystem *sys)
 {
 	float v1[3], v2[3], v3[3], v4[3], no[3];
@@ -119,8 +118,6 @@ static void initLaplacianMatrix(LaplacianSystem *sys)
 	bool has_4_vert;
 	unsigned int idv1, idv2, idv3, idv4;
 
-	printf("initLaplacianMatrix 0 \n");
-
 	for (fi = 0; fi < sys->total_faces; fi++) {
 		const unsigned int *vidf = sys->faces[fi];
 
@@ -172,47 +169,19 @@ static void initLaplacianMatrix(LaplacianSystem *sys)
 
 		}
 	}
-	printf("initLaplacianMatrix 1 \n");
 	
 }
 
 static void laplacianDeformPreview(LaplacianSystem *sys)
 {
 	int vid, i, j, n, na;
-	if (sys) {
-		printf("laplacianDeformPreview NOT NULL\n");
-	} 
-	else {
-		printf("laplacianDeformPreview NULL \n");
-	}
-	printf("laplacianDeformPreview -4\n");
-	printf("sys->total_verts test\n");
-	if (sys->total_verts) {
-		printf("sys->total_verts NOT NULL\n");
-	}
-	else {
-		printf("sys->total_verts NULL\n");
-	}
-
-
-	printf("%f,  %f", sys->total_verts, sys->total_features);
-	
-
-
 	n = sys->total_verts;
 	na = sys->total_features;
 
-	printf("laplacianDeformPreview -3\n");
-
 #ifdef OPENNL_THREADING_HACK
-	printf("laplacianDeformPreview -2\n");
 	modifier_opennl_lock();
-	printf("laplacianDeformPreview -1\n");
 #endif
-
-	printf("laplacianDeformPreview 0\n");
 	if (!sys->is_matrix_computed) {
-		printf("laplacianDeformPreview 1\n");
 		nlNewContext();
 		sys->context = nlGetCurrent();
 
@@ -222,27 +191,22 @@ static void laplacianDeformPreview(LaplacianSystem *sys)
 		nlSolverParameteri(NL_NB_ROWS, n);
 		nlSolverParameteri(NL_NB_RIGHT_HAND_SIDES, 1);
 		nlBegin(NL_SYSTEM);
-		printf("laplacianDeformPreview 2\n");
 		for (i = 0; i < n; i++) {
 			nlSetVariable(0, i, 0);
 		}
 		
-		printf("laplacianDeformPreview 3\n");
 		nlBegin(NL_MATRIX);
 
 		initLaplacianMatrix(sys);
-		printf("laplacianDeformPreview 4\n");
 
 		for (i = 0; i < n; i++) {
 			if (sys->constraints[i] == 1) {
-				//printf("i: %d, w:%f \n", i, sys->weights[i]);
 				nlRightHandSideSet(0, i, sys->weights[i]);
 			}
 			else {
 				nlRightHandSideSet(0, i, 0);
 			}
 		}
-		printf("laplacianDeformPreview 6\n");
 		nlEnd(NL_MATRIX);
 		nlEnd(NL_SYSTEM);
 		if (nlSolveAdvanced(NULL, NL_TRUE)) {
@@ -250,13 +214,9 @@ static void laplacianDeformPreview(LaplacianSystem *sys)
 
 			for (vid = 0; vid < sys->total_verts; vid++) {
 				sys->U_field[vid] = nlGetVariable(0, vid);
-			}
-			printf("Solution found.\n");
-			
-			
+			}	
 		}
 		else {
-			printf("Solution not found.\n");
 			sys->has_solution = false;
 		}
 		sys->is_matrix_computed = true;
@@ -269,6 +229,43 @@ static void laplacianDeformPreview(LaplacianSystem *sys)
 #endif
 }
 
+static void QuadRemeshModifier_do(
+	QuadRemeshModifierData *qmd, Object *ob, DerivedMesh *dm,
+	float(*vertexCos)[3], int numVerts)
+{
+	float(*filevertexCos)[3];
+	int sysdif, i;
+	LaplacianSystem *sys = NULL;
+	int defgrp_index;
+	MDeformVert *dvert = NULL;
+	MDeformVert *dv = NULL;
+	float mmin = 1000, mmax = 0;
+	float y;
+
+	if (numVerts == 0) return;
+	if (strlen(qmd->anchor_grp_name) < 3) return;
+	sys = initSystem(qmd, ob, dm, vertexCos, numVerts);
+	laplacianDeformPreview(sys);
+
+	if (!defgroup_find_name(ob, "QuadRemeshGroup")) {
+		BKE_defgroup_new(ob, "QuadRemeshGroup");
+		modifier_get_vgroup(ob, dm, "QuadRemeshGroup", &dvert, &defgrp_index);
+		BLI_assert(dvert != NULL);
+		dv = dvert;
+		for (i = 0; i < numVerts; i++) {
+			mmin = min(mmin, sys->U_field[i]);
+			mmax = max(mmax, sys->U_field[i]);
+		}
+
+		for (i = 0; i < numVerts; i++) {
+			y = (sys->U_field[i] - mmin) / (mmax - mmin);
+			defvert_add_index_notest(dv, defgrp_index, y);
+			dv++;
+		}
+
+	}
+}
+
 static LaplacianSystem * initSystem(QuadRemeshModifierData *qmd, Object *ob, DerivedMesh *dm,
 	float(*vertexCos)[3], int numVerts)
 {
@@ -285,13 +282,10 @@ static LaplacianSystem * initSystem(QuadRemeshModifierData *qmd, Object *ob, Der
 	float *weights = MEM_mallocN(sizeof(float)* numVerts, __func__);  
 	MFace *tessface;
 
-	printf("initSystem\n");
-
 	modifier_get_vgroup(ob, dm, qmd->anchor_grp_name, &dvert, &defgrp_index);
 	BLI_assert(dvert != NULL);
 	dv = dvert;
 	j = 0;
-	printf("initSystem 0\n");
 	for (i = 0; i < numVerts; i++) {
 		wpaint = defvert_find_weight(dv, defgrp_index);
 		dv++;
@@ -299,7 +293,6 @@ static LaplacianSystem * initSystem(QuadRemeshModifierData *qmd, Object *ob, Der
 		if (wpaint < 0.19 || wpaint > 0.89) {
 			constraints[i] = 1;
 			weights[i] = -1.0f + wpaint * 2.0f;
-			//printf("\t %f", weights[j]);
 			j++;
 		}
 		else {
@@ -308,93 +301,23 @@ static LaplacianSystem * initSystem(QuadRemeshModifierData *qmd, Object *ob, Der
 	}
 
 	total_features = j;
-
-	printf("initSystem 1\n");
-
 	DM_ensure_tessface(dm);
 	sys = initLaplacianSystem(numVerts, dm->getNumEdges(dm), dm->getNumTessFaces(dm), total_features, qmd->anchor_grp_name);
 
-	
-	printf("initSystem 1.1\n");
-	printf("initSystem 1.2\n");
 	memcpy(sys->co, vertexCos, sizeof(float[3]) * numVerts);
-	printf("initSystem 1.3\n");
 	memcpy(sys->constraints, constraints, sizeof(int) * numVerts);
-	printf("initSystem 1.4\n");
 	memcpy(sys->weights, weights, sizeof(float)* numVerts);
-	printf("initSystem 1.5\n");
-	
-
-	printf("initSystem 1.6\n");
-	printf("initSystem 1.7\n");
 	MEM_freeN(weights);
-	printf("initSystem 1.8\n");
 	MEM_freeN(constraints);
-	printf("initSystem 1.9\n");
-
-	printf("initSystem 2\n");
-
 	tessface = dm->getTessFaceArray(dm);
 
 	for (i = 0; i < sys->total_faces; i++) {
 		memcpy(&sys->faces[i], &tessface[i].v1, sizeof(*sys->faces));
 	}
-
-	printf("Total vertsss %f\n", sys->total_verts);
-
-	printf("initSystem 3\n");
 	return sys;
 	
 }
 
-static void QuadRemeshModifier_do(
-        QuadRemeshModifierData *qmd, Object *ob, DerivedMesh *dm,
-        float (*vertexCos)[3], int numVerts)
-{
-	float (*filevertexCos)[3];
-	int sysdif, i;
-	LaplacianSystem *sys = NULL;
-	int defgrp_index;
-	MDeformVert *dvert = NULL;
-	MDeformVert *dv = NULL;
-	float mmin = 1000, mmax = 0;
-	float y;
-
-	if (numVerts == 0) return;
-	printf("numVerts %d\n", numVerts);
-
-	printf("QuadRemeshModifier_do 0\n");
-	if (strlen(qmd->anchor_grp_name) < 3) return;
-	printf("QuadRemeshModifier_do 2\n");
-	sys = initSystem(qmd, ob, dm, vertexCos, numVerts);
-	printf("QuadRemeshModifier_do 3\n");
-	laplacianDeformPreview(sys);
-	printf("QuadRemeshModifier_do 4\n");
-
-	if (!defgroup_find_name(ob, "QuadRemeshGroup")) {
-		BKE_defgroup_new(ob, "QuadRemeshGroup");
-		modifier_get_vgroup(ob, dm, "QuadRemeshGroup", &dvert, &defgrp_index);
-		BLI_assert(dvert != NULL);
-		dv = dvert;
-		for (i = 0; i < numVerts; i++) {
-			mmin = min(mmin, sys->U_field[i]);
-			mmax = max(mmax, sys->U_field[i]);
-		}
-
-		for (i = 0; i < numVerts; i++) {
-			y = (sys->U_field[i] - mmin) / (mmax - mmin);
-			defvert_add_index_notest(dv, defgrp_index, y);
-			dv++;
-		}
-
-	}
-	
-	//deleteLaplacianSystem(sys);
-	
-	
-	
-
-}
 
 #else  /* WITH_OPENNL */
 static void QuadRemeshModifier_do(




More information about the Bf-blender-cvs mailing list