Skip to content
Mael Rouxel-Labbé edited this page Mar 28, 2024 · 1 revision

Table of Contents

GSoC 2022 Accepted Projects

The CGAL Project was a mentoring organization of the Google Summer of Code 2022. Check out the 6 successful projects there.

GSoC 2022 Projects

Below are the project ideas that were proposed during the Google Summer of Code 2022.

Isosurfacing 1: Marching Cubes and Dual Contouring

Mentors: Daniel Zint

Project description: An isosurface is a 3D surface representation of points with equal values of a scalar function defined in 3D space. The task of isosurfacing consists in generating a surface mesh from an isosurface. The marching cubes (MC) algorithm, running on regular grids - is the most popular method, but more recent variants provide guarantees on the topology of the output mesh (crack-free and 2-manifold). In this project, we will implement state-of-the art methods for uniform grids. We will seek for a generic design, for both the input function and output meshes. Time permitting, we will also implement methods that improve over the quality of the mesh elements.

References:

Required Skills: C++, geometric modeling, geometry processing, algorithms.

Contact: [email protected]

Duration: 350h

Isosurfacing 2: Marching Cubes and Dual Contouring in Octrees

Mentor: Pierre Alliez and Kacper Pluta

Project description: An isosurface is a 3D surface representation of points with equal values of a scalar function defined in 3D space. The task of isosurfacing consists in generating a surface mesh from an isosurface. The marching cubes (MC) algorithm, running on regular grids - is the most popular method, but more recent variants are adaptive on octrees. In this project, we will implement state-of-the art methods for adaptive octree grids (see recent CGAL orthtree component). We will seek for a generic design, for both the input function and output meshes.

References:

  • Construction of Topologically Correct and Manifold Isosurfaces. R. Grosso. Computer Graphics Forum 2016. https://onlinelibrary.wiley.com/doi/full/10.1111/cgf.12975
  • Manifold Dual Contouring. IEEE Transactions on Visualization and Computer Graphics. J. Warren et al. 2007, pp. 610-619, vol. 13. https://people.engr.tamu.edu/schaefer/research/dualsimp_tvcg.pdf
  • An extended triangulation to the Marching Cubes 33 algorithm. L. Custodio et al. Journal of the Brazilian Computer Society. 2019.
  • Approximating isosurfaces by guaranteed-quality triangular meshes. J. Hass and M. Trnkova. Computer Graphics Forum 2020.
  • Dual marching cubes: Primal contouring of dual grids. S. Schaefer and J. Warren. 12th Pacific Conference on Computer Graphics and Applications, 2004.
  • Unconstrained isosurface extraction on arbitrary octrees. M. Kazhdan et al. Symposium on Geometry Processing. Vol. 7. No. 2. 2007. https://hhoppe.com/proj/unconstrainediso/
  • ManifoldPlus: A Robust and Scalable Watertight Manifold Surface Generation Method for Triangle Soups. J. Huang et al. arXiv preprint arXiv:2005.11621 (2020). https://arxiv.org/pdf/2005.11621.pdf

Required Skills: Computational Geometry, Geometry Processing, C++14

Contact: [email protected]

Duration: 175h

Spectral Surface Reconstruction

Mentors: Pierre Alliez and Tong Zhao

Project description: This project aims to add a function for reconstructing watertight surfaces from un-oriented point sets. It shares the same framework of Poisson Surface Reconstruction package. Instead of solving a sparse linear system, this algorithm formulates the reconstruction problem as a generalized eigenvalue problem such that the gradient of the implicit function is most aligned with the principal axes of a tensor field, deduced by the direction of the un-oriented normals of point sets. If time allows, extensions to construct more reliable discretization domain will be explored.

References:

Required Skills: C++14, Computational Geometry, Geometry Processing.

Contact: [email protected], [email protected]

Duration: 175h

Interpolated Corrected Curvature Measures for Polygonal Surfaces

Mentor: David Cœurjolly, Jacques-Olivier Lachaud, Sébastien Loriot

Project description: Starting from the prototype code of the authors of the research article, the goal of this project is to add into CGAL a new function able to compute curvature measures on triangle meshes, that is robust to noise in vertex positions and normals. If time allows, extensions to quad meshes will be added. Implementation will be independent from the mesh data structure by relying on the extension of the BGL introduced in CGAL.

References:

Required Skills: C++14, Geometry Processing, Mesh Processing

Contact: [email protected]

Duration: 350h

Introduction of FaceGraph API in Directional

Mentor: Amir Vaxman, Andreas Fabri

Project description: The Directional library allows users to create, manipulate and visualize face-based directional fields on 3D triangular surface meshes. Currently, the library is based on a matrix format to represent meshes and fields. The goal of this project is to abstract the representation of tangent spaces and fields so that the library is flexible enough to work templated representations of the input geometry. Specifically, the candidate will demonstrate this by interfacing with the extension of the graph concepts of the BGL done by CGAL to allow various mesh data structures to be used as input by Directional. If the candidate opts for a 350h project, the second part of the project will be adding in the CGAL Polyhedron demo a plugin interfacing the Directional library to display directional fields.

Required Skills: Geometry Processing, C++14

Contact: [email protected]

