All Projects → alecjacobson → Geometry Processing

alecjacobson / Geometry Processing

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

Projects that are alternatives of or similar to Geometry Processing

3dmatch Toolbox
3DMatch - a 3D ConvNet-based local geometric descriptor for aligning 3D meshes and point clouds.
Stars: ✭ 571 (+224.43%)
Mutual labels:  geometry-processing
Lagrange
A Robust Geometry Processing Library
Stars: ✭ 87 (-50.57%)
Mutual labels:  geometry-processing
Triwild
TriWild: Robust Triangulation with Curve Constraints
Stars: ✭ 139 (-21.02%)
Mutual labels:  geometry-processing
Geometrize
🔳 Geometrize is a desktop app that geometrizes images into geometric primitives
Stars: ✭ 802 (+355.68%)
Mutual labels:  geometry-processing
Pymesh
Geometry Processing Library for Python
Stars: ✭ 1,135 (+544.89%)
Mutual labels:  geometry-processing
Libigl Python Bindings
IGL python bindings
Stars: ✭ 95 (-46.02%)
Mutual labels:  geometry-processing
Voxelizer
Header only mesh voxelizer in c99
Stars: ✭ 487 (+176.7%)
Mutual labels:  geometry-processing
Dss
Differentiable Surface Splatting
Stars: ✭ 175 (-0.57%)
Mutual labels:  geometry-processing
Directional
A library for Directional Field Synthesis, Design, and Processing.
Stars: ✭ 73 (-58.52%)
Mutual labels:  geometry-processing
Geometrize Haxe Web
🌐 Web demo using the Geometrize Haxe library to recreate images with geometric primitives
Stars: ✭ 122 (-30.68%)
Mutual labels:  geometry-processing
Nasoq
NASOQ:Numerically Accurate Sparsity Oriented QP Solver
Stars: ✭ 30 (-82.95%)
Mutual labels:  geometry-processing
Gogeom
This is a Geometrical library for Go Language. Which includes multiple Geometrical calculations like Circle, Lines etc in different forms
Stars: ✭ 47 (-73.3%)
Mutual labels:  geometry-processing
Melt
Automatic conservative mesh occluder generation by box filling
Stars: ✭ 105 (-40.34%)
Mutual labels:  geometry-processing
Softras
Project page of paper "Soft Rasterizer: A Differentiable Renderer for Image-based 3D Reasoning"
Stars: ✭ 715 (+306.25%)
Mutual labels:  geometry-processing
Optcuts
OptCuts, a new parameterization algorithm, jointly optimizes arbitrary embeddings for seam quality and distortion. OptCuts requires no parameter tuning; automatically generating mappings that minimize seam-lengths while satisfying user-requested distortion bounds.
Stars: ✭ 145 (-17.61%)
Mutual labels:  geometry-processing
Pmp Library
The Polygon Mesh Processing Library
Stars: ✭ 524 (+197.73%)
Mutual labels:  geometry-processing
Delfem2
Research prototyping framework for physics simulation written in C++
Stars: ✭ 92 (-47.73%)
Mutual labels:  geometry-processing
Manifoldplus
ManifoldPlus: A Robust and Scalable Watertight Manifold Surface Generation Method for Triangle Soups
Stars: ✭ 175 (-0.57%)
Mutual labels:  geometry-processing
Matgeom
Matlab geometry toolbox for 2D/3D geometric computing
Stars: ✭ 168 (-4.55%)
Mutual labels:  geometry-processing
Learning to sample
A learned sampling approach for point clouds (CVPR 2019)
Stars: ✭ 120 (-31.82%)
Mutual labels:  geometry-processing

Geometry Processing Course

Course material for a grad-level course in geometry processing.

Course designed by Prof. Alec Jacobson, University of Toronto, with assistance from Klint Qinami and Prof. Eitan Grinspun, Columbia University.

Prerequisites and dependencies

In general, the materials in this course assume that 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++.

All course assignments are conducted in C++, however none rely on nitty gritty memory management or complicated object-oriented data-structures.

While knowledge of Partial Differential Equations is not required, it will certainly be very handy for derivations. Similarly, previous experience with Computer Graphics is not required but recommended.

All coding assignments make use of Eigen, an open-source linear algebra library; and libigl, an open-source geometry processing library. Each assigment is built using CMake.

Organization

The original run of this course structured weekly assignments in the following order:

  1. Introduction
  2. Mesh Reconstruction
  3. Surface Registration
  4. Smoothing
  5. Parameterization
  6. Deformation
  7. Curvature

Besides the introduction, there is no strict ordering to these topics.

Each topic has its own git repository. Inside each, there is a README.md file contains background information necessary for understanding the topic's coding assignment.

The Introduction README.md contains detailed information about compilation, file layout and assignment protocols.

Wikipedia

The background materials link heavily to Wikipedia articles. Sometimes the wikipedia articles relating to geomtry processing are less informative than they could be. Edit them!

In university offerings of this course, 5% credit has been awarded to the entire class for collaboratively improving Wikipedia's entries on geometry processing topics.

Are you an instructor?

There are instructor repositories for all of the assignments above. If you're an instructor for a geometry processing course, send an email to [email protected] for an invitation.

For my reference, I can add a new instructor with github id [githubid] to all solution repos using:

github-add-user -u alecjacobson -r $(echo alecjacobson/geometry-processing-{introduction,mesh-reconstruction,registration,smoothing,parameterization,deformation,curvature}-solution | tr ' ' ',') [githubid]

Corresponding solution (private) repos are located at:

  1. Introduction
  2. Mesh Reconstruction
  3. Surface Registration
  4. Smoothing
  5. Parameterization
  6. Deformation
  7. Curvature

Homework Submission via GitHub Pull Requests

When used for a formal course, it is intended that students fork each assignments repository, commit their solutions to their own forks, and then submit their assignment via pull request to the public repo of the assignment.

More details on this structure are found on Alec's weblog.

Honor System

Since pull requests are public, students will be able to see each other's completed solutions as soon as their posted. Students will not cheat because they are honorable 👍. Actually, since most of the assignments are standard algorithms there are many implmentations online already. In particular, libigl contains ready-made implementations using Eigen with similar function APIs. Why cheat from other students when you can cheat from the professor? But, really, why cheat?

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].