• Stars
    star
    334
  • Rank 126,264 (Top 3 %)
  • Language
    MATLAB
  • Created over 8 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Course Page for Geometry Processing

Geometry Processing

Fall Term 2022
CSC419H1 Geometry Processing
CSC2520H Geometry Processing
Prof. Alec Jacobson
TAs, Frank Liu, Otman Benchekroun, Samarendra Dash
Lecutures: Tuesdays 3-5 LM 158
Office Hours: Tuesdays 5-5:30, Wednesdays 5-5:30
Tutorials: Thursdays 4-5 UC 179

The class is aimed at preparing students for working with geometric data via understanding fundamental theoretical concepts. Students should have a background in Linear Algebra and Computer Programming. Previous experience with Numerical Methods, Differential Equations, and Differential Geometry is appreciated but not required.

Extending traditional signal processing, geometry processing interprets three-dimensional curves and surfaces as signals. Just as audio and image signal data can be filtered, denoised and decomposed spectrally, so can the geometry of a three-dimensional curve or surface.

In this course, we study the algorithms and mathematics behind fundamental operations for interpreting and manipulating geometric data. These essential tools enable: geometric modeling for computer aided design, life-like animations for computer graphics, reliable physical simulations, and robust scene representations for computer vision.

Topics include: discrete curves and surfaces, curvature computation, surface reconstruction from point clouds, surface smoothing and denoising, mesh simplification, parameterization, symmetry detection, shape deformation and animation.

Organization

In lecture we will cover the mathematical background and visual intuition of the week's topic. Students will read academic papers and complete a small weekly programming assignment to implement a corresponding algorithm.

Through attendence of invited Toronto Geometry talks, students will be exposed to a wide variety of cutting-edge research in geometry processing.

Students sharpen crystalize their knowledge and sharpen their presentation skills by creating short explainer videos for geometry processing concepts.

Finally, students will implement a recent paper in the style of a libigl tutorial.

Objectives

  1. Students should understand, derive, and implement solutions to the prominent challenges that arise in geometry processing applications.
  2. Students should create a final creative project showcasing their implementation of the different processing algorithms.
  3. Students should develop an understanding of the mathematical underpinnings of geometry processing including useful discretized operators and energies.
  4. Students should develop a working knowledge of libigl to develop these algorithms without worrying about the grunt-work of OpenGL viewers, quadrature, etc.

Prerequisites

Students should have already taken Linear Algebra and Calculus.

Students should have already taken Introduction to Computer Science and should be proficient in computer programming (in any language) and should feel comfortable programming in C++.

While knowledge of Partial Differential Equations is not required, it will certainly be very handy for derivations. A quick survey will be posted to help students evaluate their readiness on these topics.

On the programming side, we will be coding mainly in C++ and using a libigl, an open-source geometry processing library. We will be using Eigen for computational linear algebra, and Cmake for building the coding assignments.

A Mathematical Foundation

Much of the framing for our techniques will be looking at the continuous analogue of our problem and discretizing it in an intrinsic way, preserving continuous theorems as much as possible. We will discretize continuous operators like the Laplacian and the Gradient, and we will find adequate representations of concepts like normal vectors and curvature. Perhaps surprisingly we will see that there are many choices of discretization, each with their own benefits and downsides, prompting us to choose appropriately for the particular application.

Schedule

