M4G - A Surface Representation for Adaptive CPU-GPU Computation Vision and Graphics Lab Institute of Pure and Applied Mathematics Trimester Program on Computational Manifolds and Applications November 22, 2011 Rio de Janeiro, Brazil
Manifolds-for-GPUs (M4G) Goal Surface Dynamic and adaptive CPU-GPU computation Source Scanned triangular meshes Application (e.g.) Progressive visualization
Manifolds-for-GPUs (M4G) Goal Considerations Surface Ongoing work Dynamic and adaptive Make several assumptions CPU-GPU computation Use many known techniques Source Scanned triangular meshes Application (e.g.) Progressive visualization The "manifold" word is used lightly
basic :: surface triangular mesh
basic :: surface halfedge structure triangular mesh
basic :: subdivision surface quadrangular base mesh
basic :: subdivision surface quadrangular base mesh Catmull-Clark subdivision
our goal surface
our goal surface simplification process base mesh
our goal surface 4-8 mesh base mesh
our goal atlas surface 4-8 mesh collection of charts base mesh
our goal atlas surface 4-8 mesh collection of charts II-bimba-base-wire-up.avi base mesh
problem statement surface + base mesh
problem statement surface + base mesh how to build a correspondence?
problem statement Multi-resolution structure surface Low-level in the CPU + High-level in the GPU Dynamic controllable base mesh how to build a correspondence? IV-bimba-cpu-gpu-up-down.avi
problem statement + correspondence
problem statement + correspondence chart boundaries build an atlas
problem statement + correspondence parameterizations: curves (1D) and interior (2D) chart boundaries finding curves over the surface build an atlas
finding curves over the surface first thought :: geodesics nice grid of charts
finding curves over the surface problem with geodesics avoiding high frequencies inconsistency through chart boundaries how to find better curves over the surface?
finding curves over the surface problem with geodesics corresponding boundary curve
finding curves over the surface work in progress :: new algorithm boundary curve based on cutting plane
finding curves over the surface work in progress :: new algorithm assign an "edge normal" based on the base mesh faces define cutting planes for each chart boundary (base mesh edges)
finding curves over the surface new algorithm :: problem solved? assign an "edge normal" based on the base mesh faces define cutting planes for each chart boundary (base mesh edges)
finding curves over the surface problem with new algorithm ok here computing without considering others matching all cutting planes to agree without intersection on curves is difficult (maybe even NP-Complete?) inconsistency through chart boundaries
building an atlas surface and curves
building an atlas surface and curves
building an atlas surface and curves parameterize curves by arc-length
building an atlas surface and curves parameterize curves by arc-length
building an atlas parameterize interior using a known technique (such as [Floater, 2003]) surface and curves parameterize curves by arc-length
building an atlas parameterize interior using a known technique (such as [Floater, 2003]) surface and curves parameterize curves by arc-length http://www.cgal.org/manual/latest/doc_html/cgal_manual/surface_mesh_parameterization/chapter_main.html
building an atlas composed both in the M4G atlas parameterize interior using a known technique (such as [Floater, 2003]) surface and curves parameterize curves by arc-length
comparing parameterizations [Floater, 2003] chosen result
4-8 mesh base mesh
4-8 mesh tile (triquad: triangulated quadrangulation) base mesh
4-8 mesh tile base mesh chart
4-8 mesh tile chart 1D shared parameterization base mesh 2D separate parameterization
4-8 mesh tile base mesh chart
4-8 mesh tile base mesh chart lookup surface properties in the interior of chart
4-8 mesh tile base mesh chart lookup in the boundary of chart
4-8 mesh tile base mesh chart refinement and simplification occur in the CPU...
4-8 mesh tile base mesh chart refinement and simplification occur in the CPU... VI-bimba-texture-lines.avi
CPU-GPU coupled computation dense mesh Multi-resolution structure base mesh
CPU-GPU coupled computation dense mesh Multi-resolution structure controlled by the CPU base mesh
CPU-GPU coupled computation dense mesh tessellated by the GPU Multi-resolution structure base mesh
CPU-GPU coupled computation
CPU-GPU coupled computation footnote patch vertices can be defined vertices vertex shader controls the tessellation level of the patches specify properties of tessellated vertices tessellation control shader tessellation evaluation shader tessellator geometry shader fragment shader rasterizer pixels
CPU-GPU coupled computation footnote patch vertices can be defined vertices vertex shader controls the tessellation level of the patches specify properties of tessellated vertices tessellation control shader tessellation evaluation shader tessellator VIII-bimba-min-max.avi geometry shader fragment shader rasterizer pixels
applications progressive visualization
applications progressive visualization XV-bimba-top-down.avi
conclusions An adaptive surface Controlled by both the CPU and the GPU Boundary curves are still tricky Atlas storage is naïve More meaningful applications making of...
finding boundary curves using global parameterization as initial guess base mesh on top of domain? is it still a valid mesh? on the interior?
Thank You! Trimester Program on Computational Manifolds and Applications andmax@gmail.com http://www.impa.br/~andmax acknowledgements: