implicit kernels for solid modeling - matt keeter · 2018. 4. 30. · implicit kernels for solid...
TRANSCRIPT
![Page 2: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/2.jpg)
A Brief* History of CAD*and probably inaccurate
![Page 3: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/3.jpg)
Drafting tables
![Page 4: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/4.jpg)
Computer-aided drafting
AutoCAD 2.18 (1985)
AutoCAD 2.18 (1985)
![Page 5: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/5.jpg)
Into the 3rd Dimension
“While all drafting is 2D, and almost all
users will spend all their time with AutoCAD working in 2D mode, 3D is important more from a marketing perception standpoint than a technical one.”
John Walker, 1983
![Page 6: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/6.jpg)
The path of least resistance
Boundary representationsNatural extension from 2DEasy to renderFragile representationGeometric operations are hard!
![Page 7: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/7.jpg)
Solid Modeling
“I have seen solids modeling, and it is the
future. For years the skeptics have
criticized solids as impractical, compute
intensive, and inflexible. ‘You can't cut
chips with solids,’ they'd say, or ‘sure
they're fun, but what can you do with
the model when you're done’?”
Eric Lyons, 1986
![Page 8: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/8.jpg)
How would you make...
![Page 9: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/9.jpg)
Menger Sponges
![Page 10: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/10.jpg)
Family of gear pairs
![Page 11: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/11.jpg)
Möbius strip
![Page 12: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/12.jpg)
Mandelbrot Vase
![Page 13: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/13.jpg)
Fundamentals offunctional representations
![Page 14: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/14.jpg)
Functional representations
f : R3 → R
f(x, y, z) → Distance
Distance < 0: inside
Distance = 0: boundary
Distance > 0: outside
f(x, y, z) = x2 + y2 + z2 - r2
f(x, y, z) = x2 + y2 + z2 - r2
![Page 15: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/15.jpg)
Upsides & downsides
➕ CSG (union / intersection / difference) becomes trivial
➕ Unusual transforms become possible➖ Rendering is harder
(but computers are fast, and it parallelizes well)
➖ Features are implicit➖ Hard to interface with existing b-rep
ecosystem (meshes, NURBS, etc.)
![Page 16: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/16.jpg)
Previous work
![Page 17: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/17.jpg)
Hyperfun (SIGGRAPH 1999)
hyperfun.org
![Page 18: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/18.jpg)
Kokopelli (2012)
github.com/mkeeter/kokopelli
![Page 19: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/19.jpg)
“ImplicitCAD is a project dedicated to using the power of math and computer science to get stupid design problems out of the way of the 3D printing revolution.”
ImplicitCad (2012)
implicitcad.org
![Page 20: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/20.jpg)
Symvol (2012)
uformia.com
![Page 21: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/21.jpg)
Antimony (2013)
github.com/mkeeter/antimony
![Page 22: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/22.jpg)
Ao(2016)
github.com/mkeeter/ao-guile-repl
![Page 23: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/23.jpg)
libfive + Studio (2018)
libfive.com
![Page 24: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/24.jpg)
Implicit kernel design
![Page 25: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/25.jpg)
Representation vs. Evaluation
![Page 26: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/26.jpg)
Shape representation
● Lightweight manipulation of math trees● De-duplication of clauses● Arithmetic identities + constant folding● Balancing of commutative operations
![Page 27: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/27.jpg)
Deduplication
![Page 28: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/28.jpg)
Arithmetic identities
square square
![Page 29: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/29.jpg)
Tree balancing
max
max
max
a
b
c d
max
max max
a b c d
![Page 30: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/30.jpg)
Representing a clause /* This is where tree data is actually stored */ struct Tree_ { /* * Destructor erases this Tree * from the global Cache */ ~Tree_();
const Opcode::Opcode op; const uint8_t flags; const unsigned rank;
/* Only populated for constants */ const float value;
/* Only populated for operations */ const std::shared_ptr<Tree_> lhs; const std::shared_ptr<Tree_> rhs; };
![Page 31: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/31.jpg)
Representing a clause/* Lightweight, passable-by-value handle */class Tree { /* Overload arithmetic here! */
/* Here's the actual Tree data */ std::shared_ptr<Tree_> ptr;};
/* This is where tree data is actually stored */ struct Tree_ { /* * Destructor erases this Tree * from the global Cache */ ~Tree_();
const Opcode::Opcode op; const uint8_t flags; const unsigned rank;
/* Only populated for constants */ const float value;
/* Only populated for operations */ const std::shared_ptr<Tree_> lhs; const std::shared_ptr<Tree_> rhs; };
![Page 32: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/32.jpg)
Representing a clause/* Lightweight, passable-by-value handle */class Tree { /* Overload arithmetic here! */
/* Here's the actual Tree data */ std::shared_ptr<Tree_> ptr;};
class Cache { /* Functions to handle identities here! */
typedef std::tuple<Opcode::Opcode, const Tree_*, /* lhs */ const Tree_* /* rhs */ > Key; std::map<Key, std::weak_ptr<Tree::Tree_>> ops; std::map<float, std::weak_ptr<Tree::Tree_>> constants;};
/* This is where tree data is actually stored */ struct Tree_ { /* * Destructor erases this Tree * from the global Cache */ ~Tree_();
const Opcode::Opcode op; const uint8_t flags; const unsigned rank;
/* Only populated for constants */ const float value;
/* Only populated for operations */ const std::shared_ptr<Tree_> lhs; const std::shared_ptr<Tree_> rhs; };
![Page 33: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/33.jpg)
Representation vs. Evaluation
![Page 34: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/34.jpg)
General form of algorithms
● If at minimum size, perform operations on voxel● Otherwise, evaluate interval
○ If filled or empty, return early
● Subdivide and recurse● After recursion is done, collapse branches if possible
![Page 35: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/35.jpg)
![Page 36: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/36.jpg)
![Page 37: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/37.jpg)
![Page 38: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/38.jpg)
Flat tapes are faster than chasing pointers!
square square
square square + – – – maxopcode
0 1 4 6 6 8 7lhs
5 2 3 9 rhs
4 5 6 7 8 9 10 out
Tape
Memory
0 1 2 3 4 5 6 7 8 9 10index
X Y 1 0.5 outvalue
![Page 39: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/39.jpg)
Flat tapes are faster than chasing pointers!
square square
square square + – – – maxopcode
0 1 4 6 6 8 7lhs
5 2 3 9 rhs
4 5 6 7 8 9 10 out
Tape
Memory
0 1 2 3 4 5 6 7 8 9 10index
X Y 1 0.5 outvalue
![Page 40: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/40.jpg)
Flat tapes are faster than chasing pointers!
square square
square square + – – – maxopcode
0 1 4 6 6 8 7lhs
5 2 3 9 rhs
4 5 6 7 8 9 10 out
Tape
Memory
0 1 2 3 4 5 6 7 8 9 10index
X Y 1 0.5 X2 outvalue
![Page 41: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/41.jpg)
Flat tapes are faster than chasing pointers!
square square
square square + – – – maxopcode
0 1 4 6 6 8 7lhs
5 2 3 9 rhs
4 5 6 7 8 9 10 out
Tape
Memory
0 1 2 3 4 5 6 7 8 9 10index
X Y 1 0.5 X2 outvalue
![Page 42: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/42.jpg)
Flat tapes are faster than chasing pointers!
square square
square square + – – – maxopcode
0 1 4 6 6 8 7lhs
5 2 3 9 rhs
4 5 6 7 8 9 10 out
Tape
Memory
0 1 2 3 4 5 6 7 8 9 10index
X Y 1 0.5 X2 Y2 outvalue
![Page 43: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/43.jpg)
Floating-point values
Value types
f(1, 0, 0) = 0
![Page 44: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/44.jpg)
f(1, 0, 0) = 0
f({...}, {...}, {...}) = {...}
Floating-point values
Arrays of floats
(optimization for speed)
Value types
![Page 45: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/45.jpg)
Value types
Floating-point values
Arrays of floats
(optimization for speed)
Interval ranges
f(1, 0, 0) = 0
f({...}, {...}, {...}) = {...}
f([0, 1], [1, 2], [0, 0]) = [0, 4]
![Page 46: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/46.jpg)
Value types
Floating-point values
Arrays of floats
(optimization for speed)
Interval ranges
Derivatives
(automatic differentiation)
f(1, 0, 0) = 0
f({...}, {...}, {...}) = {...}
f([0, 1], [1, 2], [0, 0]) = [0, 4]
(df/dx)(1, 0, 0) = 2(df/dy)(1, 0, 0) = 0(df/dz)(1, 0, 0) = 0
![Page 47: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/47.jpg)
Tree pruning with intervals
square square
![Page 48: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/48.jpg)
Tree pruning with intervals
square square
[1,2] [-1,0]
![Page 49: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/49.jpg)
Tree pruning with intervals
square square square square
[1,2] [-1,0]
![Page 50: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/50.jpg)
square square
square square + – – – maxopcode
0 1 4 6 6 8 7lhs
5 2 3 9 rhs
4 5 6 7 8 9 10 out
Tree pruning with intervals
![Page 51: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/51.jpg)
Outputs
![Page 52: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/52.jpg)
Voxel output: heightmaps
Brightness = z-heightUseful for 2.5D machining
![Page 53: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/53.jpg)
Voxel output: shaded
Normals are based on derivatives(df/dx, df/dy, df/dz)
![Page 54: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/54.jpg)
Normals are used to position vertices on sharp edges and corners.
B-rep output: meshes
![Page 55: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/55.jpg)
Curtain rail bracketsPaul Meyer
Real things!
Creepy Crawly CutterSam Calisch
Rotary encoderMatt Keeter
![Page 56: Implicit kernels for solid modeling - Matt Keeter · 2018. 4. 30. · Implicit kernels for solid modeling Matt Keeter matt.j.keeter@gmail.com 2018–01–19 mattkeeter.com](https://reader036.vdocuments.us/reader036/viewer/2022081620/6117b0f221248f5b08179a4c/html5/thumbnails/56.jpg)
Unsolved problems
● GPU acceleration● Feature-based design● Interacting with meshes● Constraint systems