Duration: 175h or 350h

Remove Boost Parameter Dependency

Mentor: Laurent Rineau, Sebastien Loriot

Project description: The package 3D Mesh Generation is using The Boost Parameter Library so as to provide a convenient way to users to pass parameters. CGAL is also using function named parameters (a rewriting of the one from boost BGL) in many other packages like in PMP. With the evolution of the c++ standard, the Boost Parameter Library no longer seems to be essential for our API and we would like to get rid of this dependency. To do so, we would like on the one hand to introduce an API using function named parameter, and on the other hand preserve the current API (to avoid breaking user code) with our own solution (variadic template and some generic wrapper class with internal tags seems to be a possible solution). The documentation will also have to be updated. This project does not require any notion of geometry.

https://doc.cgal.org/latest/Mesh_3/group__PkgMesh3Functions.html#ga1ee73dc372985c6aeef85f2415fac0ba

Required Skills: C++14

Contact: [email protected]

Duration: 175h

Enhancing the 2D Regularized Boolean Operation Demo

Mentor: Efi Fogel

Project description: The new demonstration program of the "2D Regularized Boolean Oprations" package demonstrates various operations on polygons, such as, union, intersection, and Minkowski sum. It also demonstrates the application of several operations in a pipeline fashion. The demo has not been published yet; it requires a few enhancements, such as the support of Boolean operations on general polygons bounded by non-linear curves.

Required Skills: Qt5, geometry, code development tools (e.g., git), and C++14 proficiency

Contact: proficiency

Duration: 350h

Demonstrating 2D Arrangements Embedded on the Sphere

Mentor: Efi Fogel

Project description: Recently the "2D Arrangement" package of CGAL has been enhanced with the support of 2D arrangement of geodesic arcs embedded on the sphere. Demonstrating such an arrangement graphically requires rendering in three dimensions, a.k.a. 3D graphics. This project consists of two parts:

  1. Implementing a simple drawing program that displays any given arrangement
  2. Enhancing the 2D Arrangement demo program to display arrangements on the sphere

Required Skills: Qt5, geometry, 3D graphics, code development tools (e.g., git), and C++14 proficiency

Contact: [email protected]

Duration: 350h

Geodesic Distance Computation Improvements

Mentor: Mael Rouxel-Labbé

Project description: There exists within CGAL multiple tools to compute geodesic distances over a mesh such as the Heat Method and the Triangulated Mesh Shortest Path packages. There also exists a prototype implementation of the paper Practical anisotropic geodesy. The goal of this project is to investigate a new method proposed by Trettner. et al, Geodesic Distance Computation via Virtual Source Propagation, implement it and compare it to our existing methods in terms of speed and robustness.

Required Skills: Geometry Processing, C++14

Contact: [email protected]

Duration: 175h

Enhancing basic viewers in CGAL

Mentor: Guillaume Damiand

Project description: CGAL provides several basic viewers, i.e., global functions allowing to visualize some CGAL data structures in 3D. These small viewers are very useful in order to visualize the result of an algorithm, and can help to debug code.

The goal of this project is to improve the current mechanism in order to allow users:

  1. to visualize the color attribute, if any, of a geometric object (vertex, edge, facet), and choose the appearance (e.g., solid or wireframe) of each object independently;
  2. to use a 3D viewer interactively, i.e., to add points, segments and facets directly in the viewer;
  3. to mix different viewers in a same application; for example to vizualize simultaneously a point clound and a surface mesh;
  4. to use a viewer based on other technology than Qt and QGlViewer; we can for example use SDL or Ogre.

Required Skills: C++, generic programming

Contact: [email protected]

Duration: 175h/350h

Information Candidates Should Supply

The application process has several steps. Before contacting anybody verify that you are eligible, that is that you are enrolled as student, don't get a tuition fee, etc. The next step is to contact the mentor of the project you are interested in. You have to convince him that you are the right person to get the job done. The next step is to work out more details and to contact the mentoring organization by providing the following information by email to [email protected]:

  • Project:

    • Select a project in the list and provide your personal and detailed description. If you wish to work on another idea of your own, we are pretty open as long as this serves the goal of consolidating CGAL as a whole.
    • Provide a proposal of a technical solution with your envisioned methodology. The more detailed the better.
    • Explain how the solution will be available to the user, in which form. Do not forget the documentation, unitary tests and cross-platform aspects.
    • Provide a realistic schedule with objectives (one every two weeks for example) and deadlines. Focus on mid-term objectives as well as on the final evaluation.
  • Personal data:

    • First name, last name, affiliation and geographical location.
    • A brief list of the main studies and programming courses attended, with ranking.
    • List of the most important software projects contributed and success.
    • Which are your best skills in terms of programming and scientific computing?
    • In general what is your taste in terms of programming? language, methodology, team work, etc.
    • Is there anything that prevents you from working full time on the project during the program period?
    • How do you see your involvement after the program ends? Do you see yourself pushing the project further, or do you see yourself contributing to other CGAL projects?
    • Are you more interested in the theory/scientific aspect of CGAL, or do you feel more like a hacker?
    • What are your long-term wishes in terms of job?

Previous Project Ideas and Successful Projects

Clone this wiki locally