3D GEOMETRIC MODELING & PROCESSING 2025/2026

Paolo Cignoni

Syllabus

The course begins by laying the theoretical foundations for treating 3D surfaces and shapes in mathematics and computer science. The framework of simplicial complexes and the basics of differential geometry and topology are presented to students with a flavour oriented to computer graphics applications. Subsequently, the main data structures for the management of discrete representations of surfaces are described together with introduces an overview of data structures for the efficient management of spatial queries.

On this basis, the main geometry processing algorithms are introduced together with their practical applications. During the course, exercises will be conducted on the topics discussed by examining and presenting both low-level (C ++) implementations of data structures and algorithms and python libraries that allow rapid prototyping of applications that can solve complex geometric problems.

By the end of the course, the students will be able to use the most appropriate geometry processing algorithms and data structure to solve the problems that can arise when handling 3D geometric shape representations. The theoretical background and the good knowledge of the geometrical properties of surfaces will be useful for a better comprehension of the pitfalls and limitations that can be encountered when handling real world problems where surfaces and 3D representations are involved, like the one that can be encountered in computer aided design, interactive computer graphics and industrial design.

  • Discrete Representations for Surfaces
  • Data Structures for Simplicial Complexes and spatial Indexing
  • Basics of Differential Geometry and Topology for Computer Graphics
  • Mesh Processing Algorithms
  • Remeshing, Refinement & Simplification
  • Parametrization and Texturing
  • Fairing and Smoothing
  • Surface reconstruction and Sampling
  • 3D Geometry Representation and Processing for Learning

    Examination

    The exam consists of a practical part and a theoretical part.

    TimeTable

    Monday Tuesday Wednesday Thursday Friday
    14:00 - 16:00
    Aula Fib L1
    16:00 - 18:00
    Aula Fib Lab I

    Lesson and Materials



    Date Topic
    15 09 2025 Monday 16:15 18:00 No lesson, the course will start on the 17th of September
    17 09 2025 Wednesday 16:15 18:00 Introduction to the course. PDF
    Representing Surfaces PDF
    22 09 2025 Monday 16:15 18:00 No lesson, I adhere to the General Strike
    24 09 2025 Wednesday 16:15 18:00 Representing Surfaces (second part)
    29 09 2025 Monday 16:15 18:00 First Experiments with VCGLib
    Intro to the Lib: PDF
    The code shown at lesson ZIP; it assumes that you have cloned the vcglib repo (devel branch)
    The Mesh folder with the examples ZIP
    01 10 2025 Wednesday 16:15 18:00 More Experiments with VCGLib
    The code shown at lesson ZIP; As exercise you should continue the implementation of the example :
    Count, the size of each connected component (as number of faces)
    Delete all the faces of the connected components but the largest one;
    use the function tri::Allocator < MyMesh > ::DeleteFace(m, Face &f); to delete faces
    06 10 2025 Monday 16:15 18:00 Meshing and Remeshing PDF
    08 10 2025 Wednesday 16:15 18:00 Final part of Meshing and Remeshing PDF and ore Experiments with VCGLib
    The code shown at lesson ZIP; Still on the problem of deleting all but the largest connected component. We have seen different implementation that either copy the largest CC onto a new mesh or that select and delete the rest. Final example uses an incremental mark to avoid the linear cost of multiple unmarking of a mesh.
    13 10 2025 Monday 16:15 18:00 Differential Geometry for dummies PDF
    15 10 2025 Wednesday 16:15 18:00 Managing polylines on Meshes with VCGLib
    We have started the common sample project. In code shown at lesson ZIP we started to write experiments on defining chain of edges over meshes according to some rules. Doc in the Teams space reports more detail.
    20 10 2025 Monday 16:15 18:00 Spatial Indexing PDF
    22 10 2025 Wednesday 16:15 18:00 Managing polylines on Meshes with VCGLib second part. A pause. We did a hard experiment in library integration. We have attempted to use the a minimal but efficient bounding volume hierarchy (bvh) to speed up the intersection tests needed to trace polylines over a mesh. First test at lesson failed due to multiple issues in integrating the library. The ZIP contains the functioning code (we were doing something wrong in the lambda c++ part).
    27 10 2025 Monday 16:15 18:00 Mesh Sampling PDF
    29 10 2025 Wednesday 16:15 18:00 Managing polylines on Meshes with VCGLib Third part.
    We continued the ray tracing experiment doing a simple ambient occlusion computation. Then we restarted the curve tracing over mesh experiment using the CurveOnMesh class of VCGLib to transfer and adapt polylines over different meshes. The ZIP contains the code shown at lesson.
    03 11 2025 Monday 16:15 18:00 Surface Reconstruction, Explicit Methods PDF
    05 11 2025 Wednesday 16:15 18:00 Managing polylines on Meshes with VCGLib Fourth part.
    10 11 2025 Monday 16:15 18:00 Surface Reconstruction Implicit Methods PDF
    12 11 2025 Wednesday 16:15 18:00 Managing polylines on Meshes with VCGLib Fifth part. We Prepared some code for generating reasonable curves in space with associated direction of projection The ZIP contains the code shown at lesson.
    Post lesson note: I finally found a reasonable minimal ray-mesh intersection library that is header-only and easy to integrate with VCGLib: tinybvh In the example I have shown a first integration.
    17 11 2025 Monday 16:15 18:00 Lesson Canceled
    Sorry for the short notice
    19 11 2025 Wednesday 16:15 18:00 Managing polylines on Meshes with VCGLib Sixth part.
    24 11 2025 Monday 16:15 18:00 Managing polylines on Meshes 7th part. After a bit of investigation on the tinybvh library bug we have integrated the closest point search of the library to find projected segments that are candidate to be deleted. we have seen how to use it to compute ray-mesh intersections. The ZIP contains the code shown at lesson.
    26 11 2025 Wednesday 16:15 18:00 Texture Parametrization PDF
    01 12 2025 Monday 16:15 18:00 Managing polylines on Meshes 8th part. Implementing cutting polyline and closing using geodesic paths. The ZIP contains the code shown at lesson.
    03 12 2025 Wednesday 16:15 18:00 Ransac/ICP PDF1 and Smoothing PDF2
    08 12 2025 Monday 16:15 18:00 No lesson - Festivity
    10 12 2025 Wednesday 16:15 18:00 Managing polylines on Meshes 9th part. Cleaning up things. Moving the code into a single templated class. The ZIP contains the code shown at lesson.
    The code for meshlab is in these two files ZIP. Not committed anywhere because there is already a filter with that purpose. The issue that we got at lesson was really stupid. We were testing the wrong filter (facepalm) ("Build a polyline from selected edges") that has a similar name but different purpose...
    15 12 2025 Monday 16:15 18:00 Radiance field based representations PDF1 The shared file with the project is linked in the Teams Chat. Ask for access and annotate it with your preferred project.