[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