Mesh Representations & Geometry Processing

Similar documents
Meshes and Manifolds. Computer Graphics CMU /15-662

Modeling. Simulating the Everyday World

Geometry Processing & Geometric Queries. Computer Graphics CMU /15-662

Lecture 3 Mesh. Dr. Shuang LIANG. School of Software Engineering Tongji University Spring 2013

Triangle meshes I. CS 4620 Lecture 2

Triangle meshes I. CS 4620 Lecture Steve Marschner. Cornell CS4620 Spring 2017

Subdivision Curves and Surfaces: An Introduction

Triangle meshes. Computer Graphics CSE 167 Lecture 8

From curves to surfaces. Parametric surfaces and solid modeling. Extrusions. Surfaces of revolution. So far have discussed spline curves in 2D

Digital Geometry Processing. Computer Graphics CMU /15-662

Triangle meshes I. CS 4620 Lecture Kavita Bala (with previous instructor Marschner) Cornell CS4620 Fall 2015 Lecture 2

Subdivision overview

Meshes. Mesh elements

Subdivision Surfaces

DISCRETE DIFFERENTIAL GEOMETRY: AN APPLIED INTRODUCTION Keenan Crane CMU /858B Fall 2017

Subdivision Surfaces

Geometry Processing & Geometric Queries. Computer Graphics CMU /15-662

Introduction to Geometry. Computer Graphics CMU /15-662

Curve Corner Cutting

Subdivision Surfaces

CS 532: 3D Computer Vision 12 th Set of Notes

Physically-Based Modeling and Animation. University of Missouri at Columbia

Advanced Computer Graphics

Subdivision. Outline. Key Questions. Subdivision Surfaces. Advanced Computer Graphics (Spring 2013) Video: Geri s Game (outside link)

CS354 Computer Graphics Surface Representation IV. Qixing Huang March 7th 2018

Example: Loop Scheme. Example: Loop Scheme. What makes a good scheme? recursive application leads to a smooth surface.

Triangle meshes 2. CS 4620 Lecture Steve Marschner. Cornell CS4620 Fall 2018 Lecture 3

INF3320 Computer Graphics and Discrete Geometry

Tutorial 3 Comparing Biological Shapes Patrice Koehl and Joel Hass

Geometry: 3D coordinates Attributes. e.g. normal, color, texture coordinate. Connectivity

MA 323 Geometric Modelling Course Notes: Day 36 Subdivision Surfaces

Interpolating and Approximating Implicit Surfaces from Polygon Soup

Parametric description

Geometric Modeling. Mesh Decimation. Mesh Decimation. Applications. Copyright 2010 Gotsman, Pauly Page 1. Oversampled 3D scan data

UNIVERSITY OF CALGARY. Subdivision Surfaces. Advanced Geometric Modeling Faramarz Samavati

All the Polygons You Can Eat. Doug Rogers Developer Relations

08 - Designing Approximating Curves

The goal is the definition of points with numbers and primitives with equations or functions. The definition of points with numbers requires a

: Mesh Processing. Chapter 2

Representation of Curves and Surfaces in B-Rep Solid Modelers

Applications. Oversampled 3D scan data. ~150k triangles ~80k triangles

Subdivision curves and surfaces. Brian Curless CSE 557 Fall 2015

Adjacency Data Structures

Computer Graphics CS 543 Lecture 13a Curves, Tesselation/Geometry Shaders & Level of Detail

ECE 600, Dr. Farag, Summer 09

Appearance Preservation

Geometric Algorithms in Three Dimensions Tutorial. FSP Seminar, Strobl,

Topological Issues in Hexahedral Meshing

Algorithms for GIS csci3225

Homework #2. Shading, Projections, Texture Mapping, Ray Tracing, and Bezier Curves

Curves D.A. Forsyth, with slides from John Hart

Pipeline Operations. CS 4620 Lecture 10

2D Spline Curves. CS 4620 Lecture 18

Spline Surfaces, Subdivision Surfaces

Computergrafik. Matthias Zwicker Universität Bern Herbst 2016

Information Coding / Computer Graphics, ISY, LiTH. Splines

GAUSS-BONNET FOR DISCRETE SURFACES

Notation. Triangle meshes. Topology/geometry examples. Validity of triangle meshes. n T = #tris; n V = #verts; n E = #edges

Surface Modeling. Polygon Tables. Types: Generating models: Polygon Surfaces. Polygon surfaces Curved surfaces Volumes. Interactive Procedural

