computer graphics 3D solid modeling
kinds of objects in graphics scenes trees, flowers, clouds, rocks, water, bricks, wood paneling, rubber, paper, marble, steel, glass, plastic, cloth, etc. as simple as a cube
How to descirbe objects? wireframes boundary representations polygonal modeling sweep representations constructive solid geometry spatial representations
wireframes
methods to represent a wireframe model explicit edge listing vertex table edge table
wireframe pros and cons easy to construct, modify, clip and transform processes faster ambiguous
boundary representations avoid the source of ambiguity arising in wireframe models adding surface information describe a three-dimensional object as a set of surfaces that separate the object interior from the environment
boundary representations geometry polygon facets spline patches topology orientation of edges and faces boundary decomposition: vertices, edges and faces
Mobius band: one-sided and non-orientable
Manifolds A surface is a 2-manifold if and only if for each point x on the surface there exists an open ball with center x and sufficiently small radius so that the intersection of this ball and the surface can be continuously deformed to an open disk.
manifold non-manifold
Baumgart’s winged-edge data structure
What If Faces Have Holes?
The Euler-Poincaré Formula V - E + F - (L - F) - 2(S - G) = 0 V: the number of vertices E: the number of edges F: the number of faces G: the number of holes that penetrate the solid, usually referred to as genus in topology S: the number of shells. A shell is an internal void of a solid. A shell is bounded by a 2-manifold surface, which can have its own genus value. Note that the solid itself is counted as a shell. Therefore, the value for S is at least 1. L: the number of loops, all outer and inner loops of faces are counted.
V-E+F-(L-F)-2(S-G) = 16-24+11-(12-11)-2(1-0)=0
V-E+F-(L-F)-2(S-G) = 16-24+10-(12-10)-2(1-1)=0
V-E+F-(L-F)-2(S-G) = 10-15+7-(7-7)-2(1-0)=0
what's the genus?
Euler operators adding or deleting vertices, edges and faces to create a new polyhedron
Polygonal Modeling all surfaces are described with linear equations simple, fast for rendering standard graphics objects tesselation
representations Independent faces
representations Vertex and face tables
representations Adjacency lists Triangle meshes efficient way for traversal more storage space Triangle meshes
Sweep Representations Translational Sweeps
Rotational Sweeps
Constructive Solid Geometry solid primitives combine two or more solid primitives through Boolean operations to create complex objects
boolean operations similar to set theory solid union solid intersection solid subtraction similar to set theory order-independent order-dependent
CSG expressions and trees translate ( scale ( Block , < 1 , 1 . 5 , 1 . 5 >), < 1 , 2 , 3 >).
Suppose that you have three primitives as shown in the figure below; a sphere, A, a cylinder B and a torus C. It is required to have the result shown in (d). Determine the steps to follow and derive the CSG expression.
every CSG expression is associated with a CSG tree
Create the CSG expression required to represent solid (c) from solids (a) and (b), and build the CSG tree
Boolean operations applied to solids not always result in solids
Regularized Boolean Operations using interior, closure and exterior of solids
1. The Boolean operation is performed as usual. 2. The interior of the result is computed, which may result in an empty set. 3. The closure of the last step is computed. This adds the boundaries back.
A CSG Design Example
Spatial Representations a collection of adjacent non-overlapping primitive solids
cell decomposition parameterized primitive
spatial enumeration equal-sized small volume elements or voxels
partially occupied voxels must be approximated useful in medical imaging
quadtrees divide-and-conquer
octrees extension of quadtrees in 3D space
bintrees
Binary Space-Partitioning Trees planes used for partitioning may be of any orientation and location
STL (file format) STereoLithography
ASCII STL solid name facet normal ni nj nk outer loop vertex v1x v1y v1z vertex v2x v2y v2z vertex v3x v3y v3z endloop endfacet endsolid name
facet normal -4.470293E-02 7.003503E-01 -7.123981E-01 outer loop vertex -2.812284E+00 2.298693E+01 0.000000E+00 vertex -2.812284E+00 2.296699E+01 -1.960784E-02 vertex -3.124760E+00 2.296699E+01 0.000000E+00 endloop endfacet
Binary STL UINT8[80] – Header UINT32 – Number of triangles foreach triangle REAL32[3] – Normal vector REAL32[3] – Vertex 1 REAL32[3] – Vertex 2 REAL32[3] – Vertex 3 UINT16 – Attribute byte count end
Geometric modeling kernel A geometric modeling kernel is a 3D solid modeling software component used in computer-aided design packages
Available modelling kernels include Convergence Geometric Modeler by Dassault Systemes Romulus was released in 1982 and licensed by Siemens and HP Parasolid by ShapeData, now owned by Siemens ACIS by Spatial Corporation, part of Dassault Systemes, is used in many CAD applications. ShapeManager is a fork of ACIS developed by Autodesk since 2001. Granite by Parametric Technology Corporation Open CASCADE is a freely available modelling kernel C3D kernel by C3D Labs, part of the ASCON Group
homework problem 4.2 problem 4.5 problem 4.8 ISO 10303(STEP) IGES