Shape Modeling and Geometry Processing

course no.
Spring 2015
Olga Sorkine-Hornung,
Daniele Panozzo
Olga Diamanti
Wed 10-12; CAB, G 56
Wed 15-16; CAB, G 56
office hours
upon coordination by e-mail
ECTS credit
4 credits


The tentative exam schedule has been posted below.
Please pull newest changes from libigl again.
A small change was made to libigl which is necessary for the second assignment. Please pull the latest version to get it.
For questions regarding the assignments, we encourage you to use the mailing list. You're also welcome to drop by during the office hours described below. If none of these work then please email Olga Diamanti to schedule an appointment.
The schedule for the exercise sessions has been posted here. More details on the logistics of the demos will be announced soon.
Olga Diamanti's office hours: Fridays 11:00-12:00, CAB G82.2.
Mailing list for the course: .
Homework submission email address : .
There will be no exercise session in the first week of the semester. The first exercise session will take place on Wednesday 25.02.2015.
Course webpage updated. Welcome!


camel sketch

Recent advances in 3D digital geometry processing have created a plenitude of novel concepts for the mathematical representation and interactive manipulation of geometric models. This course covers some of the latest developments in geometric modeling and digital geometry processing. Topics include surface modeling based on polygonal meshes, surface reconstruction, mesh improvement, discrete differential geometry, interactive shape editing, skinning animation, architectural and structure-aware geometric modeling, shape modeling with an eye on 3D printing.

Course objectives

The students will learn how to design, program and analyze algorithms and systems for interactive 3D shape modeling and digital geometry processing.

Course work and performance assessment

There will be 4 programming + "pen-and-paper" assignments and one slightly larger programming project. A code framework will be provided that allows you to experiment with various algorithms without having to bother much about software infrastructure. The weight of the homework assignments in the final grade will be 80%. There will be an oral exam at the end of the semester, amounting to 20% of the final grade.


Introduction to Computer Graphics, experience with C++ programming. Some background in geometric computing is helpful, but not necessary.

schedule and course notes

Note: Course notes and homework materials are only accessible within the ETH network (addresses 129.132.*). Use VPN to access from outside.

The course schedule is tentative and may be adjusted along the way.

Introduction. Shape representations. (Prof. Sorkine-Hornung)
Geometry acquisition. Meshes. (Dr. Panozzo)
[Exercise 1 handout]
Surface reconstruction. (Dr. Panozzo)
[Exercise 2 handout]
Normal estimation and PCA. Discrete differential geometry - Curves. (Prof. Sorkine-Hornung)
[Grading of Exercise 1]
Discrete differential geometry - Surfaces. (Prof. Sorkine-Hornung)
[Optional Exercise 3 handout]
Mesh smoothing and optimization. Curve smoothing MATLAB demos. (Prof. Sorkine-Hornung)
[Grading of Exercise 2]
Parameterization I. (Dr. Panozzo)
[Exercise 4 handout]
Easter holidays.
Parameterization II. (Dr. Panozzo)
Introduction to mesh editing. Variational mesh editing I. (Prof. Sorkine-Hornung)
[Exercise 5 handout]
Variational mesh editing II. ARAP surface modeling. (Dr. Panozzo)
[Exercise 6 handout] [Grading of Exercise 4]
Special class! Attend a technical papers session at EUROGRAPHICS 2015.
Space deformations. Skeletal animation and skinning. (Dr. Panozzo)
[Grading of Exercise 5]
Architectural geometry. Fabrication-aware geometric modeling. (Dr. Panozzo)
[Cotangent Laplacian Derivation]
Oral examination.
[Grading of Exercise 6]

homework assignments

Note: Course notes and homework materials are only accessible within the ETH network (addresses 129.132.*). Use VPN to access from outside.

For the purposes of this class you will be using the geometry processing library libigl, which includes implementations of many of the algorithms presented in the lecture. You should clone a copy of the library using git and use it with your assigments (see first assigment sheet for details). You are advised to have a look at the relevant libigl tutorials (found at the tutorial/tutorial.html file inside the library) before starting the implementation for the assignments; you are also encouraged to have a look at the source code of all the library functions that you use in your code, to see how they were implemented. Make sure to pull the more recent changes from the repository as we might be updating the source code from time to time. While the library is header only and does not require compilation, the library tutorials need to be compiled; for the relevant instructions please have a look at the first assignment sheet.

The library includes a simple mesh viewer, which supports various visualization options as well as basic user interactions like rotating and translating the mesh, as well as basic picking. For each assignment, we will provide below a CMAKE project that compiles the viewer code, which you can use as a starting point with your implementation; this will allow you to focus on the algorithms presented in the course. The viewer binary can be launched from command line and a mesh can be passed as a parameter.

Note that we are providing techical support for libigl and the viewer only for the Linux RedHat machines in the computer labs (CAB H56 and H57). The library can be compiled on all major operating systems (scripts for MacOsX and Linux are provided), but you will have to compile it on your own.

Exercise 1: Mesh "Hello World"

In this exercise you will familiarize yourself with the provided code framework and perform some basic operations on a mesh.

Due Date :
10.03.2015, 23:59
Demo Date :
11.03.2015, during exercise session
Exercise Session 25.02.2015
Exercise 1
CMake Project
Mesh Data:
Mesh Data

Exercise 2: Surface reconstruction

In this exercise you will compute a water-tight surface mesh by fitting an implicit function to point cloud data.

Due Date :
24.03.2015, 23:59
Demo Date :
25.03.2015, during exercise session
Exercise Session 04.03.2015
Exercise 2
CMake Project
Mesh Data:
Mesh Data (.zip)
Additional Code:
Poisson Reconstrunction Unix Code (.zip)

Optional Exercise 3: Discrete differential geometry

In this optional tutorial you are invited to revisit the various discrete differential quantities on meshes learned in class, and check out other useful features within the provided code base. There will be no grading, however some familiarity with the discrete Laplace operator will be helpful for the next mandatory assignment.

Exercise Session 18.03.2015
Exercise 3
Mesh Data:
Mesh Data (.zip)

Exercise 4: Parameterization

In this exercise you will compute parameterizations of meshes and perform basic tangent field processing.

Due Date :
28.04.2015, 23:59
Demo Date :
29.04.2015, during exercise session
Exercise Session 01.04.2015
Exercise 4
CMake Project
Mesh Data:
Mesh Data (.zip)

Exercise 5: Variational mesh editing

In this exercise you will design and implement a shape editing algorithm based on discrete differential principles.

Due Date :
12.05.2015, 23:59
Demo Date :
13.05.2015, during exercise session
Exercise Session 16.04.2015
Exercise 5
CMake Project
Mesh Data:
Mesh Data (.zip)

Exercise 6: Advanced assignment

In this slightly more elaborate exercise you will be provided with a list of research papers and suggestions of topics related to geometric modeling. Your task will be to implement one of these topics using the software that you wrote in the previous assignments.

Due Date :
27.05.2015, 23:59
Demo Date :
29.05, 12:30-15:30, at the CNB kitchen (CNB G110)
Exercise 6
Papers (.zip)

oral examination

Exam Schedule:

YouTube channel - related research results from IGL