eccv tutorial mesh processing numerics bruno lévy inria - alice
TRANSCRIPT
![Page 1: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/1.jpg)
ECCV TutorialECCV TutorialMesh ProcessingMesh Processing
NumericsNumerics
Bruno LévyBruno LévyINRIA - ALICEINRIA - ALICE
![Page 2: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/2.jpg)
OverviewOverview
1. Numerical Problems 1. Numerical Problems
2. Linear and Quadratic 2. Linear and Quadratic
3. Non-linear 3. Non-linear
![Page 3: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/3.jpg)
Motivations:Motivations:
1970’s1970’s
2000’s2000’s
Need for Need for scalabilityscalability in GP in GP
![Page 4: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/4.jpg)
1. Numerical Problems in GP1. Numerical Problems in GPMesh ParameterizationMesh Parameterization
ii
jj11
jj22jj……
UUii = = a ai,ji,jUUjj
j j N Nii
i,j ai,j ai,ji,j > 0 > 0aai,ii,i = - = - a ai,ji,j
The border is mapped toThe border is mapped toa convex polygona convex polygon
[Tutte], [Floater][Tutte], [Floater]
![Page 5: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/5.jpg)
1. Numerical Problems in GP1. Numerical Problems in GPDiscrete FairingDiscrete Fairing
ii
jj11
jj22jj……
F(p)=F(p)= ppii - - a ai,ji,jppjj
22
j j N Niiii
[Mallet], [Kobbelt], [Sorkine]…[Mallet], [Kobbelt], [Sorkine]…
![Page 6: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/6.jpg)
1. Numerical Problems in GP1. Numerical Problems in GPNeighborhoodsNeighborhoods
F = sum of terms, attached to neighborhoodsF = sum of terms, attached to neighborhoods
Discrete fairingDiscrete fairing[Kobbelt98, Mallet95][Kobbelt98, Mallet95]ParameterizationParameterization[Desbrun02][Desbrun02]DeformationsDeformations[CohenOr], [Sorkine][CohenOr], [Sorkine]
Curv. EstimationCurv. Estimation[Cohen-Steiner 03][Cohen-Steiner 03]Texture mappingTexture mapping[Levy01][Levy01]Discrete fairingDiscrete fairing[Desbrun], ...[Desbrun], ...
ParameterizationParameterization[Haker00][Haker00][Levy02][Levy02]
[Eck][Eck]
![Page 7: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/7.jpg)
2. Linear and Quadratic GP2. Linear and Quadratic GPRemoving degrees of freedomRemoving degrees of freedom
F(xf) = F(xf) = xfxf
xlxl
[ Af [ Af AlAl] - b] - b
22
F(x) = A x - bF(x) = A x - b22
![Page 8: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/8.jpg)
2. Linear and Quadratic GP2. Linear and Quadratic GPRemoving degrees of freedomRemoving degrees of freedom
F(xf) = A.x - d = Al.xl + Af.xf - d F(xf) = A.x - d = Al.xl + Af.xf - d2 2
F(xf) minimumF(xf) minimum Aft.Af.xf = Af
t.d - AftAl.xl Af
t.Af.xf = Aft.d - Af
tAl.xl
M.x = b M.x = b
}} }}
The problem: (1) construct a linear system (2) solve a linear system
![Page 9: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/9.jpg)
2. Linear and Quadratic GP2. Linear and Quadratic GPThe OpenNL approach The OpenNL approach
(http://alice.loria.fr/software)(http://alice.loria.fr/software)
The problem: (1) construct a linear system (2) solve a linear system
NlLockVariable(i1, val1)NlLockVariable(i1, val1)NlLockVariable(i2, val2)NlLockVariable(i2, val2)……For each stencil instance (one-rings):For each stencil instance (one-rings): NlBeginRow();NlBeginRow(); NlAddCoefficient(i, a);NlAddCoefficient(i, a); … … NlEndRow();NlEndRow();
NlSolve()NlSolve()
Need forNeed for• Dynamic Matrix DSDynamic Matrix DS• Updating formulaUpdating formula
![Page 10: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/10.jpg)
2. Linear and Quadratic GP2. Linear and Quadratic GPDirect Solvers (LU)Direct Solvers (LU)
A Textbook solver: LU factorization (and Cholesky)
M =M =UL
UL x = b
L Y = b (1) solve
U x = Y(2) solve
a ‘small’ problem: O(n3) !!n=100 0.01 sn=106 10 centuries
![Page 11: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/11.jpg)
2. Linear and Quadratic GP2. Linear and Quadratic GPSuccessive Over-Relaxation (Gauss-Seidel)Successive Over-Relaxation (Gauss-Seidel)
=
….
ci
….
xfnf
xf1
mi,jmi,1 mi,n… …
m1,jm1,1 m1,n… …
mn,jmn,1 mn,n… …
….
….
….
….
….
….
xfi
….
….
xfixfimi,imi,i
j = ij = i mi,j xfjmi,j xfjci-ci-(( )) used in [Taubin95]used in [Taubin95]
……
![Page 12: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/12.jpg)
2. Linear and Quadratic DGP2. Linear and Quadratic DGPSuccessive Over-Relaxation (Gauss-Seidel)Successive Over-Relaxation (Gauss-Seidel)
1000 iterations S.O.R.
![Page 13: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/13.jpg)
2. Linear and Quadratic GP2. Linear and Quadratic GPWhite Magic: White Magic: The Conjugate GradientThe Conjugate Gradient
inline int solve_conjugate_gradient(inline int solve_conjugate_gradient( const SparseMatrix &A, const Vector& b, Vector& const SparseMatrix &A, const Vector& b, Vector& x, x, double eps, int max_iterdouble eps, int max_iter ){ ){ int N = A.n() ;int N = A.n() ; double t, tau, sig, rho, gam;double t, tau, sig, rho, gam; double bnorm2 = BLAS::ddot(N,b,1,b,1) ; double bnorm2 = BLAS::ddot(N,b,1,b,1) ; double err=eps*eps*bnorm2 ; double err=eps*eps*bnorm2 ; mult(A,x,g);mult(A,x,g); BLAS::daxpy(N,-1.,b,1,g,1);BLAS::daxpy(N,-1.,b,1,g,1); BLAS::dscal(N,-1.,g,1);BLAS::dscal(N,-1.,g,1); BLAS::dcopy(N,g,1,r,1);BLAS::dcopy(N,g,1,r,1); while ( BLAS::ddot(N,g,1,g,1)>err && its < while ( BLAS::ddot(N,g,1,g,1)>err && its < max_iter) { max_iter) { mult(A,r,p);mult(A,r,p); rho=BLAS::ddot(N,p,1,p,1);rho=BLAS::ddot(N,p,1,p,1); sig=BLAS::ddot(N,r,1,p,1);sig=BLAS::ddot(N,r,1,p,1); tau=BLAS::ddot(N,g,1,r,1);tau=BLAS::ddot(N,g,1,r,1); t=tau/sig;t=tau/sig; BLAS::daxpy(N,t,r,1,x,1);BLAS::daxpy(N,t,r,1,x,1); BLAS::daxpy(N,-t,p,1,g,1);BLAS::daxpy(N,-t,p,1,g,1); gam=(t*t*rho-tau)/tau;gam=(t*t*rho-tau)/tau; BLAS::dscal(N,gam,r,1);BLAS::dscal(N,gam,r,1); BLAS::daxpy(N,1.,g,1,r,1);BLAS::daxpy(N,1.,g,1,r,1); ++its;++its; }} return its ;return its ;}}
Only simpleOnly simplevector ops (BLAS)vector ops (BLAS)
Complicated ops:Complicated ops:Matrix x vectorMatrix x vector(see course notes)(see course notes)
[Shewchuck: CG without the agonizing pain][Shewchuck: CG without the agonizing pain]
![Page 14: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/14.jpg)
Iterative SolversIterative Solvers•Successive Over-Relaxation •Sparse C.G. >100x speedup
5
2.5
0 900 45
- log|G.x + c |
Time(s)
Precond.Conj. Grad.
S.O.R.
Conj. Grad.
![Page 15: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/15.jpg)
Iterative SolversIterative Solvers
j, gi,j
Sparse storage of G = AftAf Sparse storage of G = AftAf
The Sparse Conjugate Gradient Solver
Demo
Interactive solver !!!
![Page 16: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/16.jpg)
White magic: MultigridWhite magic: Multigrid
Sparse Conjugate Gradient is O(n2) !!
Remember: direct solver is O(n3)
That’s much better, but …
… we want even more efficiency !!
![Page 17: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/17.jpg)
White magic: MultigridWhite magic: Multigrid
[Lee],[Schroeder],[Kobbelt],[Hackbuch]
1
1
2
2
3
3
4
4
Cascadic multigrid
Coarse to fine[Bornemann96]
![Page 18: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/18.jpg)
White magic: MultigridWhite magic: Multigrid
Step 2: Cascadic multigrid
[MIPS, HLSCM, ABF++…]
![Page 19: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/19.jpg)
White Magic: MultigridWhite Magic: Multigrid
direct solver : O(n3)Sparse CG : O(n2)
Multigrid : O(n) !!
![Page 20: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/20.jpg)
Black Magic: Black Magic: Sparse DirectSparse Direct[ ]
We started from O(n3)We achieved O(n)
Can we do better ?
-- Interactivity ---- Ease of implementation --
[Sheffer et.al] SuperLU for ABF[Sheffer et.al] SuperLU for ABF[Botsch et.al] Interactive mesh deformation[Botsch et.al] Interactive mesh deformation
![Page 21: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/21.jpg)
2. Linear and Quadratic DGP2. Linear and Quadratic DGPBlack Magic: Black Magic: Sparse Direct SolversSparse Direct Solvers
Direct method’s revenge: Super-Nodal data structure
M =M =UL
j, gi,j
Super-nodal: [Demmel et.al 96]Multi-frontal:[Lexcellent et.al 98] [Toledo et.al]
TAUCS, SuperLU, CHOLDMODTAUCS, SuperLU, CHOLDMOD
![Page 22: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/22.jpg)
Black Magic: Black Magic: Sparse directSparse direct[ ]
Demos
Interactivity
TAUCS, SuperLU, CHOLDMODTAUCS, SuperLU, CHOLDMOD
![Page 23: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/23.jpg)
2. Linear and Quadratic GP2. Linear and Quadratic GPOpenNL architectureOpenNL architecture
NlLockVariables(i,a)NlLockVariables(i,a)……
NlBeginRow()NlBeginRow()NlAddCoefficient(i,a)NlAddCoefficient(i,a)……NlEndRow()NlEndRow()
NlSolve()NlSolve()
j, gi,j
LS with LS with reducedreduceddegrees ofdegrees offreedomfreedom
•Built-in (CG, GMRES, BICGSTAB)Built-in (CG, GMRES, BICGSTAB)•SuperLUSuperLU•MUMPSMUMPS•TAUCSTAUCS•……
![Page 24: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/24.jpg)
2. Linear and Quadratic GP2. Linear and Quadratic GPApplicationsApplications
Gocad:Gocad:Meshing forMeshing foroil-explorationoil-exploration
MayaMaya
VSP-TechnologyVSP-TechnologyATARI-InfogrammesATARI-Infogrammes
Blender Blender (OpenSource)(OpenSource)
![Page 25: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/25.jpg)
2. Linear and Quadratic GP2. Linear and Quadratic GPApplicationsApplications
OpenNL in SILOOpenNL in SILO
![Page 26: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/26.jpg)
3. Non-Linear GP3. Non-Linear GP
MIPS MIPS [Hormann], Stretch [Sander][Hormann], Stretch [Sander] ABF ABF [Sheffer][Sheffer], ABF++ , ABF++ [Sheffer & Lévy][Sheffer & Lévy] PGP [Ray,Levy,Li,Sheffer,Alliez]PGP [Ray,Levy,Li,Sheffer,Alliez] Circle Packings/Patterns Circle Packings/Patterns [Bobenko], [Bobenko],
[Karevych][Karevych]
![Page 27: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/27.jpg)
Conquer the non-linear worldConquer the non-linear world
We want to optimize a function F(x)What can we do when F is non-linear ?
Newton’s method:
![Page 28: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/28.jpg)
Conquer the non-linear worldConquer the non-linear world
Non-linear shapes functionals Connectivity shapes Angle Based Flattening ++
Demos
![Page 29: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/29.jpg)
ConclusionsConclusionsa map to the solvers junglea map to the solvers jungle
Numerical Solvers
Direct Iterative
Multi-grid
Sparse C.G.
S.O.R. [ ] Naive
sparse direct
![Page 30: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/30.jpg)
ConclusionsConclusions
Sparse C.G.
Multi-grid
Sparse direct
Non-linear
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 …
![Page 31: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/31.jpg)
ConclusionConclusionTake home messageTake home message
In most cases, TAUCS + OOC will do the job.In most cases, TAUCS + OOC will do the job.
For small datasets, PreCG has a good For small datasets, PreCG has a good simplicity/mem. requirement/efficientcy ratio.simplicity/mem. requirement/efficientcy ratio.
Use OpenNL for Matrix Assembly - Solver Use OpenNL for Matrix Assembly - Solver AbstractionAbstraction
![Page 32: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/32.jpg)
ResourcesResources
Source code & papersSource code & papers
on http://alice.loria.fr/WIKIon http://alice.loria.fr/WIKI
– GraphiteGraphite– CGALCGAL– OpenMeshOpenMesh– OpenNLOpenNL
![Page 33: ECCV Tutorial Mesh Processing Numerics Bruno Lévy INRIA - ALICE](https://reader036.vdocuments.mx/reader036/viewer/2022062304/56649f265503460f94c3cefb/html5/thumbnails/33.jpg)
ConclusionConclusionMesh Processing: a wide topicMesh Processing: a wide topicData structuresData structuresMesh repairMesh repairMesh analysisMesh analysisSmoothingSmoothingParameterizationParameterizationMesh simplificationMesh simplificationRemeshingRemeshingFreeform modeling ...Freeform modeling ...
SIGGRAPH and EUROGRAPHICS tutorials SIGGRAPH and EUROGRAPHICS tutorials (with M. Botsch, M. Pauly, L. Kobbelt and P. Alliez)(with M. Botsch, M. Pauly, L. Kobbelt and P. Alliez)
http://alice.loria.fr/WIKI/http://alice.loria.fr/WIKI/