[Bf-blender-cvs] [732159dcf8c] uv_unwrapping_slim_algorithm: UV Unwrapping SLIM: further refactoring according to discussion on D2530

Aurel Gruber noreply at git.blender.org
Tue Mar 14 09:43:19 CET 2017


Commit: 732159dcf8c8d9f1d91a113919608b80eae7d766
Author: Aurel Gruber
Date:   Thu Mar 9 16:44:38 2017 +0100
Branches: uv_unwrapping_slim_algorithm
https://developer.blender.org/rB732159dcf8c8d9f1d91a113919608b80eae7d766

UV Unwrapping SLIM: further refactoring according to discussion on D2530

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

M	intern/slim/CMakeLists.txt
M	intern/slim/geometry_data_retrieval.h
D	intern/slim/matrix_transfer.h
M	intern/slim/slim_c_interface.h
M	intern/slim/slim_parametrizer.h
M	intern/slim/src/geometry_data_retrieval.cpp
M	intern/slim/src/slim_c_interface.cpp
M	intern/slim/src/slim_parametrizer.cpp
M	source/blender/editors/uvedit/CMakeLists.txt
M	source/blender/editors/uvedit/uvedit_parametrizer.c
M	source/blender/editors/uvedit/uvedit_parametrizer.h
M	source/blender/editors/uvedit/uvedit_unwrap_ops.c

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

diff --git a/intern/slim/CMakeLists.txt b/intern/slim/CMakeLists.txt
index ae133525a97..301df00ee76 100644
--- a/intern/slim/CMakeLists.txt
+++ b/intern/slim/CMakeLists.txt
@@ -13,7 +13,7 @@ set(INC_SYS
 )
 
 set(SRC
-  matrix_transfer.h
+  slim_matrix_transfer.h
   slim.h
   slim_parametrizer.h
   uv_initializer.h
diff --git a/intern/slim/geometry_data_retrieval.h b/intern/slim/geometry_data_retrieval.h
index 1ab96f9d77b..21c76582331 100644
--- a/intern/slim/geometry_data_retrieval.h
+++ b/intern/slim/geometry_data_retrieval.h
@@ -31,7 +31,7 @@
 #include <stdio.h>
 #include <Eigen/Dense>
 
-#include "matrix_transfer.h"
+#include "slim_matrix_transfer.h"
 #include "slim.h"
 #include "uv_initializer.h"
 
@@ -71,7 +71,7 @@ namespace retrieval {
 
 	void retrievePinnedVertices(GeometryData &gd, bool borderVerticesArePinned);
 
-	void retrieveGeometryDataMatrices(const matrix_transfer *transferredData,
+	void retrieveGeometryDataMatrices(const SLIMMatrixTransfer *transferredData,
 									  const int uvChartIndex,
 									  GeometryData &gd);
 }
diff --git a/intern/slim/matrix_transfer.h b/intern/slim/matrix_transfer.h
deleted file mode 100644
index 4584981f93e..00000000000
--- a/intern/slim/matrix_transfer.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): Aurel Gruber
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifndef matrix_transfer_h
-#define matrix_transfer_h
-
-#include <stdio.h>
-
-/*	Struct that holds all the information and data matrices to be transfered from the native Blender part to SLIM, named as follows:
-
-	Matrix/Vector	|	contains pointers to arrays of:
-	________________|_____________________________________________
-	Vmatrices		|	vertex positions
-	UVmatrices		|	UV positions of vertices
-	PPmatrice		|	positions of pinned vertices
-	ELvectors		|	Edge lengths
-	Wvectors		|	weights pre vertex
-	Fmatrices		|	vertexindex-triplets making up the faces
-	Pmatrices		|	indices of pinned vertices
-	Ematrix			|	vertexindex-tuples making up edges
-	Bvector			|	vertexindices of boundary vertices
-	---------------------------------------------------------------
-*/
-typedef struct {
-	int nCharts;
-	int *nVerts, *nFaces, *nPinnedVertices, *nBoundaryVertices, *nEdges;
-
-	double **Vmatrices, **UVmatrices, **PPmatrices;
-	double **ELvectors;
-	float **Wvectors;
-
-	int **Fmatrices, **Pmatrices, **Ematrices;
-	int **Bvectors;
-
-	bool fixed_boundary;
-	bool pinned_vertices;
-	bool with_weighted_parameterization;
-	double weight_influence;
-	bool transform_islands;
-	int slim_reflection_mode;
-	double relative_scale;
-
-} matrix_transfer;
-
-#endif /* matrix_transfer_h */
-
diff --git a/intern/slim/slim_c_interface.h b/intern/slim/slim_c_interface.h
index 008b9125398..7e9dea63d91 100644
--- a/intern/slim/slim_c_interface.h
+++ b/intern/slim/slim_c_interface.h
@@ -28,18 +28,17 @@
 #ifndef slim_c_interface_h
 #define slim_c_interface_h
 
-#include "matrix_transfer.h"
+#include "slim_matrix_transfer.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-
-void param_slim_C(matrix_transfer *mt, int nIterations, bool borderVerticesArePinned, bool skipInitialization);
-void transfer_uvs_blended_C(matrix_transfer *mt, void* slim, int chartNr, float blend);
+void param_slim_C(SLIMMatrixTransfer *mt, int n_iterations, bool are_border_vertices_pinned, bool skip_initialization);
+void transfer_uvs_blended_C(SLIMMatrixTransfer *mt, void *slim, int uv_chart_index, float blend);
 void param_slim_single_iteration_C(void *slim);
-void* setup_slim_C(matrix_transfer *mt, int chartNr, bool fixBorder, bool skipInitialization);
-void free_slim_data_C(void* slimDataPtr);
+void* setup_slim_C(SLIMMatrixTransfer *mt, int uv_chart_index, bool are_border_vertices_pinned, bool skip_initialization);
+void free_slim_data_C(void* slim_data_ptr);
 
 #ifdef __cplusplus
 }
