Abstract
Inspired by the recent growth of computational methods for general polygonal and polyhedral meshes, this paper introduces Cinolib: a novel header only C++ library for geometry processing. Cinolib differentiates itself from similar toolkits in that it is specifically designed to support a wide set of meshes, such as triangle, quadrilateral and general polygonal surface meshes, as well as tetrahedral, hexahedral and general polyhedral volumetric meshes. At the core of the library there is a hierarchical data structure that factorizes the common properties among the various meshes, allowing tools and algorithms to operate on the widest possible set of meshes with a single implementation, thus avoiding code repetition and facilitating bug fixing and software maintenance. Cinolib is licensed with MIT, it currently counts more than 50K lines of code and, besides the core structure, already comprises a vast set of widespread tools for computer graphics and engineering.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Vaxman, A., et al.: libhedra: geometric processing and optimization of polygonal meshes (2017). https://github.com/avaxman/libhedra
Attene, M.: ImatiSTL - fast and reliable mesh processing with a hybrid kernel. In: Gavrilova, M.L., Tan, C.J.K. (eds.) Transactions on Computational Science XXIX. LNCS, vol. 10220, pp. 86–96. Springer, Heidelberg (2017). https://doi.org/10.1007/978-3-662-54563-8_5
Botsch, M., Steinberg, S., Bischoff, S., Kobbelt, L.: OpenMesh-a generic and efficient polygon mesh data structure (2002)
Boykov, Y., Veksler, O., Zabih, R.: Fast approximate energy minimization via graph cuts. IEEE Trans. Pattern Anal. Mach. Intell. 23(11), 1222–1239 (2001)
Cherchi, G., Livesu, M., Scateni, R.: Polycube simplification for coarse layouts of surfaces and volumes. Comput. Graph. Forum 35(5), 11–20 (2016). https://doi.org/10.1111/cgf.12959
Cignoni, P., Callieri, M., Corsini, M., Dellepiane, M., Ganovelli, F., Ranzuglia, G.: MeshLAB: an open-source mesh processing tool. In: Eurographics Italian Chapter Conference 2008, pp. 129–136 (2008)
Crane, K., Weischedel, C., Wardetzky, M.: Geodesics in heat: a new approach to computing distance based on heat flow. ACM Trans. Graph. (TOG) 32(5), 152 (2013)
Dey, T.K., Sun, J.: Defining and computing curve-skeletons with medial geodesic function. In: Proceedings of the Fourth Eurographics Symposium on Geometry Processing, pp. 143–152. Eurographics Association (2006)
Dijkstra, E.W.: A note on two problems in connexion with graphs. Numer. Math. 1(1), 269–271 (1959)
Eck, M., DeRose, T., Duchamp, T., Hoppe, H., Lounsbery, M., Stuetzle, W.: Multiresolution analysis of arbitrary meshes. In: Proceedings of the 22nd Annual Conference on Computer Graphics and Interactive Techniques, pp. 173–182. ACM (1995)
Gao, X., Jakob, W., Tarini, M., Panozzo, D.: Robust hex-dominant mesh generation using field-guided polyhedral agglomeration. ACM Trans. Graph. (TOG) 36(4), 114 (2017)
Guennebaud, G., Jacob, B., et al.: Eigen v3 (2010). http://eigen.tuxfamily.org
Hughes, T.J., Cottrell, J.A., Bazilevs, Y.: Isogeometric analysis: CAD, finite elements, NURBS, exact geometry and mesh refinement. Comput. Methods Appl. Mech. Eng. 194(39–41), 4135–4195 (2005)
Jacobson, A., Panozzo, D., et al.: libigl: a simple C++ geometry processing library (2018). http://libigl.github.io/libigl/
CIVC Lab: VCG: Visualization and computer graphics library (2004). https://github.com/cnr-isti-vclab/vcglib
Levy, B.: Geogram (2015)
Lévy, B., Petitjean, S., Ray, N., Maillot, J.: Least squares conformal maps for automatic texture atlas generation. ACM Trans. Graph. (TOG) 21, 362–371 (2002)
Livesu, M.: A heat flow relaxation scheme for n dimensional discrete hyper surfaces. Comput. Graph. 71, 124–131 (2018). https://doi.org/10.1016/j.cag.2018.01.004
Livesu, M., Attene, M., Patane, G., Spagnuolo, M.: Explicit cylindrical maps for general tubular shapes. Comput.-Aided Des. 90, 27–36 (2017). https://doi.org/10.1016/j.cad.2017.05.002. SI: SPM2017
Livesu, M., Cabiddu, D., Attene, M.: Slice2Mesh: a meshing tool for the simulation of additive manufacturing processes. Comput. Graph. 80, 73–84 (2019). https://doi.org/10.1016/j.cag.2019.03.004. ISSN 0097-8493
Livesu, M., Guggeri, F., Scateni, R.: Reconstructing the curve-skeletons of 3D shapes using the visual hull. IEEE Trans. Visual Comput. Graph. 18(11), 1891–1901 (2012). https://doi.org/10.1109/TVCG.2012.71
Livesu, M., Muntoni, A., Puppo, E., Scateni, R.: Skeleton-driven adaptive hexahedral meshing of tubular shapes. Comput. Graph. Forum 35(7), 237–246 (2016). https://doi.org/10.1111/cgf.13021
Livesu, M., Scateni, R.: Extracting curve-skeletons from digital shapes using occluding contours. Vis. Comput. 29(9), 907–916 (2013). https://doi.org/10.1007/s00371-013-0855-8
Mancinelli, C., Livesu, M., Puppo, E.: A comparison of methods for gradient field estimation on simplicial meshes. Comput. Graph. 80, 37–50 (2019). https://doi.org/10.1016/j.cag.2019.03.005. ISSN 0097-8493
Méndez-Feliu, À., Sbert, M.: From obscurances to ambient occlusion: a survey. Vis. Comput. 25(2), 181–196 (2009)
Meyer, M., Desbrun, M., Schröder, P., Barr, A.H.: Discrete differential-geometry operators for triangulated 2-manifolds. In: Hege, H.C., Polthier, K. (eds.) Visualization and Mathematics III. MATHVISUAL, pp. 35–57. Springer, Heidelberg (2003). https://doi.org/10.1007/978-3-662-05105-4_2
Schneider, T., Dumas, J., Gao, X., Botsch, M., Panozzo, D., Zorin, D.: Poly-spline finite element method. CoRR abs/1804.03245 (2018), http://arxiv.org/abs/1804.03245
Shewchuk, J.R.: Triangle: engineering a 2D quality mesh generator and delaunay triangulator. In: Lin, M.C., Manocha, D. (eds.) WACG 1996. LNCS, vol. 1148, pp. 203–222. Springer, Heidelberg (1996). https://doi.org/10.1007/BFb0014497
Si, H.: TetGen, a delaunay-based quality tetrahedral mesh generator. ACM Trans. Math. Softw. (TOMS) 41(2), 11 (2015)
Sorgente, T., Biasotti, S., Livesu, M., Spagnuolo, M.: Topology-driven shape chartification. Comput.-Aided Geom. Des. 65, 13–28 (2018). https://doi.org/10.1016/j.cagd.2018.07.001
Sorkine, O., Alexa, M.: As-rigid-as-possible surface modeling. In: Proceedings of the Fifth Eurographics Symposium on Geometry Processing, pp. 109–116. Eurographics Association (2007)
Sozer, E., Brehm, C., Kiris, C.C.: Gradient calculation methods on arbitrary polyhedral unstructured meshes for cell-centered CFD solvers. In: 52nd Aerospace Sciences Meeting, p. 1440 (2014)
Stimpson, C., Ernst, C., Knupp, P., Pébay, P., Thompson, D.: The verdict library reference manual. Sandia National Laboratories Technical report 9 (2007)
Tagliasacchi, A., Alhashim, I., Olson, M., Zhang, H.: Mean curvature skeletons. Comput. Graph. Forum 31, 1735–1744 (2012)
Usai, F., Livesu, M., Puppo, E., Tarini, M., Scateni, R.: Extraction of the quad layout of a triangle mesh guided by its curve skeleton. ACM Trans. Graph. 35(1), 6:1–6:13 (2015). https://doi.org/10.1145/2809785
da Veiga, L.B., Brezzi, F., Marini, L.D., Russo, A.: The hitchhiker’s guide to the virtual element method. Math. Model. Methods Appl. Sci. 24(08), 1541–1573 (2014)
Acknowledgements
This work is partially supported by the EU ERC Advanced Grant CHANGE, grant agreement No.694515. We thank Keenan Crane for releasing the fish model in Fig. 6 to the public domain.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer-Verlag GmbH Germany, part of Springer Nature
About this chapter
Cite this chapter
Livesu, M. (2019). Cinolib: A Generic Programming Header Only C++ Library for Processing Polygonal and Polyhedral Meshes. In: Gavrilova, M., Tan, C. (eds) Transactions on Computational Science XXXIV. Lecture Notes in Computer Science(), vol 11820. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-59958-7_4
Download citation
DOI: https://doi.org/10.1007/978-3-662-59958-7_4
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-59957-0
Online ISBN: 978-3-662-59958-7
eBook Packages: Computer ScienceComputer Science (R0)