3D Object Representations Points Solids A Range image A A Point cloud A BSP tree A CSG Polygonal Meshes Sweep Surfaces A A Polygonal mesh Thomas Funkhouser A Subdivision High-level structures Princeton University A Parametric A Scene graph Implicit Application specific C0S 426, Spring 2007 A A

3D Object Representations 3D Polygonal Mesh Points Solids Set of representing a 2D surface A Range image A Voxels embedded in 3D A Point cloud A BSP tree A CSG Sweep Surfaces A Polygonal mesh A Subdivision High-level structures A Parametric A Scene graph A Implicit A Application specific

Isenberg

3D Polygonal Mesh Geometry background Geometry & topology Scene is usually approximated by 3D primitives A Point A Vector Face A Line segment Edge A Ray A Line Vertex Plane (x,y,z) A A

Zorin & Schroeder

1 3D Point 3D Vector Specifies a location Specifies a direction and a magnitude A Represented by three coordinates A Represented by three coordinates A Infinitely small A Magnitude ||V|| = sqrt(dx dx + dy dy + dz dz) A Has no location ttyyppeeddeeff ssttrruucctt {{ Coooorrddiinnaattee xx;; ttyyppeeddeeff ssttrruucctt {{ (dx,dy,dz) Coooorrddiinnaattee yy;; Coooorrddiinnaattee ddxx;; Coooorrddiinnaattee zz;; (x,y,z) Coooorrddiinnaattee ddyy;; }} Pooiinntt;; Coooorrddiinnaattee ddzz;; }} Veeccttoorr;;

Origin

3D Vector 3D Vector Dot product of two 3D vectors Cross product of two 3D vectors Θ A V1·V2 = ||V1 || || V2 || cos( ) A V1·V2 = (dy1dx2 - dz1dy2, dz1dx2 - dx1dz2, dx1dy2 - dy1dx2) A V1xV2 = vector perpendicular to both V1 and V2 Θ A ||V1xV2|| = ||V1 || || V2 || sin( )

(dx1,dy1,dz1) (dx1,dy1,dz1)

Θ Θ (dx2,dy2 ,dz2) (dx2,dy2 ,dz2)

V1xV2

3D Line Segment 3D Ray Linear path between two points Line segment with one endpoint at infinity A Parametric representation: A Parametric representation: ≤ ≤ ∞ » P = P1 + t (P2 - P1), (0 t 1) » P = P1 + t V, (0 <= t < )

ttyyppeeddeeff ssttrruucctt {{ ttyyppeeddeeff ssttrruucctt {{ Pooiinntt P11;; Pooiinntt P11;; Pooiinntt P22;; Veeccttoorr V;; }} Seeggmeenntt;; P2 }} Raayy;;

P1 V

P1

Origin Origin

2 3D Line 3D Plane Line segment with both endpoints at infinity A linear combination of three points A Parametric representation: ∞ ∞ » P = P1 + t V, (- < t < ) ttyyppeeddeeff ssttrruucctt {{ Pooiinntt P11;; Veeccttoorr V;; }} Liinnee;; P2 P3 V P1 P1

Origin Origin

3D Plane 3D Polygon A linear combination of three points Set of points “inside” a sequence of coplanar points A Implicit representation: » P·N + d = 0, or N = (a,b,c) ttyyppeeddeeff ssttrruucctt {{ » ax + by + cz + d = 0 Pooiinntt **ppooiinnttss;; iinntt nnppooiinnttss;; }} Poollyyggoonn;; ttyyppeeddeeff ssttrruucctt {{ Veeccttoorr N;; P2 P3 Diissttaannccee dd;; }} Pllaannee;; P1 d A N is the plane “” » Unit-length vector » Perpendicular to plane Points are in counter-clockwise order Origin

3D Polygonal Mesh 3D Polygonal Meshes Set of polygons representing a 2D surface Why are they of interest? embedded in 3D A Simple, common representation A Rendering with hardware support A Output of many acquisition tools A Input to many simulation/analysis tools

Isenberg Viewpoint

3 3D Polygonal Meshes Outline Properties Acquisition + Efficient display Processing + Easy acquisition œ Accurate Representation œ Concise œ Intuitive editing œ Efficient editing œ Efficient intersections œ Guaranteed validity œ Guaranteed smoothness œ etc.

Polygonal Mesh Acquisition Polygonal Mesh Acquisition Interactive modeling Interactive modeling A Polygon editors Polygon editors A Interchange formats A Interchange formats Scanners Scanners A Laser range scanners A Laser range scanners A Geological survey A Geological survey Sketchup A CAT, MRI, etc. (isosurfaces) A CAT, MRI, etc. (isosurfaces) Simulations Simulations A Physical processes A Physical processes

Blender

