Boundary Representations and Topology

Slides:



Advertisements
Similar presentations
Planar Subdivision Induced by planar embedding of a graph. Connected if the underlying graph is. edge vertex hole in f face f disconnected subdivision.
Advertisements

Surface Simplification using Quadric Error Metrics Guowei Wu.
1 Building Models. 2 Objectives Introduce simple data structures for building polygonal models ­Vertex lists ­Edge lists OpenGL vertex arrays.
Map Overlay Algorithm. Birch forest Wolves Map 1: Vegetation Map 2: Animals.
2/14/13CMPS 3120 Computational Geometry1 CMPS 3120: Computational Geometry Spring 2013 Planar Subdivisions and Point Location Carola Wenk Based on: Computational.
Overlay of Two Subdivisions
Mesh Representation, part II based on: Data Structures for Graphics, chapter 12 in Fundamentals of Computer Graphics, 3 rd ed. (Shirley & Marschner) Slides.
CSE554ContouringSlide 1 CSE 554 Lecture 4: Contouring Fall 2013.
CS447/ Realistic Rendering -- Solids Modeling -- Introduction to 2D and 3D Computer Graphics.
The Half-Edge Data Structure Computational Geometry, WS 2007/08 Lecture 3, Part III Prof. Dr. Thomas Ottmann Khaireel A. Mohamed Algorithmen & Datenstrukturen,
The Half-Edge Data Structure
CS CS 175 – Week 4 Mesh Decimation General Framework, Progressive Meshes.
11-1 Space Figures and Cross Sections
History: CNC: ~1950 Mainframe Computers: ~1960’s BREP: 1970 (Baumgart) CSG: 1974 (Ian Braid) Solid Modeling.
UMass Lowell Computer Science Advanced Algorithms Computational Geometry Prof. Karen Daniels Spring, 2007 Chapter 4: 3D Convex Hulls Friday, 2/9/07.
Polygonal Mesh – Data Structure and Smoothing
Polygonal Meshes 3D Object Representation -Tyler Abrams.
Algorithm3. (3-dim) Assumptions Points are ordered in a sequence increasingly with respect to the x coordinate. Points having the same x coordinate are.
UMass Lowell Computer Science Advanced Algorithms Computational Geometry Prof. Karen Daniels Spring, 2004 Chapter 4: 3D Convex Hulls Monday, 2/23/04.
Complex Model Construction Mortenson Chapter 11 Geometric Modeling
Part Two Multiresolution Analysis of Arbitrary Meshes M. Eck, T. DeRose, T. Duchamp, H. Hoppe, M. Lounsbery, W. Stuetzle SIGGRAPH 95.
CS CS 175 – Week 4 Triangle Mesh Smoothing Discrete Differential Geometry.
Mesh Representation, part I
A D V A N C E D C O M P U T E R G R A P H I C S CMSC 635 January 15, 2013 Quadric Error Metrics 1/20 Quadric Error Metrics.
DPL10/16/2015 CS 551/651: Simplification Continued David Luebke
Mesh Data Structure. Meshes Boundary edge: adjacent to 1 face Regular edge: adjacent to 2 faces Singular edge: adjacent to >2 faces Mesh: straight-line.
1 Dr. Scott Schaefer Surface Simplification. 2/32 Surface Simplification Given a closed polygon model, reduce the number of polygons and maintain appearance.
1 Adding charts anywhere Assume a cow is a sphere Cindy Grimm and John Hughes, “Parameterizing n-holed tori”, Mathematics of Surfaces X, 2003 Cindy Grimm,
Planar Subdivision Induced by planar embedding of a graph. Connected if the underlying graph is. edge vertex disconnected subdivision Complexity = #vertices.
Computational Geometry Piyush Kumar (Lecture 10: Point Location) Welcome to CIS5930.
Line Segment Intersection Computational Geometry, WS 2006/07 Lecture 3 – Part III Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.
Arrangements and Duality Sanjay Sthapit Comp290 10/6/98.
Space Figures & Nets, Surface Areas of Prisms & Cylinders Unit 5, Lesson 1 chapter%20ten.ppt.
How to make a greeting card origami box…
Solid Modeling Ref. Mantyla. Introduction Aim of modeling: The search of a media of communication.
CSE554ContouringSlide 1 CSE 554 Lecture 4: Contouring Fall 2015.
Mesh data structure & file format
1 Building Models Ed Angel Professor Emeritus of Computer Science University of New Mexico Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley.
CS418 Computer Graphics John C. Hart
Advanced Computer Graphics CSE 190 [Spring 2015], Lecture 7 Ravi Ramamoorthi
Robert Pless, CS 546: Computational Geometry Lecture #3 Last Time: Plane Sweep Algorithms, Segment Intersection, + (Element Uniqueness)
3D Polyhedral Surfaces in Pierre Alliez.
Greg Humphreys CS445: Intro Graphics University of Virginia, Fall 2003 Subdivision Surfaces Greg Humphreys University of Virginia CS 445, Fall 2003.
Euler characteristic (simple form):
Solid Modeling Prof. Lizhuang Ma Shanghai Jiao Tong University.
polyhedron a three- dimensional figure whose surfaces are polygons faces edge vertex.
Advanced Computer Graphics (Spring 2013) Mesh representation, overview of mesh simplification Many slides courtesy Szymon Rusinkiewicz.
Solid Modeling Dr. Scott Schaefer.
Decimation of Triangle Meshes Paper by W.J.Schroeder et.al Presented by Guangfeng Ji.
11.1 Notes Space Figures and Cross Sections. Identifying Nets and Space Figures A polyhedron is a 3-dimensional figure whose surfaces are polygons. -
CS552: Computer Graphics Lecture 28: Solid Modeling.
Tse Leung So University of Southampton 28th July 2017
CMPS 3130/6130 Computational Geometry Spring 2017

