###PROJECTS:### All projects are in this repository's Visual Studio Solution file.

1) GDSW_lib [Geodesic Distance Skinning Weights]

  • Library computes geodesic distance on the mesh surface using Floyd-Warshall algorithm.
  • The geodesic distance is than used for computation of skinning weights
  • It is a very trivial approach how skinning weights can be computed
  • A more complex approach might be needed in the future

Main functions:

void FloydWarshall(MeshGraph * pMesh, Array2D<float>& M)
  • Computes distances on the graph

2) LBSE_lib [Laplacian-Based Skeleton Extraction]

  • Library uses Laplacian based skeleton contraction for extraction of the skeleton from input mesh
  • The resulting skeleton is a tree structure

Main functions:

void computeSkeleton(t3DModel *pModel, 
                     int sourcePointID, 
                     SN::SkeletonNode * skeleton, 
                     int * ite, 
                     bool &recreateOperator, 
                     float modelMaxDim)
  • Computes skeleton from input mesh

3) PCT_lib [Point Cloud Triangulation]

  • Library computes triangulation from input point cloud
  • The global triangulation is composed from local Delaunay triangulations

Main functions:

void computeLocalTriangulationFromPoints(int index, int numOfPoints, 
                                         float * points, int &numOfIndices, 
                                         int ** indices, 
                                         std::vector<std::set<int>> globalNeighbourhoods, 
                                         float * nor, bool visualization = false)
  • Computes local triangulation
void computeGlobalTriangulationFromPoints(int numOfPoints, 
                                          float * points, 
                                          int &numOfIndices, 
                                          int ** indices, 
                                          float ** normals, 
                                          bool visualization = false)
  • computes global triangulation

4) SDF_lib [Shape Diameter Function]

  • Not yet needed, but I have left it there for keeping compatibility of source files between my repo and this repo.

###PREPROCESSOR DEFINITIONS:###

D_SCL_SECURE_NO_WARNINGS;_NLOG;_NMMGR;NOMINMAX;

###HOW IT WORKS:###

When a process wants to extract a skeleton from an input mesh, the process has to call the "computeSkeleton" method from LBSE_lib. Next, for extraction of skinning weights, the GDSW_lib has to be used.

###LIBRARIES NEEDED TO RUN EXTRACTION:###

  • Boost - used for serialization of the skeletons, can be removed later if serialization is not needed
  • TNT - vectors and matrices used in Jama
  • Jama - linear solver for TNT vectors and matrices
  • ViennaCL - linear solver with OpenCL support...the solver can be parallelized on the GPU
  • Fade2D - used for Delaunay triangulation