Polygonal Mesh Acquisition Polygonal Mesh Acquisition Interactive modeling Interactive modeling A Polygon editors A Polygon editors Interchange formats A Interchange formats Scanners Scanners A Laser range scanners Laser range scanners A Geological survey A Geological survey A CAT, MRI, etc. A CAT, MRI, etc. (isosurfaces) Simulations Simulations A Physical processes A Physical processes

Digital Michelangelo Project Jose Maria De Espona Stanford

4 Polygonal Mesh Acquisition Polygonal Mesh Acquisition Interactive modeling Interactive modeling A Polygon editors A Polygon editors A Interchange formats A Interchange formats Scanners Scanners A Laser range scanners A Laser range scanners Geological survey A Geological survey A CAT, MRI, etc. (isosurfaces) CAT, MRI, etc. (isosurfaces) Simulations Simulations Physical processes Large Geometric Physical processes A Model Repository A Georgia Tech Large Geometric Model Repository Georgia Tech

Polygonal Mesh Acquisition Outline Interactive modeling Acquisition Polygon editors A Processing A Interchange formats Scanners Representation A Laser range scanners A Geological survey A CAT, MRI, etc. (isosurfaces) SGI Simulations Physical processes

MIT

Polygonal Mesh Processing Polygonal Mesh Processing Warps Warps A Rotate A Rotate A Deform A Deform Filters Filters A Smooth A Smooth A Sharpen A Sharpen A Truncate A Truncate A Bevel A Bevel Analysis Analysis A Normals A Normals A Curvature A Curvature

5 Polygonal Mesh Processing Polygonal Mesh Processing Warps Warps A Rotate A Rotate A Deform A Deform Filters Filters A Smooth A Smooth A Sharpen A Sharpen A Truncate A Truncate A Bevel A Bevel Analysis Analysis A Normals A Normals A Curvature A Curvature Sheffer Sheffer

Polygonal Mesh Processing Polygonal Mesh Processing Warps Warps A Rotate A Rotate A Deform A Deform Filters Filters A Smooth A Smooth A Sharpen A Sharpen A Truncate A Truncate A Bevel A Bevel Analysis Analysis A Normals A Normals A Curvature A Curvature Sheffer Sheffer

Polygonal Mesh Processing Polygonal Mesh Processing Warps Warps A Rotate A Rotate A Deform A Deform Filters Filters A Smooth A Smooth A Sharpen A Sharpen Truncate Truncate A A Thouis “Ray” Jones Bevel Bevel A A Weighted Average of Neighbor Vertices Analysis Analysis A Normals A Normals A Curvature A Curvature Olga Sorkine Sheffer

6 Polygonal Mesh Processing Polygonal Mesh Processing Warps Warps A Rotate A Rotate A Deform A Deform Filters Filters A Smooth A Smooth A Sharpen A Sharpen Desbrun A Truncate A Truncate Bevel Bevel A Weighted Average A of Neighbor Vertices Analysis Analysis A Normals A Normals 0.35 A Curvature A Curvature Olga Sorkine Conway

Polygonal Mesh Processing Polygonal Mesh Processing Warps Warps A Rotate A Rotate A Deform A Deform Filters Filters A Smooth A Smooth A Sharpen A Sharpen A Truncate A Truncate Jarek Rossignac A Bevel A Bevel Analysis Analysis A Normals 0.40 A Normals A Curvature A Curvature Conway

Polygonal Mesh Processing Polygonal Mesh Processing Warps Remeshing A Rotate A Subdivide A Deform A Resample Simplify Filters A A Smooth Topological fixup A Sharpen A Fill holes A Truncate A Fix cracks A Bevel A Fix self-intersections Analysis Boolean operations A Normals A Crop A Curvature A Subtract Szymon Rusinkiewicz

7 Polygonal Mesh Processing Polygonal Mesh Processing Remeshing Remeshing A Subdivide A Subdivide A Resample A Resample A Simplify A Simplify Topological fixup Topological fixup A Fill holes A Fill holes Original Resampled A Fix cracks A Fix cracks A Fix self-intersections A Fix self-intersections Boolean operations Boolean operations A Crop A Crop A Subtract A Subtract Zorin & Schroeder Sorkine

Polygonal Mesh Processing Polygonal Mesh Processing Remeshing Remeshing A Subdivide A Subdivide A Resample A Resample A Simplify A Simplify Topological fixup Topological fixup A Fill holes A Fill holes A Fix cracks A Fix cracks Vertex Clustering A Fix self-intersections A Fix self-intersections Boolean operations Boolean operations A Crop A Crop A Subtract A Subtract Garland Rossignac

