three-slicer 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/README.md +9 -4
  3. package/THIRD-PARTY-NOTICES.md +7 -2
  4. package/components/dist/SettingsPanel.js +12 -176
  5. package/data/config-schema-lean.json +1 -0
  6. package/data/ui-tree-keys.json +1 -0
  7. package/engine/src/client.js +12 -2
  8. package/engine/src/data.js +6 -0
  9. package/engine/src/settings.js +12 -627
  10. package/engine/src/slicer.worker.js +6 -1
  11. package/engine/src/slicer_core.js +0 -0
  12. package/engine/src/slicer_core.mt.js +0 -0
  13. package/engine/src/toggle_eval.js +9 -77
  14. package/package.json +20 -10
  15. package/types/client.d.ts +5 -2
  16. package/types/components.d.ts +3 -29
  17. package/types/settings.d.ts +3 -0
  18. package/types/toggle.d.ts +2 -22
  19. package/types/viewer-gcode.d.ts +2 -29
  20. package/types/viewer-loaders.d.ts +1 -33
  21. package/types/viewer-toolpath.d.ts +3 -113
  22. package/types/viewer.d.ts +6 -174
  23. package/types/worker.d.ts +2 -1
  24. package/viewer/dist/Viewport.js +9 -5489
  25. package/viewer/dist/gcode_reexport.js +1 -0
  26. package/viewer/dist/loaders_reexport.js +1 -0
  27. package/viewer/dist/toolpath_reexport.js +1 -0
  28. package/components/README.md +0 -44
  29. package/components/styles.css +0 -84
  30. package/engine/src/kernel_setting_keys.js +0 -132
  31. package/engine/src/preset_file.js +0 -99
  32. package/viewer/README.md +0 -375
  33. package/viewer/dist/gcode_parse.js +0 -190
  34. package/viewer/dist/make_worker.js +0 -31
  35. package/viewer/dist/model_loaders.js +0 -184
  36. package/viewer/dist/parse_3mf-C2X_W442.js +0 -300
  37. package/viewer/dist/parse_3mf.worker.js +0 -10
  38. package/viewer/dist/sl1_encode.worker.js +0 -10
  39. package/viewer/dist/sl1_write-UHmQ_itC.js +0 -170
  40. package/viewer/dist/sla_reconstruct-CXkYhux2.js +0 -176
  41. package/viewer/dist/sla_reconstruct.worker.js +0 -24
  42. package/viewer/dist/sla_slice.worker.js +0 -74
  43. package/viewer/dist/toolpath_gpu-4foc4FaU.js +0 -482
  44. package/viewer/dist/toolpath_gpu.js +0 -13
  45. package/viewer/styles.css +0 -353
