+ All Categories
Home > Documents > Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze...

Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze...

Date post: 24-Feb-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
54
Geometric Computing with Python 1 Sebastian Koch, Teseo Schneider, Francis Williams, Chencheng Li, Daniele Panozzo https://geometryprocessing.github.io/geometric-computing-python/
Transcript
Page 1: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing with Python

1

Sebastian Koch, Teseo Schneider, Francis Williams, Chencheng Li, Daniele Panozzo

https://geometryprocessing.github.io/geometric-computing-python/

Page 2: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Who are we?

2

Sebastian Koch

Teseo Schneider

Francis Williams

Daniele Panozzo

ChenCheng Li

Page 3: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Course Goals

• Learn how to design, program, and analyze algorithms for geometric computing

• Hands-on experience with shape modeling and geometry processing algorithms

• Learn how to batch process large collections of geometric data and integrate it in deep learning pipelines

3

Page 4: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Page 5: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Discrete Differential Geometry- Surface and volumes representation- Differential properties and operators

Page 6: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Discrete Differential Geometry- Surface and volumes representation- Differential properties and operators

Numerical Method for PDEs- Focus on real-time approximations- Irregular domains

Page 7: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Discrete Differential Geometry- Surface and volumes representation- Differential properties and operators

High Performance Computing- Vectorized computation - Multi-core and distributed computation - GPU accelerators

Numerical Method for PDEs- Focus on real-time approximations- Irregular domains

Page 8: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Discrete Differential Geometry- Surface and volumes representation- Differential properties and operators

High Performance Computing- Vectorized computation - Multi-core and distributed computation - GPU accelerators

Numerical Method for PDEs- Focus on real-time approximations- Irregular domains

Human Computer Interaction- Objective evaluation of the results- Architects and artists benefits from our

research

Page 9: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Discrete Differential Geometry- Surface and volumes representation- Differential properties and operators

High Performance Computing- Vectorized computation - Multi-core and distributed computation - GPU accelerators

Numerical Method for PDEs- Focus on real-time approximations- Irregular domains

Human Computer Interaction- Objective evaluation of the results- Architects and artists benefits from our

research

Geometric Computing

Page 10: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Big Data

Geometric Computing

Discrete Differential Geometry- Surface and volumes representation- Differential properties and operators

High Performance Computing- Vectorized computation - Multi-core and distributed computation - GPU accelerators

Numerical Method for PDEs- Focus on real-time approximations- Irregular domains

Human Computer Interaction- Objective evaluation of the results- Architects and artists benefits from our

research

Geometric Computing

Page 11: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Page 12: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object

Page 13: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images

Page 14: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model

Page 15: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model

Page 16: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model

Page 17: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Page 18: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Applications

Page 19: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Animation

Applications

Page 20: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Animation

Physical Simulation

Applications

Page 21: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Animation

Physical Simulation

Fabrication

Applications

Page 22: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Animation

Physical Simulation

Fabrication

VisualEffects

Applications

Page 23: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Animation

Physical Simulation

Fabrication

VisualEffects

StructuralAnalysis

Applications

Page 24: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Animation

Physical Simulation

VisualEffects

StructuralAnalysis

Applications

Fabrication

Page 25: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

3D Printer

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Animation

Physical Simulation

VisualEffects

StructuralAnalysis

Applications

Fabrication

Page 26: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

3D Printer

Geometric Computing

Physical Object Range Images Unstructured Model Structured Model

Animation

Physical Simulation

VisualEffects

StructuralAnalysis

Applications

Fabrication

Physical Derived Object

Page 27: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Course Overview

• Daniele: Introduction to Geometric Computing with Jupyter

• Sebastian: Geometric Computing and Geometric Deep Learning

• Teseo: Mesh Generation and Numerical Simulation

• Q&A

6

Page 28: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Getting Started

• The libraries used in this course are implemented in C++ for efficiency reasons, but are exposed to python for ease of integration

• All libraries are available on conda, they can be installed with:

7

conda config --add channels conda-forge

conda install meshplotconda install iglconda install wildmeshingconda install polyfempy

Page 29: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Libraries OverviewCross Platform: Windows, MacOSX, Linux

8

Page 30: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

MeshPlot

9

https://skoch9.github.io/meshplot/

Page 31: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Interactive Geometry Library (libigl)

10

https://libigl.github.io

Page 32: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Wild Meshing (TetWild)

11

https://wildmeshing.github.io

Page 33: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

PolyFEM

12

https://polyfem.github.io

Page 34: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Data Structures (or lack thereof)

13Acknowledgement: Alec Jacobson

Page 35: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

14

Page 36: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

15

Page 37: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

16

Page 38: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

17

v1 = [x1 y1 z1]

Page 39: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

18

v1 = [x1 y1 z1] v2 = [x2 y2 z2]

Page 40: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

19

v1 = [x1 y1 z1] v2 = [x2 y2 z2]

v3

Page 41: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

20

v1 = [x1 y1 z1] v2 = [x2 y2 z2]

v3

Page 42: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

20

v1 = [x1 y1 z1] v2 = [x2 y2 z2]

v3

Store vertex positions as n×3 matrix of real numbers

V = [x1 y1 z1; x2 y2 z2; … xn yn zn]

Page 43: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

21

v1 v2

v3

Page 44: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

22

v1 v2

v3

f1 = [1 3 2 ]

Page 45: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

23

v1 v2

v3

f1 = [1 3 2 ]orientation matters!

Page 46: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

24

v1 v2

v3

f1 = [1 3 2 ]

Page 47: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

25

f1

Page 48: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

26

f1 f2

Page 49: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

27

f1 f3f2

Page 50: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

28

f3f1 f2

Page 51: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Triangle meshes discretize surfaces…

28

f3f1 f2

Store triangle connectivity as m×3 matrix of indices into V

F = [f11 f12 f13; f21 f21 f23; … fn1 fn2 fn3]

Page 52: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Why RAW matrices?

• Memory efficient and cache friendly

• Indices are simpler to debug than pointers

• Trivially copied and serialized

• Interchangeable with other libraries: numpy, pyTorch, Tensorflow, Scipy, MATLAB, OpenCV

29

Page 53: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Getting Started

30

Page 54: Geometric Computing with Python · Course Goals • Learn how to design, program, and analyze algorithms for geometric computing • Hands-on experience with shape modeling and geometry

Binder Demo

31


Recommended