Polygonal Mesh Processing Polygonal Mesh Processing Remeshing Remeshing A Subdivide A Subdivide A Resample A Resample A Simplify A Simplify Topological fixup Topological fixup A Fill holes A Fill holes A Fix cracks A Fix cracks A Fix self-intersections A Fix self-intersections Boolean operations Boolean operations A Crop A Crop A Subtract A Subtract Podolak Borodin

8 Polygonal Mesh Processing Polygonal Mesh Processing

Remeshing Remeshing P2 P1 A Subdivide A Subdivide Boundary A Resample A Resample Inside A Simplify A Simplify Outside P3 Topological fixup Topological fixup P P 5 A Fill holes A Fill holes 4 A Fix cracks A Fix cracks A Fix self-intersections A Fix self-intersections Boolean operations Boolean operations A Crop A Crop A Subtract A Subtract

Polygonal Mesh Processing Polygonal Mesh Processing

Remeshing P2 Remeshing P2 P1 P1 A Subdivide A Subdivide Boundary Boundary A Resample P’ P’’ Inside A Resample P’ P’’ Inside A Simplify Outside A Simplify Outside P3 Topological fixup P Topological fixup P 5 A Fill holes 4 A Fill holes A Fix cracks A Fix cracks A Fix self-intersections A Fix self-intersections Boolean operations Boolean operations A Crop A Crop A Subtract A Subtract

Polygonal Mesh Processing Polygonal Mesh Processing Remeshing Procedural generation A Subdivide A Surface of revolution A Resample A Sweep A Simplify A Fractalize Topological fixup A Fill holes A Fix cracks A Fix self-intersections Boolean operations A Crop A Subtract FvDFH Figure 12.27

9 Polygonal Mesh Processing Polygonal Mesh Processing Procedural generation Procedural generation A Surface of revolution A Surface of revolution A Sweep Sweep A Fractalize A Fractalize

Blinn Fowler

Polygonal Mesh Processing Polygonal Mesh Processing Procedural generation Most operations use a few low-level operations: A Surface of revolution A Subdivide face A Sweep A Subdivide edge Fractalize A Collapse edge A Merge vertices A Remove vertex

Dirk Balfanz, Igor Guskov, Sanjeev Kumar, & Rudro Samanta,

Polygonal Mesh Processing Polygonal Mesh Processing Most operations use a few low-level operations: Most operations use a few low-level operations: A Subdivide face A Subdivide face A Subdivide edge A Subdivide edge A Collapse edge A Collapse edge A Merge vertices A Merge vertices A Remove vertex A Remove vertex

Subdivide face Subdivide edge

10 Polygonal Mesh Processing Polygonal Mesh Processing Most operations use a few low-level operations: Most operations use a few low-level operations: A Subdivide face A Subdivide face A Subdivide edge A Subdivide edge A Collapse edge A Collapse edge A Merge vertices A Merge vertices A Remove vertex A Remove vertex

Collapse edge Merge Vertices

Polygonal Mesh Processing Outline Most operations use a few low-level operations: Acquisition Subdivide face A Processing A Subdivide edge A Collapse edge Representation A Merge vertices A Remove vertex

Remove Vertex

Polygon Mesh Representation Polygon Mesh Representation Data structures determine algorithms Important properties of mesh representation? A Data structure must support key operations of algorithm efficiently

Examples: A Drawing a mesh A Removing a vertex A Smoothing a region A Intersecting polyhedra

Different data structures for different algorithms

11 Polygon Mesh Representation Polygon Mesh Representation Important properties of mesh representation? Possible data structures A Efficient traversal of topology A List of independent faces A Efficient use of memory A Vertex and face tables A Efficient updates A Adjacency lists A Winged edge A Half edge A etc.

Large Geometric Model Repository Georgia Tech

Independent Faces Vertex and Face Tables Each face lists vertex coordinates Each face lists vertex references A Redundant vertices A Shared vertices A No adjacency information A Still no adjacency information

Adjacency Lists Partial Adjacency Lists Store all vertex, edge, and face adjacencies Can we store only some adjacency relationships A Efficient adjacency traversal and derive others? A Extra storage

12 Winged Edge Winged Edge Adjacency encoded in edges Example: A All adjacencies in O(1) time A Little extra storage (fixed records) A Arbitrary polygons

Half Edge Simple Mesh Adjacency encoded in edges Do not store edges at all A All adjacencies in O(1) time A All faces have 3 vertices and 3 neighbors Little extra storage (fixed records) A Store adjacency in vertices and faces A Arbitrary polygons A For each face: 3 vertices and 3 faces Similar to winged-edge, A For each vertex: N faces except adjacency NULL encoded in half-edges henext

e heinv

Fleft vbegin

Summary Polygonal meshes A Easy acquisition A Fast rendering Processing operations A Must consider irregular vertex sampling A Must handle/avoid topological degeneracies Representation A Which adjacency relationships to store depend on which operations must be efficient

13