Lecture Date Tentative Topic
Tuesday, 13/09/2022 Geometry Processing Pipeline, "life of a shape", shapes, surface representations,
Polygon Mesh Processing [Botsch et al. 2008]
Intro Survey, due 12:00 noon ET 20/09/2022
HW 01 assigned, due 12:00 noon ET 20/09/2022
Tuesday, 20/09/2022 Representations, Topology vs Geometry tangents and normals, geometry vs. topology, orientability, discrete topology, graphs
HW 02 assigned, due 12:00 noon ET 28/09/2022 (extended by one day)
Tuesday, 27/09/2022 Acquisition & reconstruction, characteristic function, spatial gradient
HW 03 assigned, due 12:00 noon 05/10/2022
Tuesday, 04/10/2022 Alignment & registration Hausdorff distance, integrated closest point distance
"Object modelling by registration of multiple range images" [Chen & Medioni 1991]
"A method for registration of 3-D shapes" [Besl & McKay 1992]
"Efficient Variants of the ICP Algorithm" [Rusinkiewicz & Levoy 2001]
"Sparse Iterative Closest Point" [Bouaziz et al. 2013]
point-to-plane distance, iterative closest point, orthogonal Procrustes problem
HW 04 assigned, due 12:00 noon 14/10/2022
Tuesday, 11/10/2022 Surface fairing & denoising, 1D smoothing flow, 1D energy-based smoothing, PDE, Implicit Time integration
HW 05 assigned, due 12:00 noon 21/10/2022
Tuesday, 18/10/2022 Shape deformation, continuous deformation, pointwise mappings, energy-based model, handle-based deformation, local distortion mesure, gradient-based distortion, Laplacian-based distortion, as-rigid-as-possible
HW 06 assigned, due 12:00 noon 28/10/2022
Final Paper Implementation Paper Selection Form, due 12:00 noon 28/10/2022
Tuesday, 25/10/2022 Surface parameterization, texture mapping, mass-spring methods, graph drawing, harmonic maps, least squares conformal mapping, local parameterization, discrete exponential map, stroke parameterization
HW 07 assigned, due 04/11/2022
Tuesday, 01/11/2022 Curvature & surface analysis Planar curves, tangents, arc-length parameterization, osculating circle, curvature, turning number theorem, discrete curvature, normal curvature, minimum/maximum/mean curvature Principal curvature, Gauss map, Euler's theorem, shape operator, Gaussian curvature
Tuesday, 08/11/2022 No Lecture: FAS Reading week.
Tuesday, 15/11/2022 Signed distances, Offset surfaces, inside-outside segmentation, medial axis, isosurface/level sets, signed distances to polyhedra, parity counting, winding number
"Signed Distance Computation using the Angle Weighted Pseudo-normal" [Baerentzen & Aanaes 2005]
"3D distance fields: a survey of techniques and applications" [Jones et al. 2006]
"Robust Inside-Outside Segmentation using Generalized Winding Numbers" [Jacobson et al. 2013]
Videos and Final papers due 05/12/2022 noon
Wednesday, 16/11/2022 Last day to drop course
Tuesday, 22/11/2022 TBD
Tuesday, 29/12/2022 Signed distances continued. Outlook into geometry processing research.
Tuesday, 06/12/2022 Video party
libigl-style paper implementation due 5/12/2022

Cutting room floor: Quad meshing, Subdivision surfaces, Constructive solid geometry, Voxelization, Mesh decimation, simplification, remeshing

Discord

https://discord.gg/j7auSYUC

Lateness Policy

0.007% off for every minute late.

Academic Integrity

Any code must belong to the student submitting it. Submitted assignments may be automatically analyzed to identify suspicious levels of code similarity. Consequences of committing an academic offence can be severe.

By staying enrolled in this course, students acknowledge that they have read and understand the University of Toronto's definitions and policy on Academic Integrity.

Supplemental Textbook

Polygon Mesh Processing. Mario Botsch, Leif Kobbelt, Mark Pauly, Pierre Alliez, and Bruno Levy, 2008.

Grading

Explainer Videos

An explainer is a short (< 4m minutes) video provides an introduction to or a summary of a topic. Using motion graphics, animation and/or narration, create a compelling video.

Upload the video on youtube. Be sure to include links to an videos or source material that you took inspiration from in your video description. Post a link on the discord channel.

Over the course of the semester you must create two unique videos for any of the topics introduced in the lecture, homeworks or linked readings. It's recommended that you make one 30-sec TikTok style video that's over the top exciting and for a general audience. And one 4-min youtube-style video where you explain a bit more than just hype.

Examples

Got other great examples? Submit a PR on this README.md with a link!

Final Paper Implementation

Curated list of papers:

More Repositories

1

common-3d-test-models

Repository containing common 3D test models in original format with original source if known and obj mesh
Forth
763
star
2

gptoolbox

Matlab toolbox for Geometry Processing.
MATLAB
629
star
3

geometry-processing

Course material for a grad-level course in Geometry Processing.
293
star
4

coloremoji.sty

Style package for directly including color emojis in latex documents
TeX
215
star
5

computer-graphics-csc317

Course Page for Computer Graphics course
CSS
184
star
6

geometry-processing-parameterization

Parameterization assignment for Geometry Processing course
C++
148
star
7

geometry-processing-curvature

Curvature assignment for Geometry Processing course
C++
148
star
8

geometry-processing-deformation

Deformation assignment for Geometry Processing course
C++
148
star
9

ascii3d

3D Render in ASCII art
C++
131
star
10

computer-graphics-bounding-volume-hierarchy

Computer Graphics Assignment about Bounding Volume Hierarchies
C++
123
star
11

geometry-processing-introduction

Introductory assignment for Geometry Processing course
C++
117
star
12

geometry-processing-mesh-reconstruction

Mesh Reconstruction assignment for Geometry Processing course
Pawn
101
star
13

