Shape Modeling and Geometry Processing

course no.
Spring 2012
Olga Sorkine
Olga Diamanti, Daniele Panozzo
Wed 10-12; ML, F 34
Wed 15-16; LFW, E 13
office hours
upon coordination by e-mail
ECTS credit
4 credits


The project demo schedule has been posted. If you are unable to make it during the assigned time slot please let us know as soon as possible.
For the final project, you will be required to submit a short report describing the UI, some screenshots, compilation instructions and the basic steps of your code. You will present a demo of your project to us on Thursday, 01.06.2012 from 10am on. Each student will have approximately 5 minutes for their demo. The precise schedule for the presentations will be posted here soon.
The examination schedule has been posted. Please notify us as soon as possible if you have time conflicts during the time slot that was assigned to you.
The final examination will take place on Wednesday, 30.5.2012. We will assign you to 20-minutes slots randomly and the final schedule will be announced and discussed during the exercise session on Wednesay 16.05.2012. If you are unable to attend, the final schedule will also be announced on this website.
There was a small typo in the slides for the exercise session of 07.03.2012 (slide #7). Please see updated slides for the corrected version. Thanks to Simon for pointing out the error!
The new mailing list for the course: . Please use it! Important announcements will also be shared there, as well as answers to frequently asked questions.
Change of email address for homework submissions: Starting from assignment 2 you are asked to submit your homework to the email address .
Grading clarification: The bonus exercises in the homework assignments may improve your overall grade for the homework assignment part only. Meaning, if you miss some points in the mandatory exercises, the bonus points can compensate for those. However, the weight of the homework assignments remains 80% and the maximum contribution to the final grade remains 80 points. The remaining 20% (20 points) will be based on the oral exam. At the end of the course we will sum up all the collected points and rescale them to the usual 1-6 scale.
Some of you reported problems accessing the exercise data and the course notes due to IP addresses of the type 82.130.* not being allowed. We updated the access files and this problem should be fixed now.
There will be *no exercise session* on Wednesday, 22.02.2012. The first exercise session will take place Wednesday, 29.02.2012.


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 triangle meshes, mesh generation, surface reconstruction, subdivision schemes, mesh fairing and simplification, discrete differential geometry and interactive shape editing.

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 5 modest programming + "pen-and-paper" assignments and one slightly larger programming exercise. 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 geometry or computational geometry 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.
Geometry acquisition. Meshes.
[Exercise 1 handout]
Surface reconstruction.
[Exercise 2 handout]
Normal estimation and PCA. Discrete differential geometry - Curves I.
Discrete differential geometry - Curves II. Discrete differential geometry - Surfaces.
[Exercise 3 handout]
Mesh smoothing and optimization. MATLAB 2D smoothing demo.
Parameterization I.
[Exercise 4 handout]
Easter Holidays
Parameterization II.
Introduction to mesh editing. Variational mesh editing I.
[Exercise 5 handout]
Variational mesh editing II. ARAP surface modeling.
Space deformations. Skinning. - guest lecture by Ladislav Kavan.
[Exercise 6 handout]
Structure-aware shape modeling and architectural geometry - guest lecture by Emily Whiting.
Research outlook and current topics in geometric modeling.
Oral examination

homework assignments

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

To allow you to focus on the algorithms presented in the course, we provide a software infrastructure that will take care of all the visualization as well as basic user interactions like rotating and translating the mesh. Using this code is entirely optional. It is provided solely to enable you to work directly on the exercise requirements without worrying about UI functions. However, if you prefer you can write your own viewer and use it for all the exercises. We are only providing support for the provided viewer only and we will not be able to help you with rendering or UI problems if you decide to write your own.

To avoid further overhead due to compilation problems, we are also providing you with a VirtualBox virtual machine with Ubuntu Linux preinstalled. The supplied code has been tested and is able to compile and run on that virtual machine without problems. You only need to download VirtualBox and start it with the provided virtual machine.

Previewer Code (.zip, 566KB), Linux Dependencies (.zip, 5.7MB), Windows Dependencies (.zip, 60.7MB), README file
Virtual Machine:
VirtualBox VM (.zip, 1.83GB)

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 :
06.03.2012, 23:59
Exercise Session 29.02.2012
Exercise 1
Mesh Data:
Mesh Data (.zip, 838KB)

Exercise 2: Surface reconstruction

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

Note: For this assignment you will need some additional software to run the Marching Cubes on an implicit function grid. This code is supplied to you below, together with a previewer plugin that runs it as an example. You will also be provided with updated file parsers for .off files which also read vertex normals as well as positions. After unzipping the new package, you need to do the following:

  • Replace the old files readOFF.h, readOFF.cpp inside [source_directory]/igl_lib/include/igl with the new ones provided.
  • Copy the files marching_cubes.h, marching_cubes.cpp and MCTables.hh inside [source_directory]/igl_lib/include/igl.
  • Copy the new plugin MarchingCubesPlugin.h inside [source_directory]/igl_viewer/src/plugins.

Due Date :
20.03.2012, 23:59
Exercise Session 07.03.2012
Exercise 2
Mesh Data:
Mesh Data (.zip, 2.2MB)
Additional Code:
Code (.zip, 17KB)

Exercise 3: Discrete geometry

In this exercise you will compute various discrete differential quantities on meshes, visualize them and analyze their quality.

Note: For this assignment you will need a new previewer plugin to visualize reflection lines, and a slightly modified version of the previewer that works with it. This code is supplied to you below. After unzipping the new package, you need to do the following:

  • Replace the old files Preview3D.h, Preview3D.cpp inside [source_directory]/igl_viewer/src with the new ones provided.
  • Copy the new plugin ReflectionLinesPlugin.h inside [source_directory]/igl_viewer/src/plugins. To use it, don't forget to add it to the end of your plugin list inside PluginInstances.h.

Sparse Matrices with Eigen: We recommend that you download and use the latest (beta) version of Eigen for this exercise. The example code provided in the exercise session slides for the construction of sparse matrices will only run with this version. See this tutorial for examples of how to initialize and use sparse matrices.

Due Date :
03.04.2012, 23:59
Exercise Session 21.03.2012, Exercise Session 28.03.2012
Exercise 3
Mesh Data:
Mesh Data (.zip, 3.9MB)
Additional Code:
Code (.zip, 27KB)

Exercise 4: Parameterization and remeshing

In this exercise you will compute parameterizations of meshes and apply them to texturing and remeshing.

Note: For this assignment you will need the cotangent and uniform Laplacian, as well as the vertex to face neighborhood relationships from previous exercises. If you are unsure of your implementation please drop us an email and we will provide you with source code for that. You may also need some code for computing the triangle-triangle adjacency relationships. This code is supplied to you below. After unzipping the new package, you need to do the following:

  • Add the files tt.h, tt.cpp, is_manifold.h, is_manifold.cpp inside [source_directory]/igl_lib/include/igl.

Due Date :
24.04.2012, 23:59
Exercise Session 04.04.2012
Exercise 4
Mesh Data:
Mesh Data (.zip, 703KB)
Additional Code:
Code (.zip, 4KB)

Exercise 5: Variational mesh editing

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

Note: For this assignment we are providing you with a plugin for the previewer that implements basic picking and dragging of vertices using OpenGL. See the exercise slides for more information. This plugin is supplied to you below. After unzipping the new package, you need to:

  • Add the file PickingPlugin.h inside [source_directory]/igl_viewer/src/plugins .

Due Date :
08.05.2012, 23:59
Exercise Session 25.04.2012
Exercise 5
Mesh Data:
Mesh Data (.zip, 1.6MB)
Additional Code:
Code (.zip, 14KB)

Exercise 6: Advanced assignment

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

Due Date :
30.05.2012, 23:59
Exercise 6
Papers (.zip, 41.9MB)

oral examination

Exam Schedule:

YouTube channel - related research results