Title: Mesh Parameterization: Theory and Practice Making it work in practice Numerics
1Mesh ParameterizationTheory and
PracticeMaking it work in practice - Numerics
Bruno Lévy - INRIA
2Overview
- 1. Numerical Problems
- 2. Linear and Quadratic
- 3. Non-linear
-
3Motivations
Need for scalability in GP
41. Numerical Problems in GPMesh Parameterization
Ui S ai,jUj
j ? Ni
i
? i,j ai,j gt 0 ai,i - S ai,j
j1
j
The border is mapped to a convex polygon
j2
Tutte, Floater
51. Numerical Problems in GPDiscrete Fairing
2
F(p) S pi - S ai,jpj
i
j ? Ni
i
j1
j
j2
Mallet, Kobbelt, Sorkine
61. Numerical Problems in GPNeighborhoods
F sum of terms, attached to neighborhoods
Parameterization Haker00 Levy02
Curv. Estimation Cohen-Steiner 03 Texture
mapping Levy01 Discrete fairing Desbrun, ...
Discrete fairing Kobbelt98, Mallet95 Parameteriz
ation Desbrun02 Deformations CohenOr,
Sorkine
Eck
72. Linear and Quadratic GPRemoving degrees of
freedom
2
F(x) A x - b
2
xf xl
Af Al - b
F(xf)
82. Linear and Quadratic GPRemoving degrees of
freedom
The problem (1) construct a linear system
(2) solve a linear system
92. Linear and Quadratic GPThe OpenNL approach
(http//alice.loria.fr/software)
The problem (1) construct a linear system
(2) solve a linear system
NlLockVariable(i1, val1) NlLockVariable(i2,
val2) For each stencil instance (one-rings)
NlBeginRow() NlAddCoefficient(i, a)
NlEndRow()
- Need for
- Dynamic Matrix DS
- Updating formula
102. Linear and Quadratic GPDirect Solvers (LU)
A Textbook solver LU factorization (and Cholesky)
a small problem O(n3) !!
112. Linear and Quadratic GPSuccessive
Over-Relaxation (Gauss-Seidel)
xf1
.
.
.
.
.
ci
xfi
.
.
.
.
.
xfnf
used in Taubin95
122. Linear and Quadratic DGPSuccessive
Over-Relaxation (Gauss-Seidel)
1000 iterations S.O.R.
132. Linear and Quadratic GPWhite Magic The
Conjugate Gradient
inline int solve_conjugate_gradient(
const SparseMatrix A, const Vector b, Vector
x, double eps, int max_iter )
int N A.n() double t, tau, sig,
rho, gam double bnorm2
BLASddot(N,b,1,b,1) double
errepsepsbnorm2
mult(A,x,g) BLASdaxpy(N,-1.,b,1,g,1)
BLASdscal(N,-1.,g,1)
BLASdcopy(N,g,1,r,1) while (
BLASddot(N,g,1,g,1)gterr its lt max_iter)
mult(A,r,p)
rhoBLASddot(N,p,1,p,1)
sigBLASddot(N,r,1,p,1)
tauBLASddot(N,g,1,r,1)
ttau/sig BLASdaxpy(N,t,r,1,x,1)
BLASdaxpy(N,-t,p,1,g,1)
gam(ttrho-tau)/tau
BLASdscal(N,gam,r,1)
BLASdaxpy(N,1.,g,1,r,1) its
return its
Only simple vector ops (BLAS)
Shewchuck CG without the agonizing pain
14Iterative Solvers
- Successive Over-Relaxation
- Sparse C.G. gt100x
speedup
15Iterative Solvers
The Sparse Conjugate Gradient Solver
Sparse storage of G AftAf
Interactive solver !!!
16White magic Multigrid
Remember direct solver is O(n3)
Sparse Conjugate Gradient is O(n2) !!
Thats much better, but
we want even more efficiency !!
17White magic Multigrid
Lee,Schroeder, Kobbelt,Hackbuch
18White magic Multigrid
MIPS, HLSCM, ABF
Step 2 Cascadic multigrid
19White Magic Multigrid
direct solver O(n3) Sparse CG O(n2)
Multigrid O(n) !!
20Black Magic Sparse Direct
We started from O(n3) We achieved O(n)
Can we do better ?
-- Interactivity -- -- Ease of implementation --
Sheffer et.al SuperLU for ABF Botsch et.al
Interactive mesh deformation
212. Linear and Quadratic DGPBlack Magic Sparse
Direct Solvers
Super-nodal Demmel et.al 96 Multi-frontalL
excellent et.al 98 Toledo
et.al
Direct methods revenge
Super-Nodal data structure
TAUCS, SuperLU, CHOLDMOD
22Black Magic Sparse direct
Interactivity
TAUCS, SuperLU, CHOLDMOD
232. Linear and Quadratic GPOpenNL architecture
NlLockVariables(i,a) NlBeginRow() NlAddCoeffici
ent(i,a) NlEndRow() NlSolve()
242. Linear and Quadratic GPApplications
Maya
Gocad Meshing for oil-exploration
Blender (OpenSource)
VSP-Technology ATARI-Infogrammes
252. Linear and Quadratic GPApplications
OpenNL in SILO
263. Non-Linear GP
- MIPS Hormann, Stretch Sander
- ABF Sheffer, ABF Sheffer Lévy
- PGP Ray,Levy,Li,Sheffer,Alliez
- Circle Packings/Patterns Bobenko, Karevych
27Conquer the non-linear world
We want to optimize a function F(x) What can we
do when F is non-linear ?
28Conquer the non-linear world
Non-linear shapes functionals
Connectivity shapes Angle Based Flattening
Demos
29Conclusionsa map to the solvers jungle
Numerical Solvers
30Conclusions
100x speedup w.r.t. S.O.R. simple to implement
Linear O(n) !!! (1000x) best for huge objects
Ultra-fast (best for interactivity) (10000x) Big
memory overhead
Difficult to tune
31ConclusionTake home message
- In most cases, TAUCS OOC will do the job.
- For small datasets, PreCG has a good
simplicity/mem. requirement/efficientcy ratio. - Use OpenNL for Matrix Assembly - Solver
Abstraction
32Resources
- Source code papers
- on http//alice.loria.fr
- Graphite
- OpenNL