Description
TL;DR: Evaluate and implement published algorithms for the simplification of textured meshes / UV-space mapping.
When naively simplifying meshes with UV coordinates, the texture can become distorted or even invalid. Take for example UV seams, if you remove a vertex which is on the seam, it's likely that the interpolated UV-coordinates on the new triangles will have values that fall between the original texture patches in the texture atlas. Even without seems, UV-mapping always stretches the texture while draping it on the mesh. If you remove vertices, the stretching parameters will change, and the texture will seemingly shift its position on the mesh.
For us, this appears to be a problem in the Alpenite Netidee project, where we implement a Nanite like LOD structure for a massive dataset. There, we repeatedly simplify and remap meshlets, and we see distortions in the texture. We believe that this is due to the aforementioned shifting.
I have found 3 publications describing solutions:
- Accurate Simplification of Multi-Chart Textured Models (N. Coll, T. Paradinas, https://onlinelibrary.wiley.com/doi/full/10.1111/j.1467-8659.2010.01652.x)
- Simplification, approximation and deformation of large models (PhD thesis, Paradinas, https://dugi-doc.udg.edu/bitstream/handle/10256/4511/ttps.pdf?sequence=1)
- Mesh Simplification With Appearance-Driven Optimizations (YONGZHANG XIAN et al, https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9068238)
There might be more. Your task would be to implement a working solution with CGAL. Currently we use the simplification package, and the solution should be compatible with it.
Tasks
- Read the related work and distil a proposal algorithm
- Prepare some artificial test cases
- Prepare some practical test cases (from our data)
- Implement the algorithm
- Show that it works using the test cases.
Requirements
- Knowledge of C++ and templates is strictly required (CGAL is template heavy)
- Interest for arithmetical problems.
- Knowledge of English language (source code comments and final report should be in English)
Environment
The project should be implemented as an extra GPL library within the alpine maps project.