@@ -1,176 +0,0 @@
1
- const U = new Int8Array(8), W = new Int8Array(8), G = new Int8Array(8);
2
- for (let t = 0; t < 8; t++)
3
- U[t] = t & 1, W[t] = t >> 1 & 1, G[t] = t >> 2 & 1;
4
- const T = [], rt = [];
5
- for (let t = 0; t < 8; t++) for (let l = t + 1; l < 8; l++)
6
- Math.abs(U[t] - U[l]) + Math.abs(W[t] - W[l]) + Math.abs(G[t] - G[l]) === 1 && (T.push(t), rt.push(l));
7
- const ot = 127.5, q = (t) => t > ot, x = (t) => {
8
- const l = [];
9
- let A = new t(1048576), r = 0, m = 0;
10
- return {
11
- push3(u, C, h) {
12
- r + 3 > A.length && (l.push(A.subarray(0, r)), m += r, A = new t(1 << 20), r = 0), A[r++] = u, A[r++] = C, A[r++] = h;
13
- },
14
- concat() {
15
- l.push(A.subarray(0, r)), m += r;
16
- const u = new t(m);
17
- let C = 0;
18
- for (const h of l)
19
- u.set(h, C), C += h.length;
20
- return u;
21
- }
22
- };
23
- }, ct = { 0: [0.68, 0.238, 0.023], 5: [0.328, 0.188, 0.687], 6: [0.434, 0.352, 0.144] };
24
- function ht(t, l, A, r, m, u, C, h) {
25
- const b = t + 1, a = l + 1;
26
- let o = new Int32Array(b * a).fill(-1), i = new Int32Array(b * a).fill(-1);
27
- const N = null;
28
- let F = N, w = N, H = null, P = null, J = null, d = null, at = 0;
29
- const tt = x(Float32Array), Y = x(Uint32Array), et = x(Float32Array);
30
- let nt = 0, Q = !1;
31
- const S = (g, c, n) => !g || c < 0 || n < 0 || c >= t || n >= l ? 0 : g[c + t * n], O = new Float64Array(8);
32
- function lt(g, c, n, R, s, k, y, p) {
33
- const e = c + 1 + b * (n + 1), M = g[e];
34
- if (M >= 0) return M;
35
- O[0] = S(s, c, n), O[1] = S(s, c + 1, n), O[2] = S(s, c, n + 1), O[3] = S(s, c + 1, n + 1), O[4] = S(k, c, n), O[5] = S(k, c + 1, n), O[6] = S(k, c, n + 1), O[7] = S(k, c + 1, n + 1);
36
- let z = 0, f = 0, I = 0, v = 0;
37
- for (let E = 0; E < T.length; E++) {
38
- const B = T[E], L = rt[E];
39
- if (q(O[B]) === q(O[L])) continue;
40
- const X = Math.min(1, Math.max(0, (ot - O[B]) / (O[L] - O[B])));
41
- z += U[B] + X * (U[L] - U[B]), f += W[B] + X * (W[L] - W[B]), I += G[B] + X * (G[L] - G[B]), v++;
42
- }
43
- const K = v ? z / v : 0.5, j = v ? f / v : 0.5, D = v ? I / v : 0.5;
44
- if (tt.push3(u + (c + K + 0.5) * A, C + (n + j + 0.5) * r, h + (R + D + 0.5) * m), Q) {
45
- let E = 0;
46
- for (let L = 0; L < 8; L++) {
47
- if (!q(O[L])) continue;
48
- const X = S(G[L] ? p : y, c + U[L], n + W[L]);
49
- if (X === 5) {
50
- E = 5;
51
- break;
52
- }
53
- X === 6 && (E = 6);
54
- }
55
- const B = ct[E];
56
- et.push3(B[0], B[1], B[2]);
57
- }
58
- return g[e] = nt, nt++;
59
- }
60
- const Z = (g, c, n) => c === N || n < 0 || n >= l ? t : g ? g[n * 2] : 0, _ = (g, c, n) => c === N || n < 0 || n >= l ? -1 : g ? g[n * 2 + 1] : t - 1;
61
- function V(g, c, n) {
62
- const R = at++, s = (e, M) => lt(o, e, M, R - 1, F, w, H, P), k = (e, M) => lt(i, e, M, R, w, g, P, c), y = (e, M, z, f, I) => {
63
- I ? (Y.push3(f, z, M), Y.push3(f, M, e)) : (Y.push3(e, M, z), Y.push3(e, z, f));
64
- };
65
- for (let e = 0; e < l; e++) {
66
- const M = Math.min(Z(J, F, e), Z(d, w, e)), z = Math.max(_(J, F, e), _(d, w, e));
67
- for (let f = M; f <= z; f++) {
68
- const I = q(S(F, f, e)), v = q(S(w, f, e));
69
- I !== v && y(s(f - 1, e - 1), s(f, e - 1), s(f, e), s(f - 1, e), !I);
70
- }
71
- }
72
- for (let e = 0; e < l; e++) {
73
- const M = Z(d, w, e), z = _(d, w, e);
74
- for (let f = M - 1; f <= z; f++) {
75
- const I = q(S(w, f, e)), v = q(S(w, f + 1, e));
76
- I !== v && y(s(f, e - 1), s(f, e), k(f, e), k(f, e - 1), !I);
77
- }
78
- }
79
- for (let e = -1; e < l; e++) {
80
- const M = Math.min(Z(d, w, e), Z(d, w, e + 1)), z = Math.max(_(d, w, e), _(d, w, e + 1));
81
- for (let f = M; f <= z; f++) {
82
- const I = q(S(w, f, e)), v = q(S(w, f, e + 1));
83
- I !== v && y(s(f - 1, e), k(f - 1, e), k(f, e), s(f, e), !I);
84
- }
85
- }
86
- const p = o;
87
- o = i, i = p.fill(-1);
88
- }
89
- let $ = !1;
90
- return {
91
- // Slices arrive bottom-up. Layer s can only be processed once s+1 is known (its cells' upper corners live
92
- // there), so the first slice just primes the window and every later push runs the step one layer behind.
93
- // `roles` is an optional parallel Uint8Array (0=model, 5=support, 6=pad) that turns on vertex colours;
94
- // `ranges` the per-row occupancy spans fillSliceFromRGBA returns, which confine the sweep to the model.
95
- pushSlice(g, c = null, n = null) {
96
- if (c && (Q = !0), !$) {
97
- $ = !0, w = g, P = c, d = n;
98
- return;
99
- }
100
- V(g, c), F = w, w = g, H = P, P = c, J = d, d = n;
101
- },
102
- finish({ smoothRounds: g = 0, normalRounds: c = 0 } = {}) {
103
- $ && (V(N, null), F = w, w = N, H = P, P = null, J = d, d = null), V(N, null);
104
- const n = tt.concat(), R = Y.concat();
105
- g > 0 && st(n, R, g);
106
- const s = new Float32Array(n.length);
107
- for (let k = 0; k < R.length; k += 3) {
108
- const y = R[k] * 3, p = R[k + 1] * 3, e = R[k + 2] * 3, M = n[p] - n[y], z = n[p + 1] - n[y + 1], f = n[p + 2] - n[y + 2], I = n[e] - n[y], v = n[e + 1] - n[y + 1], K = n[e + 2] - n[y + 2], j = z * K - f * v, D = f * I - M * K, E = M * v - z * I;
109
- s[y] += j, s[y + 1] += D, s[y + 2] += E, s[p] += j, s[p + 1] += D, s[p + 2] += E, s[e] += j, s[e + 1] += D, s[e + 2] += E;
110
- }
111
- return ft(s), c > 0 && ut(s, R, c), { positions: n, indices: R, normals: s, colors: Q ? et.concat() : null };
112
- }
113
- };
114
- }
115
- function ft(t) {
116
- for (let l = 0; l < t.length; l += 3) {
117
- const A = Math.hypot(t[l], t[l + 1], t[l + 2]) || 1;
118
- t[l] /= A, t[l + 1] /= A, t[l + 2] /= A;
119
- }
120
- }
121
- function ut(t, l, A = 2) {
122
- const r = new Float32Array(t.length);
123
- for (let m = 0; m < A; m++) {
124
- r.fill(0);
125
- for (let u = 0; u < l.length; u += 3) {
126
- const C = l[u] * 3, h = l[u + 1] * 3, b = l[u + 2] * 3;
127
- for (const [a, o] of [[C, h], [h, b], [b, C]])
128
- r[a] += t[o], r[a + 1] += t[o + 1], r[a + 2] += t[o + 2], r[o] += t[a], r[o + 1] += t[a + 1], r[o + 2] += t[a + 2];
129
- }
130
- for (let u = 0; u < t.length; u += 3)
131
- t[u] += 0.5 * r[u], t[u + 1] += 0.5 * r[u + 1], t[u + 2] += 0.5 * r[u + 2];
132
- ft(t);
133
- }
134
- }
135
- function st(t, l, A = 4) {
136
- const r = new Float32Array(t.length), m = new Float32Array(t.length / 3), u = (h, b) => {
137
- const a = h * 3, o = b * 3, i = Math.abs(t[o + 2] - t[a + 2]) + 0.05 * (Math.abs(t[o] - t[a]) + Math.abs(t[o + 1] - t[a + 1])) + 1e-6;
138
- r[a] += i * t[o], r[a + 1] += i * t[o + 1], r[a + 2] += i * t[o + 2], r[o] += i * t[a], r[o + 1] += i * t[a + 1], r[o + 2] += i * t[a + 2], m[h] += i, m[b] += i;
139
- }, C = (h) => {
140
- r.fill(0), m.fill(0);
141
- for (let b = 0; b < l.length; b += 3) {
142
- const a = l[b], o = l[b + 1], i = l[b + 2];
143
- u(a, o), u(o, i), u(i, a);
144
- }
145
- for (let b = 0; b < m.length; b++) {
146
- const a = m[b];
147
- if (!a) continue;
148
- const o = b * 3;
149
- t[o] += h * (r[o] / a - t[o]), t[o + 1] += h * (r[o + 1] / a - t[o + 1]), t[o + 2] += h * (r[o + 2] / a - t[o + 2]);
150
- }
151
- };
152
- for (let h = 0; h < A; h++)
153
- C(0.5), C(-0.53);
154
- }
155
- function bt(t, l, A, r, m) {
156
- const u = new Uint32Array(l.buffer, l.byteOffset, l.byteLength >> 2), C = new Int32Array(r * 2);
157
- for (let h = 0; h < r; h++) {
158
- const b = r - 1 - h, a = h * A * 4 >> 2, o = A * (b + r * m);
159
- let i = A, N = -1;
160
- for (let F = 0; F < A; F++) {
161
- const w = u[a + F];
162
- if (w === 0) {
163
- t[o + F] = 0;
164
- continue;
165
- }
166
- const H = w >> 8 & 255;
167
- t[o + F] = H, H && (F < i && (i = F), F > N && (N = F));
168
- }
169
- C[b * 2] = i, C[b * 2 + 1] = N;
170
- }
171
- return C;
172
- }
173
- export {
174
- bt as f,
175
- ht as m
176
- };
@@ -1,24 +0,0 @@
1
- import { m as c } from "./sla_reconstruct-CXkYhux2.js";
2
- let e = null, o = { nets: 0, finish: 0 };
3
- self.onmessage = (m) => {
4
- const s = m.data;
5
- try {
6
- if (s.init) {
7
- e = c(s.nx, s.ny, s.sx, s.sy, s.sz, s.ox, s.oy, s.oz), o = { nets: 0, finish: 0 };
8
- return;
9
- }
10
- if (s.slice) {
11
- const n = performance.now();
12
- e.pushSlice(s.slice, s.roles, s.ranges), o.nets += performance.now() - n;
13
- return;
14
- }
15
- if (s.finish) {
16
- const n = performance.now(), { positions: i, indices: t, normals: f, colors: r } = e.finish({ smoothRounds: s.smoothRounds ?? 2, normalRounds: s.normalRounds ?? 0 });
17
- o.finish = performance.now() - n, e = null;
18
- const a = [i.buffer, t.buffer, f.buffer];
19
- r && a.push(r.buffer), self.postMessage({ positions: i, indices: t, normals: f, colors: r, timings: o, producerTimings: s.producerTimings, spin: s.spin }, a);
20
- }
21
- } catch (n) {
22
- self.postMessage({ error: String((n == null ? void 0 : n.message) || n) });
23
- }
24
- };
@@ -1,74 +0,0 @@
1
- import { f as U } from "./sla_reconstruct-CXkYhux2.js";
2
- import { d as q } from "./sl1_write-UHmQ_itC.js";
3
- let i = 6;
4
- const D = (u, B) => {
5
- const m = [];
6
- for (let l = 0; l + 7 < u.length; l += 8) if ((u[l + 3] & 15) === B) for (let e = 0; e < 8; e++) m.push(u[l + e]);
7
- return m;
8
- };
9
- self.onmessage = async (u) => {
10
- var S, T;
11
- const { indices: B, pngs: m, rolePaths: l, nx: e, ny: r, matrix: w, scale: d, width: C, height: F, batch: I } = u.data;
12
- I > 0 && (i = I);
13
- try {
14
- const n = { decode: 0, draw: 0, read: 0, roles: 0, fill: 0 };
15
- let o = 0;
16
- const y = new OffscreenCanvas(e, r * i).getContext("2d", { willReadFrequently: !0 }), O = l ? new OffscreenCanvas(e, r * i) : null, f = O == null ? void 0 : O.getContext("2d", { willReadFrequently: !0 }), v = (s) => {
17
- const a = [];
18
- for (let p = 0; p < i && s + p < m.length; p++) {
19
- const g = s + p;
20
- a.push(createImageBitmap(new Blob([m[g]], { type: "image/png" })).then((M) => (m[g] = null, M)));
21
- }
22
- return a;
23
- };
24
- let H = v(0);
25
- for (let s = 0; s < m.length; s += i) {
26
- o = performance.now();
27
- const a = await Promise.all(H);
28
- n.decode += performance.now() - o, H = v(s + i), o = performance.now(), y.setTransform(1, 0, 0, 1, 0, 0), y.clearRect(0, 0, e, r * i);
29
- for (let t = 0; t < a.length; t++)
30
- y.setTransform(
31
- w[0] * d,
32
- w[1] * d,
33
- w[2] * d,
34
- w[3] * d,
35
- w[4] * d,
36
- w[5] * d + t * r
37
- ), y.drawImage(a[t], 0, 0), (T = (S = a[t]).close) == null || T.call(S);
38
- n.draw += performance.now() - o, o = performance.now();
39
- const p = y.getImageData(0, 0, e, r * a.length).data;
40
- n.read += performance.now() - o, o = performance.now();
41
- let g = null;
42
- if (f && l.slice(s, s + a.length).some((t) => t && t.length)) {
43
- f.setTransform(1, 0, 0, 1, 0, 0), f.clearRect(0, 0, e, r * i);
44
- for (let t = 0; t < a.length; t++) {
45
- const h = l[s + t] ?? new Float32Array(0), b = t * r, c = { map: (R, A) => [(R + C / 2) / C * e, (F / 2 - A) / F * r + b] };
46
- f.fillStyle = "#00f", q(f, D(h, 6), c), f.fillStyle = "#f00", q(f, D(h, 5), c);
47
- }
48
- g = f.getImageData(0, 0, e, r * a.length).data, n.roles += performance.now() - o, o = performance.now();
49
- }
50
- o = performance.now();
51
- for (let t = 0; t < a.length; t++) {
52
- const h = new Uint8Array(e * r), b = U(h, p.subarray(t * e * r * 4, (t + 1) * e * r * 4), e, r, 0);
53
- let c = null;
54
- if (g) {
55
- c = new Uint8Array(e * r);
56
- const A = t * e * r * 4;
57
- for (let x = 0; x < r; x++) {
58
- const G = A + x * e * 4, P = e * (r - 1 - x);
59
- for (let k = 0; k < e; k++) {
60
- const j = G + k * 4;
61
- c[P + k] = g[j] > 127 ? 5 : g[j + 2] > 127 ? 6 : 0;
62
- }
63
- }
64
- }
65
- const R = [h.buffer, b.buffer];
66
- c && R.push(c.buffer), self.postMessage({ index: B[s + t], slice: h, ranges: b, roles: c }, R);
67
- }
68
- n.fill += performance.now() - o;
69
- }
70
- self.postMessage({ done: !0, timings: n });
71
- } catch (n) {
72
- self.postMessage({ error: String((n == null ? void 0 : n.message) || n) });
73
- }
74
- };