[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49475] branches/soc-2012-bratwurst/source /blender/editors/uvedit: Isomap Unwrapper

Antony Riakiotakis kalast at gmail.com
Wed Aug 1 20:48:11 CEST 2012


Revision: 49475
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49475
Author:   psy-fi
Date:     2012-08-01 18:48:10 +0000 (Wed, 01 Aug 2012)
Log Message:
-----------
Isomap Unwrapper
================
* Add warnings
* Change return value so that result gets packed
* Fix uber stupid index mistake.

Result is still not sane but now I am getting something that is at least
visible in the UV editor.

Modified Paths:
--------------
    branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_parametrizer.c
    branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_parametrizer_isomap.cpp

Modified: branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_parametrizer.c
===================================================================
--- branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_parametrizer.c	2012-08-01 17:59:32 UTC (rev 49474)
+++ branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_parametrizer.c	2012-08-01 18:48:10 UTC (rev 49475)
@@ -3093,8 +3093,8 @@
 		 * since this will make every inner product give infinity as well, initialize to some
 		 * large number instead */
 		for (i = 0; i < nverts; i++)
-			for (j = 0; i < nverts; i++)
-				*(dist_map + i*nverts + j) = (i == j)? 0 : -MAXFLOAT;
+			for (j = 0; j < nverts; j++)
+				*(dist_map + i*nverts + j) = (i == j)? 0 : -500.000;
 
 		/* for each edge, put the squared distance to the appropriate matrix positions
 		 * for interior edges this will unfortunately be computed twice */
@@ -3105,6 +3105,11 @@
 		}
 		if(!param_isomap_solve(dist_map)) {
 			param_warning("ISOMAP failure, matrix solution did not converge.\n");
+
+			param_isomap_delete_solver();
+			MEM_freeN(dist_map);
+
+			return P_FALSE;
 		}
 
 		/* load the solution back to pverts */
@@ -3115,6 +3120,7 @@
 		param_isomap_delete_solver();
 		MEM_freeN(dist_map);
 
+		return P_TRUE;
 	} else {
 		PVert *v, *pin1 = chart->u.lscm.pin1, *pin2 = chart->u.lscm.pin2;
 		PFace *f;

Modified: branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_parametrizer_isomap.cpp
===================================================================
--- branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_parametrizer_isomap.cpp	2012-08-01 17:59:32 UTC (rev 49474)
+++ branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_parametrizer_isomap.cpp	2012-08-01 18:48:10 UTC (rev 49475)
@@ -69,18 +69,25 @@
 
 	eigensolver.compute(final);
 
-	 if (eigensolver.info() != Success)
-		 return false;
+	//cout << map_matrix << endl;
 
-	cout << eigensolver.eigenvalues() << endl;
+	if (eigensolver.info() != Success) {
+		cout << "isomap solver failure" << endl;
+		return false;
+	}
 
-	 return true;
+	//cout << endl << "eigenvalues" << endl << eigensolver.eigenvalues() << endl;
+	//cout << endl << "UVs:" << endl;
+
+	return true;
 }
 
 void IsomapSolver::load_uv_solution(int index, float uv[2])
 {
 	uv[0] = eigensolver.eigenvectors()(index, size - 1)*sqrt(eigensolver.eigenvalues()(size - 1));
 	uv[1] = eigensolver.eigenvectors()(index, size - 2)*sqrt(eigensolver.eigenvalues()(size - 2));
+
+//	cout << uv[0] << ' ' << uv[1] << endl;
 }
 
 void param_isomap_new_solver(int nverts)




More information about the Bf-blender-cvs mailing list