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

Table of Contents

GSoC 2021 Accepted Projects

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

GSoC 2021 Project Ideas

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

Moving Least Squares for point set smoothing and differential properties estimation

Mentor: Nicolas Mellado

Project description: The goal of this project is to add Moving Least Squares surface reconstruction algorithms to the point set processing component. This family of algorithms reconstruct an implicit surface from a point set by fitting and projecting each point on a primitive (plane, sphere) fitting its neighborhood. The resulting surface is a smooth approximation of the input point cloud (smoothing degree is controlled by the primitive type and neighborhood size). Depending on the used primitive, several differential properties of the surface can be estimated. This work will be split in two parts. First, implement a wrapper to the Ponca library, a lightweight library for point-based primitive fitting. Second, add algorithms exploiting this wrapper: e.g., smoothing, and differential estimators. Related packages:

Required Skills: C++14, Point Sets, Surface Fitting

Contact: nicolas.mellado@irit.fr

3D Barycentric Coordinates for Convex Polyhedra with Triangular Faces

Mentor: Dmitry Anisimov

Project description: The goal of this project is to implement the family of 3D barycentric coordinates for convex polyhedra with triangular faces. This family includes 3D Wachspress, mean value, and discrete harmonic coordinates. The whole family has a simple analytic expression based on local distances and angles and can be extended to higher dimensions. The applicant is required a good knowledge of math and geometry. The work will be based on the paper A General Geometric Construction of Coordinates in a Convex Simplicial Polytope by Tao Ju, Peter Liepa, and Joe Warren, which provides all necessary implementation details. This work extends the current CGAL package "2D Generalized Barycentric Coordinates". The 3D coordinates can then be used in real-life applications such as surface deformation and boundary value interpolation.

Required Skills: C++14, generic programming, calculus

Contact: dmitry.anisimov@geometryfactory.com

Enhancing basic viewers in CGAL

Mentor: Guillaume Damiand, Monique Teillaud

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: guillaume.damiand@liris.cnrs.fr monique.teillaud@inria.fr

Add Curvature Adaptative Remeshing

Mentor: Jane Tournois and Sébastien Loriot

Project description: CGAL provides a way to isotropically remesh a triangle mesh using the function isotropic_remeshing() based on [1] (+ some internal enhancement to handle constrained edges, constrained vertices, ...). The goal of this project is to extend the function to incorporate curvature adaptative edge length as described in [2]. #4891 is the initial step containing the update of the API of the remeshing function to implement the new functionality.

Required Skills: C++14, Geometry Processing

Contact: jane.tournois@geometryfactory.com

Update the Polyhedron Demo to Qt6

Mentor: Maxime Gimeno and Laurent Rineau

Project description: The GUI to test most of the 3D CGAL algorithms are gathered into the CGAL Polyhedron demo (available in demo/Polyhedron directory of a CGAL release of Polyhedron/demo/Polyhedron in the git source tree). The demo is currently relying on Qt5. The goal of this project is to update the demo to use Qt6 instead of Qt5. In particular, the use of Qt Shader Tools are particularly interesting to have a multi-plaform rendering (as for example OpenGL is deprecated in recent versions of MacOS).

Required Skills: C++14, Qt5, Qt6, 3D Vector Graphics

Contact: maxime.gimeno@geometryfactory.com

Arrangement of Planes

Mentor: Dmitry Anisimov

Project description: In the context of urban reconstruction from point cloud acquired through LiDAR, an essential step of the process is to compute the decomposition of the 3D space induced by support planes estimated from the input point cloud. Such a decomposition is called an arrangement in the computational geometry community. The goal of this project is to add a method to compute an arrangement of planes as described in the PhD thesis of Patrick Labatut.

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

Contact: dmitry.anisimov@geometryfactory.com

Parallel Mesh Simplification

Mentor: Mael Rouxel-Labbé

Project description: CGAL provides a triangle mesh simplification package through edge collapses. Following the work started in 2019, the goal of this project is to finalize the implementation of the parallel version of the edge collapse algorithm by removing the current limitation of the priority queue.

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

Contact: mael.rouxel.labbe@geometryfactory.com

Finalization of Reconstruction from Parallel Slices

Mentor: Sébastien Loriot

Project description: Starting from a working implementation of [1], the goal of this project is to clean a development version so that is it ready to be integrated into CGAL. The first part of the project will consists in upgrading the code as it was written before some major update of CGAL. In particular, the parallel version of the Delaunay triangulation should be used. After cleaning the code, the documentation as well as test should be written so that it can be officially submitted for inclusion into the library.

  • [1] J.-D. Boissonnat, B. Geiger. Three dimensional reconstruction of complex shapes based on the Delaunay triangulation, Biomedical Image Processing and Biomedical Visualization, 964 (1993)

Required Skills: C++14, Doc writing

Contact: sebastien.loriot@cgal.org

Mesh Decimation using Probabilistic Quadrics

Mentor: Mael Rouxel-Labbé

Project description: CGAL provides a triangle mesh simplification package through edge collapses. Based on [1], the goal on this project is to implement a new simplification cost/placement. If time allows it, quadric-based mesh smoothing can also be addressed.

Required Skills: Geometry Processing, C++14

Contact: mael.rouxel.labbe@geometryfactory.com

SIMD Optimized AABB Tree

Mentor: Pierre Alliez

Project description: CGAL provides a pliant AABB tree component for efficient computation of intersections and distances in 3D. The goal of this project is to accelerate computations with a certain method for parallel computation, referred to as SIMD. The idea is that a single instruction operates on different input data values (e.g. 8 or 16 floating point values) simultaneously. We will also consider other splitting criteria and other ideas to improve the performance of tree construction and traversal.

  • [1] SIMD Optimized Bounding Volume Hierarchies for Fast Proximity Queries. ROBIN YTTERLID. 2013.
  • [2] SIMDop: SIMD optimized Bounding Volume Hierarchies for Collision Detection. T Tan, R Weller, G Zachmann - IROS, 2019.

Required Skills: Geometry Processing, C++14

Contact: pierre.alliez@inria.fr

Finalize the 2D Regularized Boolean Operation Demo

Mentor: Efi Fogel

Project description: The new demonstration program of the "2D Regularized Boolean Oerations" package demonstrates various operations on polygons, such as, union, intersection, and Minkowski sum. It also demonstrates the application of several operations in a pipeline fasion. The demo has not been published yet; it requires a few improvements and modifications. If time allows it can also be enhanced with the support of Boolean operations on general polygons bounded by non-linear curves.

Required Skills: C++14, Qt5, geometry, and code development tools (e.g., git). Due to the change to 175-hour project over a 10-week coding period instead of the previous 350-hour projects, I will only consider candidates that are profound in C++14.

Contact: efifogel@gmail.com

Project Ideas Template Title

Mentor: Mentor Name

Project description: Project description with link to publications if needed

Required Skills: List of keywords (C++11, C++14, Triangulation, Arrangement, OpenGL, ...)

Contact: Put here the email address which should be used by applicants

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 gsoc-cgal@inria.fr:

  • 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.
    • Provide a formal commitment that you will be involved full time on the GSoC. This is absolutely mandatory.
  • 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