3D Object Representations Points Solids A Range image A Voxels 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 polygons 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 Polygon
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 “normal” » 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 Triangle 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