diff --git a/src/kiri/core/widget.js b/src/kiri/core/widget.js index 7cba6cb5..c7385295 100644 --- a/src/kiri/core/widget.js +++ b/src/kiri/core/widget.js @@ -913,6 +913,8 @@ class Widget { if (a.z < z && b.z < z && c.z < z) { // skip faces under threshold continue; + } else if (a.z === z && a.z === b.z && a.z === c.z) { + // skip faces coplanar with z (shadow looks up) } else if (a.z >= z && b.z >= z && c.z >= z) { found.push([a, b, c]); } else { diff --git a/src/kiri/mode/cam/op-area.js b/src/kiri/mode/cam/op-area.js index e078b5be..5820cdef 100644 --- a/src/kiri/mode/cam/op-area.js +++ b/src/kiri/mode/cam/op-area.js @@ -17,7 +17,7 @@ const clib = self.ClipperLib; const ctyp = clib.ClipType; const ptyp = clib.PolyType; const cfil = clib.PolyFillType; -const ts_off = 0.1; +const ts_off = 0.01; class OpArea extends CamOp { constructor(state, op) {