Representation Issues in Data Exchange for RP-LM Sara McMains U.C. Berkeley
RP-LM Data Exchange Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
RP-LM Data Exchange Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
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 Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
Data Translation Easiest for the manufacturer: –Simplest possible format Lowest common denominator This is why STL is still being used!
RP-LM Data Exchange Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
RP-LM Data Exchange Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
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 Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
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 Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
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 Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
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 Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
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 Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
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 Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit
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
non-2-manifold Scope: Solids Optimize for 2-manifolds –2 directed “edge-uses” per undirected edge Should also support non-manifold solids 2-manifold
Pseudo-2-Manifolds Geometry not 2-manifold Represented topology is 2-manifold
RP-LM Data Exchange Designer Read Validate Scale Position/orient Slice Rasterize Manufacturer Network Translate Write Transmit