diff --git a/intern/slim/slim_parametrizer.h b/intern/slim/slim_parametrizer.h
index 321b0944bae..f5d742d0060 100644
--- a/intern/slim/slim_parametrizer.h
+++ b/intern/slim/slim_parametrizer.h
@@ -29,7 +29,7 @@
 #define slim_parametrizer_h
 
 
-#include "matrix_transfer.h"
+#include "slim_matrix_transfer.h"
 #include "slim.h"
 #include <igl/Timer.h>
 
@@ -39,14 +39,14 @@ using namespace igl;
 */
 
 Eigen::MatrixXd getInteractiveResultBlendedWithOriginal(float blend, SLIMData *slimData);
-SLIMData* setup_slim(matrix_transfer *transferredData,
+SLIMData* setup_slim(SLIMMatrixTransfer *transferredData,
 					 	 int nIterations,
 						 int uvChartIndex,
 						 igl::Timer &timer,
 						 bool borderVerticesArePinned,
 						 bool skipInitialization);
-void transferUvsBackToNativePart(matrix_transfer *mt, Eigen::MatrixXd &UV, int uvChartIndex);
+void transferUvsBackToNativePart(SLIMMatrixTransfer *mt, Eigen::MatrixXd &UV, int uvChartIndex);
 void param_slim_single_iteration(SLIMData *slimData);
-void param_slim(matrix_transfer *mt, int n_iterations, bool fixBorder, bool skipInitialization);
+void param_slim(SLIMMatrixTransfer *mt, int n_iterations, bool fixBorder, bool skipInitialization);
 void free_slim_data(SLIMData *slimData);
 #endif // !slim_parametrizer_h
diff --git a/intern/slim/src/geometry_data_retrieval.cpp b/intern/slim/src/geometry_data_retrieval.cpp
index 4c5435ac716..6a8fac223b5 100644
--- a/intern/slim/src/geometry_data_retrieval.cpp
+++ b/intern/slim/src/geometry_data_retrieval.cpp
@@ -31,7 +31,7 @@
 
 #include "slim.h"
 #include <Eigen/Dense>
-#include "matrix_transfer.h"
+#include "slim_matrix_transfer.h"
 
 using namespace igl;
 using namespace Eigen;
@@ -155,37 +155,37 @@ namespace retrieval {
 		}
 	}
 
-	void retrieveGeometryDataMatrices(const matrix_transfer *transferredData,
+	void retrieveGeometryDataMatrices(const SLIMMatrixTransfer *transferredData,
 									  const int uvChartIndex,
 									  GeometryData &gd){
 
-		gd.numberOfVertices = transferredData->nVerts[uvChartIndex];
-		gd.numberOfFaces = transferredData->nFaces[uvChartIndex];
+		gd.numberOfVertices = transferredData->n_verts[uvChartIndex];
+		gd.numberOfFaces = transferredData->n_faces[uvChartIndex];
 		// nEdges in transferredData accounts for boundary edges only once
-		gd.numberOfEdgesTwice = transferredData->nEdges[uvChartIndex] + transferredData->nBoundaryVertices[uvChartIndex];
-		gd.numberOfBoundaryVertices = transferredData->nBoundaryVertices[uvChartIndex];
-		gd.numberOfPinnedVertices = transferredData->nPinnedVertices[uvChartIndex];
+		gd.numberOfEdgesTwice = transferredData->n_edges[uvChartIndex] + transferredData->n_boundary_vertices[uvChartIndex];
+		gd.numberOfBoundaryVertices = transferredData->n_boundary_vertices[uvChartIndex];
+		gd.numberOfPinnedVertices = transferredData->n_pinned_vertices[uvChartIndex];
 
-		new (&gd.vertexPositions3D) Map<MatrixXd>(transferredData->Vmatrices[uvChartIndex], gd.numberOfVertices, gd.COLUMNS_3);
-		new (&gd.uvPositions2D) Map<MatrixXd>(transferredData->UVmatrices[uvChartIndex], gd.numberOfVertices, gd.COLUMNS_2);
+		new (&gd.vertexPositions3D) Map<MatrixXd>(transferredData->v_matrices[uvChartIndex], gd.numberOfVertices, gd.COLUMNS_3);
+		new (&gd.uvPositions2D) Map<MatrixXd>(transferredData->uv_matrices[uvChartIndex], gd.numberOfVertices, gd.COLUMNS_2);
 		gd.positionsOfPinnedVertices2D = MatrixXd();
 
-		new (&gd.facesByVertexindices) Map<MatrixXi>(transferredData->Fmatrices[uvChartIndex], gd.numberOfFaces, gd.COLUMNS_3);
-		new (&gd.edgesByVertexindices) Map<MatrixXi>(transferredData->Ematrices[uvChartIndex], gd.numberOfEdgesTwice, gd.COLUMNS_2);
+		new (&gd.facesByVertexindices) Map<MatrixXi>(transferredData->f_matrices[uvChartIndex], gd.numberOfFaces, gd.COLUMNS_3);
+		new (&gd.edgesByVertexindices) Map<MatrixXi>(transferredData->e_matrices[uvChartIndex], gd.numberOfEdgesTwice, gd.COLUMNS_2);
 		gd.PinnedVertexIndices = VectorXi();
 
-		new (&gd.edgeLengths) Map<VectorXd>(transferredData->ELvectors[uvChartIndex], gd.numberOfEdgesTwice);
-		new (&gd.boundaryVertexIndices) Map<VectorXi>(transferredData->Bvectors[uvChartIndex], gd.numberOfBoundaryVertices);
+		new (&gd.edgeLengths) Map<VectorXd>(transferredData->el_vectors[uvChartIndex], gd.numberOfEdgesTwice);
+		new (&gd.boundaryVertexIndices) Map<VectorXi>(transferredData->b_vectors[uvChartIndex], gd.numberOfBoundaryVertices);
 
 		gd.withWeightedParameteriztion = transferredData->with_weighted_parameterization;
-		new (&gd.weightsPerVertex) Map<VectorXf>(transferredData->Wvectors[uvChartIndex], gd.numberOfVertices);
+		new (&gd.weightsPerVertex) Map<VectorXf>(transferredData->w_vectors[uvChartIndex], gd.numberOfVertices);
 		gd.weightInfluence = transferredData->weight_influence;
 
 		if (gd.numberOfPinnedVertices != 0){
 			new (&gd.ExplicitlyPinnedVertexIndices) Map<VectorXi>(
-											transferredData->Pmatrices[uvChartIndex], gd.numberOfPinnedVertices);
+											transferredData->p_matrices[uvChartIndex], gd.numberOfPinnedVertices);
 			new (&gd.positionsOfExplicitlyPinnedVertices2D) Map<Matrix<double, Dynamic, Dynamic, RowMajor>>(
-									transferredData->PPmatrices[uvChartIndex], gd.numberOfPinnedVertices, gd.COLUMNS_2);
+									transferredData->pp_matrices[uvChartIndex], gd.numberOfPinnedVertices, gd.COLUMNS_2);
 		}
 	}
 }
diff --git a/intern/slim/src/slim_c_interface.cpp b/intern/slim/src/slim_c_interface.cpp
index 6b91f141bdd..349c290690a 100644
--- a/intern/slim/src/slim_c_interface.cpp

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list