-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Project Ideas
-
GSoC 2025 Projects
- Enhancing the 2D Regularized Boolean Operation Demo
- Tetrahedral Isotropic Remeshing Parallelization
- New Mesh Subdivision Methods
- Enhanced Dual Contouring
- Topological Filtering of Features in Triangle Meshes
- Improving ARAP in CGAL
- Extending 2D Arrangement Drawings
- Hexahedral mesh generation
- Cut by plane a volumetric mesh
- Improvement of Named Parameters
- Adding Support for New File Formats for Meshes
- Information Candidates Should Supply
- Previous Project Ideas and Successful Projects
The CGAL Project is a mentoring organization of the Google Summer of Code 2025. On this page we present some project ideas as well the information applicants have to provide us. GSoC applicants are welcome to propose other ideas and check if a mentor is interested in supervising it. For new project proposals, contact us at [email protected].
Mentor: Efi Fogel
Project description: The new demonstration program of the "2D Regularized Boolean Operations" 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: Qt6, geometry, code development tools (e.g., git), and C++14 proficiency
Contact: [email protected]
Duration: 350h
Mentor: Jane Tournois
Project description:
The goal of this project is to parallelize the code of the Tetrahedral Remeshing algorithm available in CGAL. This multi-material tetrahedral remeshing algorithm [2] is based on local and atomic operations such as edge collapse, edge split and edge flip, that could be performed in parallel to improve the performances of the code. The 3D Triangulations [3] and Tetrahedral Mesh Generation package [4] provide a framework to implement mesh operations concurrently. The same framework will be used to parallelize the remeshing algorithm, with the Intel TBB library [5].
Resources:
- [1] CGAL Tetrahedral Remeshing package
- [2] The original publication Multi-Material Adaptive Volume Remesher
- [3] CGAL 3D Triangulations
- [4] CGAL Tetrahedral Mesh Generation package
- [5] Intel Threading Building Blocks
Required Skills: C++17, Mesh Processing, Computational Geometry, Parallelism with TBB
Contact: [email protected]
Duration: 350h
Mentor: Mael Rouxel-Labbé
Project description:
Subdivision methods are efficient techniques to produce smooth surfaces from polygonal meshes. Within CGAL [1], a handful of classic subdivision techniques already exist (CatmullClark subdivision, Loop subdivision DooSabin subdivision, Sqrt3 subdivision). The goal of this project is two-fold: (a) implement newer subdivision techniques -- such as Interpolatory SQRT(3) Subdivision [2], which builds upon an algorithm that is already found in CGAL -- and compare them to our existing algorithms (b) Investigate the use of these newer techniques as a preprocessing step in some of CGAL's newer remeshing techniques (such as adaptive remeshing).
Resources:
- [1] CGAL Subdivision package
- [2] Interpolatory SQRT(3) Subdivision
- [3] Gaussian-Product Subdivision Surfaces
- [4] CGAL's upcoming adaptive remeshing algorithms
Required Skills: C++17, Mesh Processing
Contact: [email protected]
Duration: 350h
Mentor: Mael Rouxel-Labbé, Pierre Alliez
Project description:
A previous GSoC launched the process of adding classic contouring methods to CGAL: Marching Cubes and Dual Contouring. This package is about to be finalized and will be integrated soon into CGAL (https://github.com/CGAL/cgal/pull/6849). Many enhancements exist for the Dual Contouring method to improve its robustness: placement of the dual point, improved conditioning of the SVD matrices, or on-the-fly refinement of the underlying grid [1]. Another aspect is speed, as a grid structure is well adapted to GPU computation.
The project will first focus on manifold contouring methods and robustness in standard C++. If there is time and the candidate has the required skills, we can also explore runtime aspects and the conversion to a GPU implementation. If there is time and the candidate does not have the required skills, we shall explore the implementation of other contouring methods such as Dual Marching Cubes [2].
Resources:
- [1] Manifold Dual Contouring
- [2] Dual Marching Cubes
- Feature-Sensitive Subdivision and Isosurface Reconstruction
Required Skills: C++17, Dual Contouring, linear algebra / quadric error metrics, possibly GPU algorithms
Contact: [email protected]
Duration: 350h
Mentor: Sebastien Loriot
Project description:
Remeshing algorithms in CGAL requires the proper extraction of sharp features so that they can be represented in the output mesh (like here for example). Classical method to detect sharp features are based on collecting edges with sharp dihedral surface angles. However, depending on the quality of the input mesh, some noisy edges might be detected, or some edges might be detected. To workaround these issues, it might be interesting to rely on tools from Topological Data Analysis, like for example persistence. Indeed, extra data or missing data are all related to a notion of scale at which the problem is looked at. The goal of this project is to implement such a strategy for provide curated feature edge graph to the meshing algorithm of CGAL. If time allows, extension to detection of significant handles might also be looked at.
Resources:
- A Practical Solver for Scalar Data Topological Simplification
- To cut or to fill: a global optimization approach to topological simplification
- Topological Simplification of Nested Shapes
- Gudhi library
Required Skills: C++17, Mesh Processing, Topological Data Analysis
Contact: [email protected]
Duration: 350h
Mentor: Andreas Fabri
Project description:
As-Rigid-As-Possible (ARAP) surface modeling is one of the most well known approach for deformation of surfaces. It has been implemented in CGAL, within the Surface Mesh Deformation package (https://doc.cgal.org/latest/Surface_mesh_deformation/index.html#Chapter_SurfaceMeshDeformation). Since the original paper (Sorkine & Alexa, 2007 - As-Rigid-As-Possible Surface Modeling), which is implemented in CGAL, a number of improvements have been proposed. The goal of this project is to investigate these improvements, and enhance the CGAL implementation. Another direction of interest is the extension of the ARAP formulation to the setting of volume deformation of tetrahedral meshes.
Resources:
- As-Rigid-As-Possible Surface Modeling
- ARAP Revisited Discretizing the Elastic Energy using Intrinsic Voronoi Cells
- Higher Order Continuity for Smooth As-Rigid-As-Possible Shape Modeling
Required Skills: C++17, linear algebra
Contact: [email protected]
Duration: 350h
Mentor: Efi Fogel
Project description: The "2D Arrangement" package partially supports limited drawing of a 2D arrangements. The goal of this project is extend the capabilities of 2D arrangement drawing. In particular:
- The drawing is limited. An instance of the the
Arrangement_2<Traits,Dcel>
template can be used to represent 2D arrangements on the plane. The 2D Arrangement package supports ten traits classes that can substitute theTraits
parameter. A traits class determines the family of curves that induce the arrangement, e.g., Bezier curves. Currently, arrangement induced by curves of several families cannot be drawn. - The drawing is inefficient and should be optimized.
- The drawing of arrangements induced by geodesic arcs on the sphere in 3D is deficient. Currently only the curves are drawn (and the faces are not). The Earth demo exhibit some drawing of such arrangements, but it applies a trick that restricts the drawing to faces that do not cross the equator of the sphere. Addressing this item requires knowledge and experience in 3D graphics.
Required Skills: Qt6 and 3D graphics, geometry, code development tools (e.g., git), and C++17 proficiency
Contact: [email protected]
Duration: 350h
Mentor: Guillaume Damiand
Project description:
The goal of this project is to implement the method of the paper [1] "A template-based approach for parallel hexahedral two-refinement", Steven J. Owen, Ryan M. Shih, Corey D. Ernst; in CGAL. This method allows to generate a locally refined hexahedral mesh, starting from a coarse grid, and using different templates for refinement. It will be implemented using a 3D linear cell complex [2] as underlying data-structure. To implement the different templates, we can use the volumic Query-replace operation [3]. The project was started last year and a preliminary version of the method already exists. The goal of this project is to finish this development, and to propose an integration in CGAL. To do so, the work to do is: (1) finish the sequential version, adding displacement of new vertices in order to obtain smooth meshes; (2) validate results on many different input meshes; (3) write the doc and the examples; (4) finish the parallel version.
Resources:
- [1] The paper to be implemented: "A template-based approach for parallel hexahedral two-refinement"
- [2] CGAL Linear cell complex package
- [3] Query-replace operations for topologically controlled 3D mesh editing and the Gitlab repository
Required Skills: C++17, Geometry Processing, Mesh Processing, Computational Geometry
Contact: [email protected]
Duration: 175h
Mentor: Guillaume Damiand and Sebastien Loriot
Project description:
The goal of this project is to implement a method allowing to cut a 3D volumetric mesh (represented by a 3D linear cell complex) by a plane. There are some code available for the two first steps of the method (insert vertices on the cut edges, and insert edges between the new vertices to split faces); it remains the last step which consists in inserting new faces along path of edges. The method must be robust, i.e. deal with any configuration of volumetric mesh. To do so, the work to do is: (1) implement the 3 steps in CGAL; (2) validate results on many different input meshes; (3) write the doc and the examples.
Required Skills: C++17, Geometry Processing, Mesh Processing, Computational Geometry
Contact: [email protected] [email protected]
Duration: 175h
Mentor: Sebastien Loriot and Laurent Rineau
Project description:
The goal of this project is to continue the work started in the pull-request https://github.com/CGAL/cgal/pull/7966. This change proposal implements a mechanism that allows the user to check at compile time that the options passed are used by the function (currently a flow of our mechanism). The proof of concept is there, but now we need to apply it globally in CGAL to all the functions using named parameters. As the function are documented, one way to tackle this project is to write a (python?) script that will collect for all the function the expected named parameters and add the macro calls in the function. There are also other improvements that can be implemented during this project if time allows (automatic extraction of a subset of options, more friendly developer interface, ...)
Required Skills: C++17, Scritping Language such as Python, with knowledge in parsing
Contact: [email protected]
Duration: 175h
Mentor: Sebastien Loriot and Mael Rouxel-Labbé
Project description:
The CGAL library provides several functions to read and write meshes (surface and volume) in the Stream Support package. The list of currently supported file format is available here. The goal of this project is to add support to more file formats. We could for example add support for glTF, gmsh format, 3mf v2, ... The duration of the project will depend on the file format proposed for addition.
Required Skills: C++17
Contact: [email protected]
Duration: 90h, 175h, or 350h
The application process has several steps. Before contacting anybody verify that you are eligible (Check section 7.1 of the official rules). 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?
General Information
- Information for New Developers
- Developing with Git
- Structure of a CGAL Package
- Building
- Concurrency in CGAL
- License
- Documentation Guidelines
- Reviewing Process
- Testing
- Miscellaneous
- Tools
- Scripts
- Libraries
- Infrastructure
- Releases
- Miscellaneous