Homework 1: Implicit Surfaces, Collision Detection, & Volumetric Data Structures. Loop Subdivision. Loop Subdivision. Questions/Comments?

Know it. Control points. B Spline surfaces. Implicit surfaces

INTRODUCTION TO CAD/CAM SYSTEMS IM LECTURE HOURS PER WEEK PRESENTIAL

13 - Meshes. Acknowledgement: Enrico Puppo. CSCI-GA Computer Graphics - Fall 16 - Daniele Panozzo

Lecture IV Bézier Curves

Intro to Ray-Tracing & Ray-Surface Acceleration

Lecture 4: Geometry Processing. Kayvon Fatahalian CMU : Graphics and Imaging Architectures (Fall 2011)

Efficient Representation and Extraction of 2-Manifold Isosurfaces Using kd-trees

Curves and Surfaces. Shireen Elhabian and Aly A. Farag University of Louisville

THE HALF-EDGE DATA STRUCTURE MODELING AND ANIMATION

Subdivision Surfaces. Course Syllabus. Course Syllabus. Modeling. Equivalence of Representations. 3D Object Representations

Advanced Modeling 2. Katja Bühler, Andrej Varchola, Eduard Gröller. March 24, x(t) z(t)

Technical Report. Removing polar rendering artifacts in subdivision surfaces. Ursula H. Augsdörfer, Neil A. Dodgson, Malcolm A. Sabin.

Pipeline Operations. CS 4620 Lecture 14

05 - Surfaces. Acknowledgements: Olga Sorkine-Hornung. CSCI-GA Geometric Modeling - Daniele Panozzo

M4G - A Surface Representation for Adaptive CPU-GPU Computation

Polygonization of Implicit Surfaces

Joe Warren, Scott Schaefer Rice University

Subdivision Curves and Surfaces

Free-Form Deformation and Other Deformation Techniques

Lecture 25: Bezier Subdivision. And he took unto him all these, and divided them in the midst, and laid each piece one against another: Genesis 15:10

Geometric Modeling Based on Polygonal Meshes: OpenMesh

Surfaces for CAGD. FSP Tutorial. FSP-Seminar, Graz, November

Parametric Curves. University of Texas at Austin CS384G - Computer Graphics

Geometric Modeling in Graphics

3D Modeling: Surfaces

Solid Modelling. Graphics Systems / Computer Graphics and Interfaces COLLEGE OF ENGINEERING UNIVERSITY OF PORTO

Central issues in modelling

View-dependent Polygonal Simplification

Ray Casting of Trimmed NURBS Surfaces on the GPU

CS354 Computer Graphics Surface Representation III. Qixing Huang March 5th 2018

Rendering Subdivision Surfaces Efficiently on the GPU

Figure 5.1: Spline and ducks.

09 - Designing Surfaces. CSCI-GA Computer Graphics - Fall 16 - Daniele Panozzo

Intro to Modeling Modeling in 3D

Convex Hull Generation with Quick Hull. Randy Gaul Special thanks to Stan Melax and Dirk Gregorius for contributions on this topic

Curves, Surfaces and Recursive Subdivision

Algorithms for GIS. Spatial data: Models and representation (part I) Laura Toma. Bowdoin College

Surface and Solid Geometry. 3D Polygons

CS 465 Program 4: Modeller

CS-184: Computer Graphics

Transcription:

Lecture 10/11: Mesh Representations & Geometry Processing Computer Graphics and Imaging UC Berkeley

A Small Triangle Mesh 8 vertices, 12 triangles

A Large Triangle Mesh David Digital Michelangelo Project 28,184,526 vertices 56,230,343 triangles

A Very Large Triangle Mesh Google Earth Meshes reconstructed from satellite and aerial photography Trillions of triangles

Digital Geometry Processing 3D Scanning 3D Printing

Geometry Processing Pipeline Scan Process Print

Geometry Processing Tasks: 3 Examples

Mesh Upsampling Subdivision Increase resolution via interpolation

Mesh Downsampling Simplification Decrease resolution; try to preserve shape/appearance

Mesh Regularization Modify sample distribution to improve quality

This Lecture Study how to represent meshes (data structures) Study how to process meshes (geometry processing)

Mesh Representations

List of Triangles

Lists of Points / Indexed Triangle

Comparison Triangles + Simple Redundant information Points + Triangles + Sharing vertices reduces memory usage + Ensure integrity of the mesh (moving a vertex causes that vertex in all the polygons to move)

Topology vs Geometry Same geometry, different mesh topology Same mesh topology, different geometry

