[Bf-blender-cvs] [21bccefd123] uv_unwrapping_slim_algorithm: SLIM: move code around, no functional changes.

Brecht Van Lommel noreply at git.blender.org
Mon Mar 27 22:44:32 CEST 2017


Commit: 21bccefd1238f68768c441b54041eabab8245164
Author: Brecht Van Lommel
Date:   Sat Mar 25 14:16:02 2017 +0100
Branches: uv_unwrapping_slim_algorithm
https://developer.blender.org/rB21bccefd1238f68768c441b54041eabab8245164

SLIM: move code around, no functional changes.

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

M	intern/slim/CMakeLists.txt
R100	intern/slim/area_compensation.h	intern/slim/intern/area_compensation.h
R100	intern/slim/geometry_data_retrieval.h	intern/slim/intern/geometry_data_retrieval.h
R100	intern/slim/least_squares_relocator.h	intern/slim/intern/least_squares_relocator.h
R100	intern/slim/slim.h	intern/slim/intern/slim.h
R100	intern/slim/slim_parametrizer.h	intern/slim/intern/slim_parametrizer.h
R100	intern/slim/uv_initializer.h	intern/slim/intern/uv_initializer.h
M	source/blender/editors/uvedit/uvedit_parametrizer.c

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

diff --git a/intern/slim/CMakeLists.txt b/intern/slim/CMakeLists.txt
index 0cb66132c6c..d331a0aebed 100644
--- a/intern/slim/CMakeLists.txt
+++ b/intern/slim/CMakeLists.txt
@@ -14,21 +14,21 @@ set(INC_SYS
 
 set(SRC
   slim_matrix_transfer.h
-  slim.h
-  slim_parametrizer.h
-  uv_initializer.h
   slim_capi.h
-  area_compensation.h
-  least_squares_relocator.h
-  geometry_data_retrieval.h
 
+  intern/area_compensation.cpp
+  intern/area_compensation.h
+  intern/geometry_data_retrieval.cpp
+  intern/geometry_data_retrieval.h
+  intern/least_squares_relocator.cpp
+  intern/least_squares_relocator.h
   intern/slim.cpp
+  intern/slim.h
+  intern/slim_capi.cpp
   intern/slim_parametrizer.cpp
+  intern/slim_parametrizer.h
   intern/uv_initializer.cpp
-  intern/slim_capi.cpp
-  intern/area_compensation.cpp
-  intern/least_squares_relocator.cpp
-  intern/geometry_data_retrieval.cpp
+  intern/uv_initializer.h
 
 
   ${ADDITIONAL_SOURCES}
diff --git a/intern/slim/area_compensation.h b/intern/slim/intern/area_compensation.h
similarity index 100%
rename from intern/slim/area_compensation.h
rename to intern/slim/intern/area_compensation.h
diff --git a/intern/slim/geometry_data_retrieval.h b/intern/slim/intern/geometry_data_retrieval.h
similarity index 100%
rename from intern/slim/geometry_data_retrieval.h
rename to intern/slim/intern/geometry_data_retrieval.h
diff --git a/intern/slim/least_squares_relocator.h b/intern/slim/intern/least_squares_relocator.h
similarity index 100%
rename from intern/slim/least_squares_relocator.h
rename to intern/slim/intern/least_squares_relocator.h
diff --git a/intern/slim/slim.h b/intern/slim/intern/slim.h
similarity index 100%
rename from intern/slim/slim.h
rename to intern/slim/intern/slim.h
diff --git a/intern/slim/slim_parametrizer.h b/intern/slim/intern/slim_parametrizer.h
similarity index 100%
rename from intern/slim/slim_parametrizer.h
rename to intern/slim/intern/slim_parametrizer.h
diff --git a/intern/slim/uv_initializer.h b/intern/slim/intern/uv_initializer.h
similarity index 100%
rename from intern/slim/uv_initializer.h
rename to intern/slim/intern/uv_initializer.h
diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c
index 01e69d367fc..44fe9a62b9e 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -4195,808 +4195,809 @@ void param_construct_end(ParamHandle *handle, ParamBool fill, ParamBool impl)
 	phandle->state = PHANDLE_STATE_CONSTRUCTED;
 }
 
-void param_slim_enrich_handle(ParamHandle *handle,
-							  SLIMMatrixTransfer *mt,
-							  float *weight_array,
-							  int n_iterations,
-							  bool skip_initialization,
-							  bool is_minimize_stretch)
-{
-
-	PHandle *phandle = (PHandle *)handle;
 
-	phandle->mt = mt;
-	phandle->n_iterations = n_iterations;
-	phandle->skip_initialization = skip_initialization;
-	phandle->weight_array = weight_array;
-	phandle->is_minimize_stretch = is_minimize_stretch;
+void param_begin(ParamHandle *handle, ParamBool abf, bool use_slim)
+{
+	if (use_slim) {
+		param_slim_begin(handle);
+	}
+	else {
+		param_lscm_begin(handle, PARAM_FALSE, abf);
+	}
 }
 
-
-/* In the following are all functions necessary to transfer data from the native part to SLIM. */
-
-/* Allocate pointer arrays for each matrix-group. Meaning as many pointers per array as there are charts. */
-static void allocate_memory_for_pointerarrays(SLIMMatrixTransfer *mt, PHandle *phandle)
+void param_solve(ParamHandle *handle, bool use_slim)
 {
-	mt->n_charts = phandle->ncharts;
-	mt->n_verts = MEM_mallocN(mt->n_charts * sizeof(*mt->n_verts), "Array of number of vertices per Chart");
-	mt->n_faces = MEM_mallocN(mt->n_charts * sizeof(*mt->n_faces), "Array of number of Faces per Chart");
-	mt->n_edges = MEM_mallocN(mt->n_charts * sizeof(*mt->n_edges), "Array of number of Edges per Chart");
-	mt->n_pinned_vertices = MEM_mallocN(mt->n_charts * sizeof(*mt->n_pinned_vertices), "Array of number of Faces per Chart");
-	mt->n_boundary_vertices = MEM_mallocN(mt->n_charts * sizeof(*mt->n_boundary_vertices), "Array of number of Faces per Chart");
-
-	mt->v_matrices = MEM_mallocN(mt->n_charts * sizeof(*mt->v_matrices), "Array of pointers to Vertex matrices");
-	mt->uv_matrices = MEM_mallocN(mt->n_charts * sizeof(*mt->uv_matrices), "Array of pointers to UV matrices");
-	mt->pp_matrices = MEM_mallocN(mt->n_charts * sizeof(*mt->pp_matrices), "Array of pointers to Pinned-Vertex-Position matrices");
-
-	mt->f_matrices = MEM_mallocN(mt->n_charts * sizeof(*mt->f_matrices), "Array of pointers to Face matrices");
-	mt->p_matrices = MEM_mallocN(mt->n_charts * sizeof(*mt->p_matrices), "Array of pointers to Pinned-Vertex matrices");
-	mt->b_vectors = MEM_mallocN(mt->n_charts * sizeof(*mt->b_vectors), "Array of pointers to boundary-Vertex vectors");
-	mt->e_matrices = MEM_mallocN(mt->n_charts * sizeof(*mt->e_matrices), "Array of pointers to Edge matrices");
-
-	mt->el_vectors = MEM_mallocN(mt->n_charts * sizeof(*mt->el_vectors), "Array of pointers to Edge-Length vectors");
-	mt->w_vectors = MEM_mallocN(mt->n_charts * sizeof(*mt->w_vectors), "Array of pointers to weight-per-face vectors");
+	if (use_slim) {
+		param_slim_solve(handle);
+	}
+	else {
+		param_lscm_solve(handle);
+	}
 }
 
-/* For one chart, allocate memory. If no accurate estimate (e.g. for number of pinned vertices) overestimate and
- * correct later. */
-static void allocate_memory_for_matrices(const int chartNr, const PHandle *phandle, const SLIMMatrixTransfer *mt)
+void param_end(ParamHandle *handle, bool use_slim)
 {
-	mt->n_verts[chartNr] = phandle->charts[chartNr]->nverts;
-	mt->n_faces[chartNr] = phandle->charts[chartNr]->nfaces;
-	mt->n_edges[chartNr] = phandle->charts[chartNr]->nedges;
-
-	mt->v_matrices[chartNr] = MEM_mallocN(mt->n_verts[chartNr] * 3 * sizeof(**mt->v_matrices), "Vertex Matrix");
-	mt->uv_matrices[chartNr] = MEM_mallocN(mt->n_verts[chartNr] * 2 * sizeof(**mt->uv_matrices), "UV Matrix");
-	mt->pp_matrices[chartNr] = MEM_mallocN(mt->n_verts[chartNr] * 2 * sizeof(**mt->pp_matrices), "Pinned-Vertex-position Matrix");
-
-	mt->f_matrices[chartNr] = MEM_mallocN(mt->n_faces[chartNr] * 3 * sizeof(**mt->f_matrices), "Face Matrix");
-	mt->p_matrices[chartNr] = MEM_mallocN(mt->n_verts[chartNr] * sizeof(**mt->p_matrices), " Pinned-Vertex Matrix");
-	mt->b_vectors[chartNr] = MEM_mallocN(mt->n_verts[chartNr] * sizeof(**mt->b_vectors), " Boundary-Vertex Vector");
-	//also clear memory for weight vectors, hence calloc
-	mt->w_vectors[chartNr] = MEM_callocN(mt->n_verts[chartNr] * sizeof(**mt->w_vectors), " Weight-per-face Vector");
-
-	mt->e_matrices[chartNr] = MEM_mallocN(mt->n_edges[chartNr] * 2 * 2 * sizeof(**mt->e_matrices), " Edge matrix");
-	mt->el_vectors[chartNr] = MEM_mallocN(mt->n_edges[chartNr] * 2 * sizeof(**mt->el_vectors), " Edge-Length Vector");
+	if (use_slim) {
+		param_slim_end(handle);
+	}
+	else {
+		param_lscm_end(handle);
+	}
 }
 
-/* Transfer edges and edge lengths */
-static void transfer_edges(const int chartNr, const PHandle *phandle, const SLIMMatrixTransfer *mt)
+void param_lscm_begin(ParamHandle *handle, ParamBool live, ParamBool abf)
 {
-	PChart *chart = phandle->charts[chartNr];
-
-	int *E = mt->e_matrices[chartNr];
-	double *EL = mt->el_vectors[chartNr];
+	PHandle *phandle = (PHandle *)handle;
+	PFace *f;
+	int i;
 
-	int eid = 0;
+	param_assert(phandle->state == PHANDLE_STATE_CONSTRUCTED);
+	phandle->state = PHANDLE_STATE_LSCM;
 
-	PEdge *e, *e1;
-	PEdge *outer;
-	p_chart_boundaries(chart, NULL, &outer);
-	PEdge *be = outer;
+	for (i = 0; i < phandle->ncharts; i++) {
+		for (f = phandle->charts[i]->faces; f; f = f->nextlink)
+			p_face_backup_uvs(f);
+		p_chart_lscm_begin(phandle->charts[i], (PBool)live, (PBool)abf);
+	}
+}
 
-	do {
-		E[eid] = be->vert->slim_id;
-		EL[eid] = p_edge_length(be);
+void param_lscm_solve(ParamHandle *handle)
+{
+	PHandle *phandle = (PHandle *)handle;
+	PChart *chart;
+	int i;
+	PBool result;
 
-		be = p_boundary_edge_next(be);
-		E[eid + mt->n_edges[chartNr] + mt->n_boundary_vertices[chartNr]] = be->vert->slim_id;
-		eid++;
+	param_assert(phandle->state == PHANDLE_STATE_LSCM);
 
-	} while (be != outer);
+	for (i = 0; i < phandle->ncharts; i++) {
+		chart = phandle->charts[i];
 
-	for (e = chart->edges; e; e = e->nextlink) {
-		e1 = e->next;
+		if (chart->u.lscm.context) {
+			result = p_chart_lscm_solve(phandle, chart);
 
-		E[eid] = e->vert->slim_id;
-		EL[eid] = p_edge_length(e);
+			if (result && !(chart->flag & PCHART_NOPACK))
+				p_chart_rotate_minimum_area(chart);
 
-		E[eid + mt->n_edges[chartNr] + mt->n_boundary_vertices[chartNr]] = e1->vert->slim_id;
-		eid++;
+			if (!result || (chart->u.lscm.pin1))
+				p_chart_lscm_end(chart);
+		}
 	}
 }
 
-/* Transfer vertices and pinned information */
-static void transfer_vertices(const int chartNr, const PHandle *phandle, SLIMMatrixTransfer *mt, float *temp_w)
+void param_lscm_end(ParamHandle *handle)
 {
-	PChart *chart = phandle->charts[chartNr];
-	PVert *v;
-
-	double *V, *UV, *PP;
-	float *W;
-	int *P;
-	float weight;
+	PHandle *phandle = (PHandle *)handle;
+	int i;
 
-	int r = mt->n_verts[chartNr];
-	V = mt->v_matrices[chartNr];
-	UV = mt->uv_matrices[chartNr];
-	P = mt->p_matrices[chartNr];
-	PP = mt->pp_matrices[chartNr];
-	W = mt->w_vectors[chartNr];
+	param_assert(phandle->state == PHANDLE_STATE_LSCM);
 
-	int pVid = 0;
-	int vid = mt->n_boundary_vertices[chartNr];
-	//For every vertex, fill up V matrix and P matrix (pinned vertices)
-	for (v = chart->verts; v; v = v->nextlink) {
+	for (i = 0; i < phandle->ncharts; i++) {
+		p_chart_lscm_end(phandle->charts[i]);
+#if 0
+		p_chart_complexify(phandle->charts[i]);
+#endif
+	}
 
-		if (!v->on_boundary_flag) {
-			if (mt->with_weighted_parameterization) {
-				weight = temp_w[v->u.key];
-				W[vid] = weight;
-			}
+	phandle->state = PHANDLE_STATE_CONSTRUCTED;
+}
 
-			v->slim_id = vid;
-			vid++;
-		}
+void param_smooth_area(ParamHandle *handle)
+{
+	PHandle *phandle = (PHandle *)handle;
+	int i;
 
-		V[v->slim_id] = v->co[0];
-		V[r + v->slim_id] = v->co[1];
-		V[2 * r + v->slim_id] = v->co[2];
+	param_assert(phandle->state == PHANDLE_STATE_CONSTRUCTED);
 
-		UV[

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list