computer-graphics-kinematics

Computer Graphics Assignment about Kinematics
C++
93
star
14

geometry-processing-registration

Registration assignment for Geometry Processing course
C++
86
star
15

nested_cages

Corresponding Code for the SIGGRAPH Asia paper "Nested Cages"
C++
81
star
16

skeleton-builder

C++
61
star
17

FAST

Fast Automatic Skinning Transformations
C++
61
star
18

skeleton-poser

C++
58
star
19

better-code-runtime-polymorphism

Git walk through of the C++ code presented in Sean Parent's talk "Better Code: Runtime Polymorphism"
C++
55
star
20

convex-optimization-cookbook

MATLAB
53
star
21

seminar-on-geometry-and-animation

course webpage
49
star
22

computer-graphics-mass-spring-systems

Computer Graphics Assignment – Mass Spring Systems
C++
48
star
23

computer-graphics

Computer Graphics Course
45
star
24

MeshQuickLookPlugin

QuickLook Plugin (.qlgenerator) for 3D model mesh files (.mesh, .obj, .off, .ply, .stl, .wrl)
C++
45
star
25

geometry-processing-smoothing

Smoothing assignment for Geometry Processing course
C++
41
star
26

sparse-solver-benchmark

CMake
35
star
27

gp-cli

Command Line Tools for Geometry Processing
C++
30
star
28

computer-graphics-ray-casting

Computer Graphics Assignment about Ray Casting
C++
30
star
29

meshfix

Port of Marco Attene's meshfix to compile and run on Mac OS X
C++
27
star
30

computer-graphics-meshes

Computer Graphics Assignment about Meshes
C++
25
star
31

minimal-latex-setup-for-siggraph

TeX
21
star
32

qslim

Port of Michael Garland's QSlim to compile on Mac OS X
C++
21
star
33

puppet

Corresponding code for the SIGGRAPH 2014 paper "Tangible and Modular Input Device for Character Articulation"
C
20
star
34

computer-graphics-raster-images

Computer Graphics Assignment about Raster Images
C++
20
star
35

libigl-tinyad-example

C++
16
star
36

computer-graphics-ray-tracing

Computer Graphics Assignment about Ray Tracing
C++
14
star
37

computer-graphics-shader-pipeline

Computer Graphics Assignment about the Shader Pipeline
C++
14
star
38

medit

Port and Modification of Pascal Frey's medit software for tet-mesh visualization
C
14
star
39

geometry-processing-libigl-implementations

C++
12
star
40

libigl-link-example

CMake
8
star
41

glfw-glut

C
6
star
42

fcpw-libigl-example

C++
6
star
43

openmp-on-macos

C++
6
star
44

vim-digraphs-everywhere

Ruby
6
star
45

self-intersection-curves

CMake
6
star
46

multigrid

Multigrid solver for matlab
MATLAB
5
star
47

matlab

just enough matlab to compile gptoolbox's mex folder
Shell
4
star
48

libigl-shadow-mapping

C++
3
star
49

phong-demo

Demonstration of Phong illumination and Phong/Gouraud Shading
JavaScript
3
star
50

latent-space-dynamics-website

CSS
3
star
51

glut

Patched version of glut for os x, supporting vertical/horizontal mouse wheel, command key, core profile.
C
3
star
52

libigl-eigen-mkl

CMake
3
star
53

chalkboard

Raster chalkboard app with pressure sensitive (e.g., for Apple Pencilβ„’) https://alecjacobson.github.io/chalkboard/
HTML
3
star
54

paparazzi-website

Project Page website for Paparazzi
CSS
2
star
55

FLUFFY

CMake
2
star
56

perceptual-study

Web-based perceptual study base code
PHP
2
star
57

consistent-penetrations

C++
2
star
58

libigl-example-project-with-multiple-executables

CMake
2
star
59

math-genealogy

Python
2
star
60

gmp-mpfr-externalproject_add

CMake
2
star
61

low-rank-friction

Jupyter Notebook
1
star
62

cmake-dependency-test

CMake
1
star
63

CoMISo-skinny

C++
1
star
64

libigl-example-triangle

C++
1
star
65

libigl-issue-1656-hot-fix

C++
1
star
66

scatter-gather-symdiff

MATLAB
1
star
67

stop-motion-faces-project-page

CSS
1
star
68

side-by-side

C++
1
star
69

libigl-example-mex

CMake
1
star
70

libigl-skinny

C++
1
star
71

libigl-small

C++
1
star
72

dirac-project-page

Project Page for "A Dirac Operator for Extrinsic Shape Analysis"
CSS
1
star