Computer Graphics CMU 15-462/15-662 Scotty 3D Setup Recitation Today! Hunt Library Computer Lab 3:30-5Pm
Total Page:16
File Type:pdf, Size:1020Kb
Digital Geometry Processing Computer Graphics CMU 15-462/15-662 Scotty 3D setup recitation Today! Hunt Library Computer Lab 3:30-5pm CMU 15-462/662 Last time part 1: overview of geometry Many types of geometry in nature Geometry Demand sophisticated representations Two major categories: - IMPLICIT - “tests” if a point is in shape - EXPLICIT - directly “lists” points Lots of representations for both CMU 15-462/662 Last time part 2: Meshes & Manifolds Mathematical description of geometry - simplifying assumption: manifold - for polygon meshes: “fans, not fins” Data structures for surfaces - polygon soup - halfedge mesh - storage cost vs. access time, etc. Today: next how do we manipulate geometry? twin - face edge - geometry processing / resampling Halfedge vertex CMU 15-462/662 Today: Geometry Processing & Queries Extend traditional digital signal processing (audio, video, etc.) to deal with geometric signals: - upsampling / downsampling / resampling / filtering ... - aliasing (reconstructed surface gives “false impression”) Also ask some basic questions about geometry: - What’s the closest point? Do two triangles intersect? Etc. Beyond pure geometry, these are basic building blocks for many algorithms in graphics (rendering, animation...) CMU 15-462/662 Digital Geometry Processing: Motivation 3D Scanning 3D Printing CMU 15-462/662 Geometry Processing Pipeline scan print process CMU 15-462/662 Geometry Processing Tasks reconstruction filtering remeshing parameterization compression shape analysis CMU 15-462/662 Geometry Processing: Reconstruction Given samples of geometry, reconstruct surface What are “samples”? Many possibilities: - points, points & normals, ... - image pairs / sets (multi-view stereo) - line density integrals (MRI/CT scans) How do you get a surface? Many techniques: - silhouette-based (visual hull) - Voronoi-based (e.g., power crust) - PDE-based (e.g., Poisson reconstruction) - Radon transform / isosurfacing (marching cubes) CMU 15-462/662 Geometry Processing: Upsampling Increase resolution via interpolation Images: e.g., bilinear, bicubic interpolation Polygon meshes: - subdivision - bilateral upsampling - ... CMU 15-462/662 Geometry Processing: Downsampling Decrease resolution; try to preserve shape/appearance Images: nearest-neighbor, bilinear, bicubic interpolation Point clouds: subsampling (just take fewer points!) Polygon meshes: - iterative decimation, variational shape approximation, ... CMU 15-462/662 Geometry Processing: Resampling Modify sample distribution to improve quality Images: not an issue! (Pixels always stored on a regular grid) Meshes: shape of polygons is extremely important! - different notion of “quality” depending on task - e.g., visualization vs. solving equation Q: What about aliasing? CMU 15-462/662 Geometry Processing: Filtering Remove noise, or emphasize important features (e.g., edges) Images: blurring, bilateral filter, edge detection, ... Polygon meshes: - curvature flow - bilateral filter - spectral filter CMU 15-462/662 Geometry Processing: Compression Reduce storage size by eliminating redundant data/ approximating unimportant data Images: - run-length, Huffman coding - lossless - cosine/wavelet (JPEG/MPEG) - lossy 840kb Polygon meshes: - compress geometry and connectivity - many techniques (lossy & lossless) 8kb CMU 15-462/662 Geometry Processing: Shape Analysis Identify/understand important semantic features Images: computer vision, segmentation, face detection, ... Polygon meshes: - segmentation, correspondence, symmetry detection, ... CMU 15-462/662 Enough overview— Let’s process some geometry! CMU 15-462/662 Remeshing as resampling Remember our discussion of aliasing Bad sampling makes signal appear different than it really is E.g., undersampled curve looks flat Geometry is no different! - undersampling destroys features - oversampling bad for performance CMU 15-462/662 What makes a “good” mesh? One idea: good approximation of original shape! Keep only elements that contribute information about shape Add additional information where, e.g., curvature is large CMU 15-462/662 Approximation of position is not enough! Just because the vertices of a mesh are very close to the surface it approximates does not mean it’s a good approximation! Need to consider other factors, e.g., close approximation of surface normals Otherwise, can have wrong appearance, wrong area, wrong… APPROXIMATION OF CYLINDER FLATTENED (true area) CMU 15-462/662 What else makes a “good” triangle mesh? Another rule of thumb: triangle (pronunciation) “GOOD” “BAD” DELAUNAY E.g., all angles close to 60 degrees More sophisticated condition: Delaunay Can help w/ numerical accuracy/stability Tradeoffs w/ good geometric approximation* e.g., long & skinny might be “more efficient” *See Shewchuk, “What is a Good Linear Element” CMU 15-462/662 What else constitutes a good mesh? Another rule of thumb: regular vertex degree E.g., valence 6 for triangle meshes (equilateral) “GOOD” “OK” “BAD” Why? Better polygon shape, important for (e.g.) subdivision: subdivide FACT: Can’t have perfect valence everywhere! (except on torus) CMU 15-462/662 How do we upsample a mesh? CMU 15-462/662 Upsampling via Subdivision Repeatedly split each element into smaller pieces Replace vertex positions with weighted average of neighbors Main considerations: - interpolating vs. approximating - limit surface continuity (C1, C2, ...) - behavior at irregular vertices Many options: - Quad: Catmull-Clark - Triangle: Loop, Butterfly, Sqrt(3) CMU 15-462/662 Catmull-Clark Subdivision Step 0: split every polygon (any # of sides) into quadrilaterals: New vertex positions are weighted combination of old ones: STEP 1: Face coords STEP 2: Edge coords STEP 3: Vertex coords New vertex coords: – vertex degree – average of face coords around vertex – average of edge coords around vertex – original vertex position CMU 15-462/662 Catmull-Clark on quad mesh (very few irregular vertices) Good normal approximation almost everywhere: smooth smooth reflection lines caustics CMU 15-462/662 Catmull-Clark on triangle mesh (huge number of irregular vertices!) Poor normal approximation almost everywhere: jagged jagged reflection lines caustics ALIASING! CMU 15-462/662 Loop Subdivision Alternative subdivision scheme for triangle meshes Curvature is continuous away from irregular vertices (“C2”) Algorithm: - Split each triangle into four - Assign new vertex positions according to weights: 1/8 u u 3/8 3/8 u u n: vertex degree 1-nu u: 3/16 if n=3, 3/(8n) otherwise 1/8 u u CMU 15-462/662 Loop Subdivision via Edge Operations First, split edges of original mesh in any order: split Next, flip new edges that touch a new & old vertex: flip (Don’t forget to update vertex positions!) Images cribbed from Denis Zorin. CMU 15-462/662 What if we want fewer triangles? CMU 15-462/662 Simplification via Edge Collapse One popular scheme: iteratively collapse edges Greedy algorithm: - assign each edge a cost - collapse edge with least cost - repeat until target number of elements is reached Particularly effective cost function: quadric error metric* 30 #triangles: 30,000 3,000 300 *invented here at CMU! (Garland & Heckbert 1997) CMU 15-462/662 Quadric Error Metric Approximate distance to a collection of triangles Distance is sum of point-to-plane distances - Q: Distance to plane w/ normal N passing through point p? - A: d(x) = N•x - N•p = N•(x-p) x Sum of distances: p N N3 N2 N•(x-p) N4 N1 p N5 CMU 15-462/662 Quadric Error - Homogeneous Coordinates Suppose in coordinates we have - a query point (x,y,z) - a normal (a,b,c) - an offset d := -(p,q,r) • (a,b,c) Then in homogeneous coordinates, let - u := (x,y,z,1) - v := (a,b,c,d) Signed distance to plane is then just u•v = ax+by+cz+d Squared distance is (uTv)2 = uT(vvT)u =: uTKu Key idea: matrix K encodes distance to plane K is symmetric, contains 10 unique coefficients (small storage) CMU 15-462/662 Quadric Error of Edge Collapse How much does it cost to collapse an edge? Idea: compute edge midpoint, measure quadric error collapse Better idea: use point that minimizes quadric error as new point! Q: Ok, but how do we minimize quadric error? CMU 15-462/662 Review: Minimizing a Quadratic Function f(x) Suppose I give you a function f(x) = ax2+bx+c Q: What does the graph of this function look like? Could also look like this! x Q: How do we find the minimum? A: Look for the point where the function isn’t f(x) changing (if we look “up close”) I.e., find the point where the derivative vanishes x (What about our second example?) CMU 15-462/662 Minimizing a Quadratic Form A quadratic form is just a generalization of our quadratic polynomial from 1D to nD E.g., in 2D: f(x,y) = ax2 + bxy + cy2 + dx + ey + g Can always (always!) write quadratic polynomial using a symmetric matrix (and a vector, and a constant): (this expression works for any n!) Q: How do we find a critical point (min/max/saddle)? A: Set derivative to zero! (Can you show this is true, at least in 2D?) CMU 15-462/662 Positive Definite Quadratic Form Just like our 1D parabola, critcal point is not always a min! Q: In 2D, 3D, nD, when do we get a minimum? A: When matrix A is positive-definite: 1D: Must have xax = ax2 > 0. In other words: a is positive! 2D: Graph of function looks like a “bowl”: positive definite positive semidefinite indefinite Positive-definiteness is extremely important in computer graphics: it means we can find a minimum by solving linear equations. Basis of many, many modern algorithms (geometry processing, simulation, ...). CMU 15-462/662 Minimizing Quadratic Error Find “best” point for edge collapse