Computer graphics 3D solid modeling.
CENG 789 – Digital Geometry Processing 04- Mesh Data Structures
Advanced Computer Graphics
Lecture 11 Graph Algorithms
Introduction to Polygons
POLYGON MESH Advance Computer Graphics
GEOMETRY SOL 5.13.
Smooth Surfaces Dr. Scott Schaefer.
Computer Aided Engineering Design
Building Models Ed Angel Professor Emeritus of Computer Science
Introduction Think about trying to move a drop of water across a flat surface. If you try to push the water droplet, it will smear, stretch, and transfer.
Subdivision Surfaces 고려대학교 컴퓨터 그래픽스 연구실 cgvr.korea.ac.kr.
Overlay of Two Subdivisions
A Portrait of a Group on a Surface with Boundary
Prof. Lizhuang Ma Shanghai Jiao Tong University
Presentation transcript:

Boundary Representations and Topology Dr. Scott Schaefer

Boundary Representations Stores the boundary of a solid Geometry: vertex locations Topology: connectivity information Vertices Edges Faces

Boundary Representations Constant time adjacency information For each vertex, Find edges/faces touching vertex For each edge, Find vertices/faces touching edge For each face, Find vertices/edges touching face

Boundary Representations Typically assume the surface is manifold A surface is manifold if, for every point, locally the surface is equivalent to an open disk

Boundary Representations Typically assume the surface is manifold A surface is manifold if, for every point, locally the surface is equivalent to an open disk Locally manifold

Boundary Representations Typically assume the surface is manifold A surface is manifold if, for every point, locally the surface is equivalent to an open disk Non-manifold edge

Boundary Representations Typically assume the surface is manifold A surface is manifold if, for every point, locally the surface is equivalent to an open disk Non-manifold vertex

Winged Edge Data Structure Left face Right face

Winged Edge Data Structure WingedEdge nextLeft, nextRight, prevLeft, prevRight; Face leftFace, rightFace; Vertex prevVert, nextVert; } Left face Right face Face { WingedEdge edge; } Vertex { WingedEdge edge; }

Winged Edge Data Structure Given a face, find all vertices touching that face Given a vertex, find all edge-adjacent vertices Given a face, find all adjacent faces Left face Right face

Half Edge Data Structure face

Half Edge Data Structure HalfEdge next, prev, flip; Face face; Vertex origin; Edge edge; } Face { HalfEdge edge; // part of this face } face Vertex { HalfEdge edge; // points away } Edge { HalfEdge he; }

Half Edge Data Structure Very similar to WingedEdge Data Structure, but edges have unique orientation Slightly more storage Less conditional operations Assumes polygons are oriented face

QuadEdge Data Structure

Navigating a QuadEdge Data Structure

Navigating a QuadEdge Data Structure Origin

Navigating a QuadEdge Data Structure Flip

Navigating a QuadEdge Data Structure Rot

Navigating a QuadEdge Data Structure invRot

Navigating a QuadEdge Data Structure Prev

Navigating a QuadEdge Data Structure Next

QuadEdge Data Structure Treats faces just like vertices Stores both the shape and its dual Beneficial for many types of subdivision surfaces

Building a Topological Data Structure Must connect adjacent edges/faces/vertices Edges are critical in most data structures Use a hash table indexed by two vertices face

Euler Characteristic V: number of vertices E: number of edges F: number of faces G: genus of surface (number of holes)

Euler Characteristic V: number of vertices E: number of edges F: number of faces G: genus of surface (number of holes)

Euler Characteristic V: number of vertices E: number of edges F: number of faces G: genus of surface (number of holes)

Euler Characteristic V: number of vertices E: number of edges F: number of faces G: genus of surface (number of holes)

Euler Characteristic V: number of vertices E: number of edges F: number of faces G: genus of surface (number of holes)

Topological Operations: Hole Filling Find a half-edge whose flip is null Use next and flip points to find next adjacent half-edge with null flip Repeat until back at original half-edge Create new half-edges along boundary and face containing those edges face

Topological Operations: Edge Collapse

Topological Operations: Edge Collapse Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half-edges

Topological Operations: Edge Collapse Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half-edges Set flip on outer edges to point to opposite edge

Topological Operations: Edge Collapse Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half-edges Set flip on outer edges to point to opposite edge Make sure half-edge pointer for edges point to correct half-edge and vice versa

Topological Operations: Edge Collapse Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half-edges Set flip on outer edges to point to opposite edge Make sure half-edge pointer for edges point to correct half-edge and vice versa Update half-edge for wing-vertices

Topological Operations: Edge Collapse Set origin of all edges pointing outwards from two vertices to new vertex and vertex to one of the half-edges Set flip on outer edges to point to opposite edge Make sure half-edge pointer for edges point to correct half-edge and vice versa Update half-edge for wing-vertices Delete faces/edges/vertices

Topological Operation: Edge Collapse Edge collapse preserves topology as long as the local Euler characteristic of the surface remains the same

Topological Operation: Edge Collapse Edge collapse preserves topology as long as the local Euler characteristic of the surface remains the same

Topological Operation: Edge Collapse Edge collapse does NOT always preserve topology

Detecting Unsafe Edge Collapses Let N(v) be the set of vertices edge-adjacent to v Safe to collapse if