Representation Issues in Data Exchange for RP-LM Sara McMains U.C. Berkeley RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize Data Translation • Easiest for the designer: – Format that includes all design constructs • B-reps – Tesselated – Trimmed NURBS • • • • • CSG Sweeps Voxels Parametric Surface equations RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize Data Translation • Easiest for the manufacturer: – Simplest possible format • Lowest common denominator • This is why STL is still being used! RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize ASCII or Binary? • ASCII – Data exchange always imperfect • Humans will end up examining files • Binary – Compact – Computers store binary numbers • Simple fractional decimals cannot be exactly represented as floating point values RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize Sources of Cracks in STL • Round-off – Instancing with geometric transformations Require Shared Vertices • Specify vertex coordinates only once • All geometry that shares vertex references same vertex • Compact for transmission • Forces designer to think about connectivity RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize Sources of Cracks in STL – Boolean trim curves Boolean Trim Curves • Intersection curve higher order than input • Mapped back onto input patches – Approximated in parametric space – Won’t match exactly on two patches • Connectivity of trimmed patches should be specified explicitly File Repair Techniques: Local • Triangulate between unmatched facet edges – Bohn and Wozny ’92 – Barequet and Sharir ’95 • Merges edges for small cracks, • Triangulate remaining holes – Barequet and Kumar ’97 • Adding triangles may introduce intersections; • Best match problem NP complete File Repair Techniques: Global • Build a Binary Space Partitioning tree, identify solid regions, output boundary – Murali & Funkhouser ’97 • Scalability issues Better STL Generation • Curved patch to STL conversion without gaps: Match discretized trim curves, User-supplied tolerances – Dolenc ’93 – Sheng & Meier ’95 • Prevent intersections when triangulating RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize Nesting Information • Should nesting of shells be transmitted? – Designer intent – But how is nesting generated? • Computed from b-rep? – What if it disagrees with geometry? • Who do you believe - geometry or topology? RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize Units • Require units! • Lack of units invites educated guesses • Default unit not good enough – Assumptions may differ – Require explicit specification • Force assumptions to be visible RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize Input Captured in Layers • E.g. – CT scans – Digitized input • Can we manufacture these layers directly? • Do we want to? Matched Layer Thicknesses Unmatched Layer Thicknesses Surface Reconstruction • Interpolate between input slices – Interpolation smooths boundary – Additional processing can further smooth coarse input – Complete freedom to re-orient surface • Faster build times RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize Implicit Booleans • Implicit unions Implicit Booleans • Implicit unions Implicit Booleans • Implicit differences (2D example) Implicit Booleans • Implicit differences (2D example) Implicit Booleans • Implicit differences (2D example) Implicit Booleans • Implicit differences (2D example) Implicit Booleans • Implicit differences (2D example) Implicit Booleans • Implicit differences (2D example) Implicit Booleans • Implicit differences (2D example) Implicit Booleans • Self-intersections (2D example) Implicit Booleans • Self-intersections (2D example) Implicit Booleans • Self-intersections (2D example) Implicit Booleans • Even if exchange format doesn’t include explicit Booleans, implicit Booleans will arise • Manufacturers won’t categorically reject • Need semantics for implicit Booleans Scope: Solids • Optimize for 2-manifolds – 2 directed “edge-uses” per undirected edge 2-manifold non-2-manifold • Should also support non-manifold solids Pseudo-2-Manifolds • Geometry not 2-manifold • Represented topology is 2-manifold RP-LM Data Exchange Network Designer • Translate • Write • Transmit Manufacturer • • • • • • Read Validate Scale Position/orient Slice Rasterize