[Bf-blender-cvs] [a2f4d70] soc-2016-uv_tools: bugfix for NFP computation
Phil Gosch
noreply at git.blender.org
Mon Jul 11 17:22:48 CEST 2016
Commit: a2f4d70de95dab1f06ae109fbbb26c6b54cdeca7
Author: Phil Gosch
Date: Mon Jul 11 17:22:34 2016 +0200
Branches: soc-2016-uv_tools
https://developer.blender.org/rBa2f4d70de95dab1f06ae109fbbb26c6b54cdeca7
bugfix for NFP computation
Also introduces some shiny new debug prints.
===================================================================
M source/blender/editors/uvedit/uvedit_parametrizer.c
===================================================================
diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c
index 275dee9..abf0d1c 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -4908,7 +4908,11 @@ void p_convex_hull_compute_horizontal_angles(PConvexHull *hull)
hull->h_verts[j]->edge->u.horizontal_angle = p_edge_horizontal_angle(hull->h_verts[j], hull->h_verts[j + 1]);
}
- //printf("---horizontal angle of edge [%i]: %f\n", j, hull->h_verts[j]->edge->u.horizontal_angle);
+ /* Since we're counting edges in CW winding we have to set 0.0 to 2*pi */
+ if (compare_ff(hull->h_verts[j]->edge->u.horizontal_angle, 0.0f, FLT_EPSILON)) {
+ hull->h_verts[j]->edge->u.horizontal_angle += 2 * M_PI;
+ }
+ printf("---horizontal angle of edge [%i]: %f\n", j, hull->h_verts[j]->edge->u.horizontal_angle);
}
}
@@ -5070,14 +5074,17 @@ bool p_temp_cfr_check(PNoFitPolygon **nfps, PNoFitPolygon *ifp, float p[2], int
return false;
}
+ /* Make sure point is outside other NFPs */
for (i = 0; i < nfp_count; i++) {
if (nfps[i] && (i != index)) {
if (p_point_inside_nfp(nfps[i], p)) {
+ printf("--end_pos x: %f y: %f is inside nfps[%i]!\n", p[0], p[1], index);
return false;
}
}
}
+ printf("--end_pos inside IFP and outside of other NFPs!\n");
return true;
}
@@ -5105,6 +5112,13 @@ PNoFitPolygon *p_no_fit_polygon_create(PConvexHull *item, PConvexHull *fixed)
qsort(points, (size_t)nfp->nverts, sizeof(PVert *), vert_anglesort);
printf("Sorting done\n");
+ for (i = 0; i < nfp->nverts; i++) {
+ printf("-- horizontal angle of points[%i]: %f\n", i, points[i]->edge->u.horizontal_angle);
+ }
+
+ printf("***item ref vertex: x: %f, y: %f\n", item->h_verts[item->ref_vert_index]->uv[0], item->h_verts[item->ref_vert_index]->uv[1]);
+ printf("***fixed ref vertex: x: %f, y: %f\n", fixed->h_verts[fixed->ref_vert_index]->uv[0], fixed->h_verts[fixed->ref_vert_index]->uv[1]);
+
/* offset edges so they start at item ref vert*/
/* ToDo SaphireS: not used yet! also optimize.. */
for (j = 0; j < nfp->nverts; j++) {
@@ -5126,8 +5140,8 @@ PNoFitPolygon *p_no_fit_polygon_create(PConvexHull *item, PConvexHull *fixed)
nfp->final_pos[0] = p;
for (j = 1; j < nfp->nverts; j++) {
PPointUV *p1 = (PPointUV *)MEM_callocN(sizeof(*p1), "PPointUV1");
- p1->x = nfp->final_pos[j - 1]->x + points[j-1]->u.delta_edge[0];
- p1->y = nfp->final_pos[j - 1]->y + points[j-1]->u.delta_edge[1];
+ p1->x = nfp->final_pos[j - 1]->x + points[j - 1]->u.delta_edge[0];
+ p1->y = nfp->final_pos[j - 1]->y + points[j - 1]->u.delta_edge[1];
nfp->final_pos[j] = p1;
}
@@ -5383,7 +5397,7 @@ void param_irregular_pack_begin(ParamHandle *handle)
qsort(phandle->charts, (size_t)phandle->ncharts, sizeof(PChart *), chart_areasort);
if (p_compute_packing_solution(phandle)) {
- printf("packing solution found\n");
+ printf("packing solution found---------------------------------------------\n");
}
/* ToDo (SaphireS) */
More information about the Bf-blender-cvs
mailing list