@ifc-lite/renderer 1.47.0 → 1.48.1
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.
- package/dist/clash-solid-pipeline.d.ts +34 -0
- package/dist/clash-solid-pipeline.d.ts.map +1 -0
- package/dist/clash-solid-pipeline.js +193 -0
- package/dist/clash-solid-pipeline.js.map +1 -0
- package/dist/deviation/deviation-computer.d.ts +87 -0
- package/dist/deviation/deviation-computer.d.ts.map +1 -0
- package/dist/deviation/deviation-computer.js +201 -0
- package/dist/deviation/deviation-computer.js.map +1 -0
- package/dist/index.d.ts +22 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -141
- package/dist/index.js.map +1 -1
- package/dist/renderer-overlays.d.ts +4 -0
- package/dist/renderer-overlays.d.ts.map +1 -1
- package/dist/renderer-overlays.js +19 -0
- package/dist/renderer-overlays.js.map +1 -1
- package/dist/shaders/sky.wgsl.d.ts +1 -1
- package/dist/shaders/sky.wgsl.d.ts.map +1 -1
- package/dist/shaders/sky.wgsl.js +7 -1
- package/dist/shaders/sky.wgsl.js.map +1 -1
- package/dist/snap-corner.d.ts +44 -0
- package/dist/snap-corner.d.ts.map +1 -0
- package/dist/snap-corner.js +111 -0
- package/dist/snap-corner.js.map +1 -0
- package/dist/snap-detector.d.ts +8 -4
- package/dist/snap-detector.d.ts.map +1 -1
- package/dist/snap-detector.js +60 -58
- package/dist/snap-detector.js.map +1 -1
- package/dist/snap-edge-runs.d.ts +75 -0
- package/dist/snap-edge-runs.d.ts.map +1 -0
- package/dist/snap-edge-runs.js +233 -0
- package/dist/snap-edge-runs.js.map +1 -0
- package/dist/snap-geometry-cache.d.ts +17 -11
- package/dist/snap-geometry-cache.d.ts.map +1 -1
- package/dist/snap-geometry-cache.js +115 -141
- package/dist/snap-geometry-cache.js.map +1 -1
- package/dist/snap-weld.d.ts +66 -0
- package/dist/snap-weld.d.ts.map +1 -0
- package/dist/snap-weld.js +150 -0
- package/dist/snap-weld.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Position welding and the one tolerance every stage of the snap geometry
|
|
3
|
+
* cache measures with.
|
|
4
|
+
*
|
|
5
|
+
* Mesh positions arrive UNWELDED: `rust/geometry/src/mesh_weld.rs` keys vertex
|
|
6
|
+
* identity on (exact f32 position bits, quantized normal, quantized UV), so the
|
|
7
|
+
* two triangles meeting at a crease keep separate vertex indices on purpose
|
|
8
|
+
* (flat shading needs the split normals). Anything that classifies mesh edges
|
|
9
|
+
* by vertex INDEX therefore sees each physical edge twice, once per side, each
|
|
10
|
+
* with a single adjacent triangle — every real edge looks like a boundary edge
|
|
11
|
+
* and no coplanarity test can ever fire. Welding by POSITION first is what makes
|
|
12
|
+
* "is this edge a real model edge or a triangulation diagonal?" answerable.
|
|
13
|
+
*/
|
|
14
|
+
import type { Vec3 } from './raycaster.js';
|
|
15
|
+
/**
|
|
16
|
+
* The tolerance for one mesh, as a perpendicular DISTANCE (never an angle).
|
|
17
|
+
*
|
|
18
|
+
* Derived from the LOCAL coordinate magnitude: `MeshData.origin` is f64 and
|
|
19
|
+
* shifts every vertex of the mesh identically, so it cancels in every
|
|
20
|
+
* within-mesh difference and the f32 quantum lives at the local magnitude, not
|
|
21
|
+
* the world one. (When `origin` is absent the positions themselves carry the
|
|
22
|
+
* magnitude, which this same read picks up.)
|
|
23
|
+
*
|
|
24
|
+
* An angle tolerance would be the wrong primitive here: the direction noise of
|
|
25
|
+
* a segment built from two f32 points scales with coordinate magnitude divided
|
|
26
|
+
* by segment length, so any fixed angle is simultaneously too tight for short
|
|
27
|
+
* segments far from the origin and too loose for long ones near it.
|
|
28
|
+
*/
|
|
29
|
+
export declare function snapToleranceFor(positions: ArrayLike<number>): number;
|
|
30
|
+
export interface WeldedVertices {
|
|
31
|
+
/** Welded vertex id per source vertex; -1 where the source vertex was non-finite. */
|
|
32
|
+
ids: Int32Array;
|
|
33
|
+
/** World-space representative point per welded id. */
|
|
34
|
+
points: Vec3[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Weld mesh positions to world-space points, merging anything within `tol`.
|
|
38
|
+
*
|
|
39
|
+
* Uses a uniform hash grid of cell size `2 * tol` and probes the (at most two
|
|
40
|
+
* per axis) cells that can hold a point within `tol` — the pattern
|
|
41
|
+
* `vertex_dedup.rs` uses in the kernel, and the reason this cannot silently drop
|
|
42
|
+
* a pair straddling a cell boundary the way a plain `Math.floor` bucket does.
|
|
43
|
+
*
|
|
44
|
+
* ORDER-INDEPENDENT by construction: the result is a pure function of the
|
|
45
|
+
* position multiset, never of array order. Vertices are processed in canonical
|
|
46
|
+
* VALUE order (lexicographic on world position) and each one joins the NEAREST
|
|
47
|
+
* already-accepted representative within `tol` (ties to the lexicographically
|
|
48
|
+
* earlier representative) or becomes a representative itself. Processed in
|
|
49
|
+
* array order with a first-hit match - the previous scheme - a tolerance chain
|
|
50
|
+
* (|a-b| <= tol, |b-c| <= tol, |a-c| > tol) welded into one cluster or two
|
|
51
|
+
* depending on which point arrived first, so reordering triangles changed
|
|
52
|
+
* adjacency and edge classification: the emission-order dependence (#2388
|
|
53
|
+
* class) the snap cache exists to remove, reintroduced one level down.
|
|
54
|
+
*
|
|
55
|
+
* This is leader clustering, NOT a transitive union: c never joins a through b
|
|
56
|
+
* unless c is itself within `tol` of the representative, so every cluster's
|
|
57
|
+
* diameter is bounded by `2 * tol`. A union-find over all in-tolerance pairs
|
|
58
|
+
* would be order-independent too, but it collapses a chain of genuinely
|
|
59
|
+
* distinct near-tolerance vertices into one point of unbounded diameter - and
|
|
60
|
+
* welding feeds edge classification, so an over-weld silently moves geometry.
|
|
61
|
+
* A plain grid quantisation would also be order-independent but splits pairs
|
|
62
|
+
* straddling a cell boundary, the failure the probe pattern above exists to
|
|
63
|
+
* avoid.
|
|
64
|
+
*/
|
|
65
|
+
export declare function weldVertices(positions: ArrayLike<number>, ox: number, oy: number, oz: number, tol: number): WeldedVertices;
|
|
66
|
+
//# sourceMappingURL=snap-weld.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap-weld.d.ts","sourceRoot":"","sources":["../src/snap-weld.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAuB3C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAOrE;AAED,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,GAAG,EAAE,UAAU,CAAC;IAChB,sDAAsD;IACtD,MAAM,EAAE,IAAI,EAAE,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,EAC5B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,GACV,cAAc,CA6EhB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Relative quantum of an f32 coordinate (2^-22).
|
|
6
|
+
*
|
|
7
|
+
* The same scale `packages/clash/src/analysis.ts` uses for `F32_ULP_SCALE` and
|
|
8
|
+
* `rust/geometry/src/kernel/retriangulate_cleanup.rs` uses for its extent-scaled
|
|
9
|
+
* epsilon. A fixed absolute epsilon is only valid near the origin, so the
|
|
10
|
+
* tolerance has to grow with coordinate magnitude.
|
|
11
|
+
*/
|
|
12
|
+
const F32_ULP_SCALE = 1 / 4_194_304;
|
|
13
|
+
/**
|
|
14
|
+
* Floor of the tolerance: 1/65536 m (15.3 um), the CSG kernel's own reconcile-grid
|
|
15
|
+
* resolution (`rust/geometry/src/mesh.rs`), measured there as flat in triangle
|
|
16
|
+
* count from 10-50 um and only touching real geometry at ~100 um.
|
|
17
|
+
*
|
|
18
|
+
* Deliberately NOT raised to a round 1e-4/1e-3: `rust/geometry/src/router/voids/
|
|
19
|
+
* prism_cut/vertex_dedup.rs` records that welding at 1e-4 m collapsed real
|
|
20
|
+
* geometry and took corpus defects from 76 to 90.
|
|
21
|
+
*/
|
|
22
|
+
const MIN_SNAP_TOLERANCE = 1 / 65536;
|
|
23
|
+
/**
|
|
24
|
+
* The tolerance for one mesh, as a perpendicular DISTANCE (never an angle).
|
|
25
|
+
*
|
|
26
|
+
* Derived from the LOCAL coordinate magnitude: `MeshData.origin` is f64 and
|
|
27
|
+
* shifts every vertex of the mesh identically, so it cancels in every
|
|
28
|
+
* within-mesh difference and the f32 quantum lives at the local magnitude, not
|
|
29
|
+
* the world one. (When `origin` is absent the positions themselves carry the
|
|
30
|
+
* magnitude, which this same read picks up.)
|
|
31
|
+
*
|
|
32
|
+
* An angle tolerance would be the wrong primitive here: the direction noise of
|
|
33
|
+
* a segment built from two f32 points scales with coordinate magnitude divided
|
|
34
|
+
* by segment length, so any fixed angle is simultaneously too tight for short
|
|
35
|
+
* segments far from the origin and too loose for long ones near it.
|
|
36
|
+
*/
|
|
37
|
+
export function snapToleranceFor(positions) {
|
|
38
|
+
let maxAbs = 0;
|
|
39
|
+
for (let i = 0; i < positions.length; i++) {
|
|
40
|
+
const a = Math.abs(positions[i]);
|
|
41
|
+
if (isFinite(a) && a > maxAbs)
|
|
42
|
+
maxAbs = a;
|
|
43
|
+
}
|
|
44
|
+
return Math.max(MIN_SNAP_TOLERANCE, maxAbs * F32_ULP_SCALE);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Weld mesh positions to world-space points, merging anything within `tol`.
|
|
48
|
+
*
|
|
49
|
+
* Uses a uniform hash grid of cell size `2 * tol` and probes the (at most two
|
|
50
|
+
* per axis) cells that can hold a point within `tol` — the pattern
|
|
51
|
+
* `vertex_dedup.rs` uses in the kernel, and the reason this cannot silently drop
|
|
52
|
+
* a pair straddling a cell boundary the way a plain `Math.floor` bucket does.
|
|
53
|
+
*
|
|
54
|
+
* ORDER-INDEPENDENT by construction: the result is a pure function of the
|
|
55
|
+
* position multiset, never of array order. Vertices are processed in canonical
|
|
56
|
+
* VALUE order (lexicographic on world position) and each one joins the NEAREST
|
|
57
|
+
* already-accepted representative within `tol` (ties to the lexicographically
|
|
58
|
+
* earlier representative) or becomes a representative itself. Processed in
|
|
59
|
+
* array order with a first-hit match - the previous scheme - a tolerance chain
|
|
60
|
+
* (|a-b| <= tol, |b-c| <= tol, |a-c| > tol) welded into one cluster or two
|
|
61
|
+
* depending on which point arrived first, so reordering triangles changed
|
|
62
|
+
* adjacency and edge classification: the emission-order dependence (#2388
|
|
63
|
+
* class) the snap cache exists to remove, reintroduced one level down.
|
|
64
|
+
*
|
|
65
|
+
* This is leader clustering, NOT a transitive union: c never joins a through b
|
|
66
|
+
* unless c is itself within `tol` of the representative, so every cluster's
|
|
67
|
+
* diameter is bounded by `2 * tol`. A union-find over all in-tolerance pairs
|
|
68
|
+
* would be order-independent too, but it collapses a chain of genuinely
|
|
69
|
+
* distinct near-tolerance vertices into one point of unbounded diameter - and
|
|
70
|
+
* welding feeds edge classification, so an over-weld silently moves geometry.
|
|
71
|
+
* A plain grid quantisation would also be order-independent but splits pairs
|
|
72
|
+
* straddling a cell boundary, the failure the probe pattern above exists to
|
|
73
|
+
* avoid.
|
|
74
|
+
*/
|
|
75
|
+
export function weldVertices(positions, ox, oy, oz, tol) {
|
|
76
|
+
const count = Math.floor(positions.length / 3);
|
|
77
|
+
const ids = new Int32Array(count).fill(-1);
|
|
78
|
+
const points = [];
|
|
79
|
+
// World coordinates once, then the canonical processing order. `sort` is a
|
|
80
|
+
// total order on VALUE (exact duplicates are interchangeable), so every
|
|
81
|
+
// later step is a function of the position multiset alone.
|
|
82
|
+
const xs = new Float64Array(count);
|
|
83
|
+
const ys = new Float64Array(count);
|
|
84
|
+
const zs = new Float64Array(count);
|
|
85
|
+
const order = [];
|
|
86
|
+
for (let i = 0; i < count; i++) {
|
|
87
|
+
const x = positions[i * 3] + ox;
|
|
88
|
+
const y = positions[i * 3 + 1] + oy;
|
|
89
|
+
const z = positions[i * 3 + 2] + oz;
|
|
90
|
+
if (!isFinite(x) || !isFinite(y) || !isFinite(z))
|
|
91
|
+
continue;
|
|
92
|
+
xs[i] = x;
|
|
93
|
+
ys[i] = y;
|
|
94
|
+
zs[i] = z;
|
|
95
|
+
order.push(i);
|
|
96
|
+
}
|
|
97
|
+
order.sort((i, j) => (xs[i] - xs[j]) || (ys[i] - ys[j]) || (zs[i] - zs[j]));
|
|
98
|
+
const cell = 2 * tol;
|
|
99
|
+
const tolSq = tol * tol;
|
|
100
|
+
const buckets = new Map();
|
|
101
|
+
for (const i of order) {
|
|
102
|
+
const x = xs[i], y = ys[i], z = zs[i];
|
|
103
|
+
const xLo = Math.floor((x - tol) / cell);
|
|
104
|
+
const xHi = Math.floor((x + tol) / cell);
|
|
105
|
+
const yLo = Math.floor((y - tol) / cell);
|
|
106
|
+
const yHi = Math.floor((y + tol) / cell);
|
|
107
|
+
const zLo = Math.floor((z - tol) / cell);
|
|
108
|
+
const zHi = Math.floor((z + tol) / cell);
|
|
109
|
+
// Nearest representative within tol; ties break to the SMALLER id, which
|
|
110
|
+
// (ids are assigned in value order) is the lexicographically earlier
|
|
111
|
+
// representative - a value tiebreak, not a positional one.
|
|
112
|
+
let best = -1;
|
|
113
|
+
let bestSq = Infinity;
|
|
114
|
+
for (let cx = xLo; cx <= xHi; cx++) {
|
|
115
|
+
for (let cy = yLo; cy <= yHi; cy++) {
|
|
116
|
+
for (let cz = zLo; cz <= zHi; cz++) {
|
|
117
|
+
const bucket = buckets.get(`${cx}_${cy}_${cz}`);
|
|
118
|
+
if (!bucket)
|
|
119
|
+
continue;
|
|
120
|
+
for (const id of bucket) {
|
|
121
|
+
const p = points[id];
|
|
122
|
+
const dx = p.x - x, dy = p.y - y, dz = p.z - z;
|
|
123
|
+
const dSq = dx * dx + dy * dy + dz * dz;
|
|
124
|
+
if (dSq > tolSq)
|
|
125
|
+
continue;
|
|
126
|
+
if (dSq < bestSq || (dSq === bestSq && id < best)) {
|
|
127
|
+
best = id;
|
|
128
|
+
bestSq = dSq;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (best >= 0) {
|
|
135
|
+
ids[i] = best;
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const id = points.length;
|
|
139
|
+
points.push({ x, y, z });
|
|
140
|
+
ids[i] = id;
|
|
141
|
+
const key = `${Math.floor(x / cell)}_${Math.floor(y / cell)}_${Math.floor(z / cell)}`;
|
|
142
|
+
const bucket = buckets.get(key);
|
|
143
|
+
if (bucket)
|
|
144
|
+
bucket.push(id);
|
|
145
|
+
else
|
|
146
|
+
buckets.set(key, [id]);
|
|
147
|
+
}
|
|
148
|
+
return { ids, points };
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=snap-weld.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap-weld.js","sourceRoot":"","sources":["../src/snap-weld.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/renderer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.48.1",
|
|
4
4
|
"description": "WebGPU renderer for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@ifc-lite/geometry": "^3.8.
|
|
16
|
+
"@ifc-lite/geometry": "^3.8.3",
|
|
17
17
|
"@ifc-lite/spatial": "^1.14.13"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|