Topological Mesh Information Applications: Constant time access to neighbors e.g. surface normal calculation, subdivision Editing the geometry e.g. adding/removing vertices, faces, edges, etc. Solution: Topological data structures

Topological Validity: Manifold Definition: a 2D manifold is a surface that when cut with a small sphere always yields a disk. Manifold Not manifold Mesh manifolds have the following properties: An edge connects exactly two faces An edge connects exactly two vertices A face consists of a ring of edges and vertices A vertex With consists border of a ring of edges and With faces border Euler s formula #f - #e + #v = 2 (for a surface topologically equivalent to a sphere) (Check for a cube: 6 12 + 8 = 2)

Topological Validity: Manifold Definition: a 2D manifold is a surface that when cut with a small sphere always yields a disk. If a mesh is manifold we can rely on these useful properties: An edge connects exactly two faces An edge connects exactly two vertices A face consists of a ring of edges and vertices A vertex consists of a ring of edges and faces Euler s polyhedron formula holds: #f #e + #v = 2 (for a surface topologically equivalent to a sphere) (Check for a cube: 6 12 + 8 = 2)

Topological Validity: Orientation Consistency Both facing front C Inconsistent orientations C D D B A B A Non-orientable

Triangle-Neighbor Data Structure struct Tri { v[1] Vert * v[3]; Tri * t[3]; t[2] t[1] } struct Vert { Point pt; v[2] v[0] Tri *t; t[0] }

Triangle-Neighbor Mesh Traversal Find next triangle counter-clockwise around vertex v from triangle t v[1] Tri *tccwvt(vert *v, Tri *t) { if (v == t->v[0]) return t[0]; if (v == t->v[1]) v[2] t[2] t[1] v[0] return t[1]; t[0] if (v == t->v[2]) return t[2]; }

Half-Edge Data Structure struct Halfedge { Halfedge *twin, Halfedge *next; Vertex *vertex; Edge *edge; Face *face; } struct Vertex { Point pt; Halfedge *halfedge; } struct Edge { Halfedge *halfedge; } struct Face { Halfedge *halfedge; } Key idea: two half-edges act as glue between mesh elements next face Halfedge edge vertex twin Each vertex, edge and face points to one of its half edges

Half-Edge Facilitates Mesh Traversal Use twin and next pointers to move around mesh Process vertex, edge and/or face pointers Example 1: process all vertices of a face Halfedge* h = f->halfedge; do { process(h->vertex); h = h->next; next Face next halfedge } while( h!= f->halfedge );

Half-Edge Facilitates Mesh Traversal Example 2: process all edges around a vertex Halfedge* h = v->halfedge; do { halfedge twin next process(h->edge); h = h->twin->next; Vertex twin next } while( h!= v->halfedge );

Local Mesh Operations

Half-Edge Local Mesh Editing Basic operations for linked list: insert, delete Basic ops for half-edge mesh: flip, split, collapse edges c flip c c split c a d a d a d a m d b b b b a collapse a c d m b b Allocate / delete elements; reassign pointers (Care needed to preserve mesh manifold property)

Half-Edge Edge Flip Triangles (a,b,c), (b,d,c) become (a,d,c), (a,b,d): c flip c a d a d b b Long list of pointer reassignments However, no elements created/destroyed.

Half-Edge Edge Split Insert midpoint m of edge (c,b), connect to get four triangles: c split c a d a m d b b This time have to add elements Again, many pointer reassignments

Half-Edge Edge Collapse Replace edge (c,d) with a single vertex m: a collapse a c d m b b This time have to delete elements Again, many pointer reassignments

Global Mesh Operations: Geometry Processing Mesh subdivision Mesh simplification Mesh regularization

Subdivision Surfaces

Subdivision Surfaces (Reminder) Start with coarse polygon mesh ( control cage ) Subdivide each element Update vertices via local averaging Many possible rule: Catmull-Clark (quads) Loop (triangles)... Common issues: interpolating or approximating? continuity at vertices? Relatively easy for modeling; harder to guarantee continuity

Core Idea: Let Subdivision Define The Surface In Bezier curves, we saw: Evaluation by subdivision (de Casteljau algorithm) Or evaluation by algebra (Bernstein polynomials) Insight that leads to subdivision surfaces: Free ourselves from the algebraic evaluation Let subdivision fully define the surface Many possible subdivision rules different surfaces Technical challenge shifts to designing rules and proving properties (e.g. convergence and continuity) Applying rules to compute surface is procedural

To Be Continued

Acknowledgments Thanks to Keenan Crane, Pat Hanrahan, Steve Marschner and James O Brien for presentation resources.