@ifc-lite/geometry 1.2.1 → 1.5.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.
- package/dist/coordinate-handler.d.ts +19 -3
- package/dist/coordinate-handler.d.ts.map +1 -1
- package/dist/coordinate-handler.js +82 -19
- package/dist/coordinate-handler.js.map +1 -1
- package/dist/ifc-lite-bridge.d.ts +8 -7
- package/dist/ifc-lite-bridge.d.ts.map +1 -1
- package/dist/ifc-lite-bridge.js +82 -10
- package/dist/ifc-lite-bridge.js.map +1 -1
- package/dist/ifc-lite-mesh-collector.d.ts +23 -6
- package/dist/ifc-lite-mesh-collector.d.ts.map +1 -1
- package/dist/ifc-lite-mesh-collector.js +185 -64
- package/dist/ifc-lite-mesh-collector.js.map +1 -1
- package/dist/index.d.ts +18 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -10
- package/dist/index.js.map +1 -1
- package/dist/native-bridge.js +1 -1
- package/dist/native-bridge.js.map +1 -1
- package/dist/progressive-loader.d.ts +21 -5
- package/dist/progressive-loader.d.ts.map +1 -1
- package/dist/progressive-loader.js +1 -2
- package/dist/progressive-loader.js.map +1 -1
- package/dist/types.d.ts +84 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/wasm-bridge.d.ts.map +1 -1
- package/dist/wasm-bridge.js +3 -1
- package/dist/wasm-bridge.js.map +1 -1
- package/package.json +6 -4
|
@@ -21,7 +21,12 @@ export interface CoordinateInfo {
|
|
|
21
21
|
originShift: Vec3;
|
|
22
22
|
originalBounds: AABB;
|
|
23
23
|
shiftedBounds: AABB;
|
|
24
|
-
|
|
24
|
+
/** True if model had large coordinates requiring RTC shift. NOT the same as proper georeferencing via IfcMapConversion. */
|
|
25
|
+
hasLargeCoordinates: boolean;
|
|
26
|
+
/** RTC offset applied by WASM in IFC coordinates (Z-up). Used for multi-model alignment. */
|
|
27
|
+
wasmRtcOffset?: Vec3;
|
|
28
|
+
/** Building rotation angle in radians (from IfcSite placement). Rotation of building's principal axes relative to world X/Y/Z. */
|
|
29
|
+
buildingRotation?: number;
|
|
25
30
|
}
|
|
26
31
|
export declare class CoordinateHandler {
|
|
27
32
|
private originShift;
|
|
@@ -29,14 +34,19 @@ export declare class CoordinateHandler {
|
|
|
29
34
|
private readonly MAX_REASONABLE_COORD;
|
|
30
35
|
private accumulatedBounds;
|
|
31
36
|
private shiftCalculated;
|
|
37
|
+
private wasmRtcDetected;
|
|
38
|
+
private readonly NORMAL_COORD_THRESHOLD;
|
|
39
|
+
private activeThreshold;
|
|
32
40
|
/**
|
|
33
41
|
* Check if a coordinate value is reasonable (not corrupted garbage)
|
|
34
42
|
*/
|
|
35
43
|
private isReasonableValue;
|
|
36
44
|
/**
|
|
37
45
|
* Calculate bounding box from all meshes (filtering out corrupted values)
|
|
46
|
+
* @param meshes - Meshes to calculate bounds from
|
|
47
|
+
* @param maxCoord - Optional max coordinate threshold (default: MAX_REASONABLE_COORD)
|
|
38
48
|
*/
|
|
39
|
-
calculateBounds(meshes: MeshData[]): AABB;
|
|
49
|
+
calculateBounds(meshes: MeshData[], maxCoord?: number): AABB;
|
|
40
50
|
/**
|
|
41
51
|
* Check if coordinate shift is needed
|
|
42
52
|
*/
|
|
@@ -48,8 +58,11 @@ export declare class CoordinateHandler {
|
|
|
48
58
|
/**
|
|
49
59
|
* Shift positions in-place by subtracting origin shift
|
|
50
60
|
* Corrupted values are set to 0 (center of shifted coordinate system)
|
|
61
|
+
* @param positions - Position array to modify
|
|
62
|
+
* @param shift - Origin shift to subtract
|
|
63
|
+
* @param threshold - Optional threshold for valid coordinates (defaults to MAX_REASONABLE_COORD)
|
|
51
64
|
*/
|
|
52
|
-
shiftPositions(positions: Float32Array, shift: Vec3): void;
|
|
65
|
+
shiftPositions(positions: Float32Array, shift: Vec3, threshold?: number): void;
|
|
53
66
|
/**
|
|
54
67
|
* Shift bounds by subtracting origin shift
|
|
55
68
|
*/
|
|
@@ -73,6 +86,9 @@ export declare class CoordinateHandler {
|
|
|
73
86
|
/**
|
|
74
87
|
* Process meshes incrementally for streaming
|
|
75
88
|
* Accumulates bounds and applies shift once calculated
|
|
89
|
+
*
|
|
90
|
+
* IMPORTANT: Detects if WASM already applied RTC offset by checking if
|
|
91
|
+
* majority of meshes have small coordinates. If so, skips TypeScript shift.
|
|
76
92
|
*/
|
|
77
93
|
processMeshesIncremental(batch: MeshData[]): void;
|
|
78
94
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate-handler.d.ts","sourceRoot":"","sources":["../src/coordinate-handler.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,IAAI;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,IAAI;IACjB,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,IAAI,CAAC;IAClB,cAAc,EAAE,IAAI,CAAC;IACrB,aAAa,EAAE,IAAI,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"coordinate-handler.d.ts","sourceRoot":"","sources":["../src/coordinate-handler.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,IAAI;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,IAAI;IACjB,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,IAAI,CAAC;IAClB,cAAc,EAAE,IAAI,CAAC;IACrB,aAAa,EAAE,IAAI,CAAC;IACpB,2HAA2H;IAC3H,mBAAmB,EAAE,OAAO,CAAC;IAC7B,4FAA4F;IAC5F,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,kIAAkI;IAClI,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAGnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAO;IAG5C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAEhD,OAAO,CAAC,eAAe,CAAe;IAEtC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IA2C5D;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAUjC;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQrC;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAwB9E;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI;IAe5C;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc;IAkGjD;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAQxC;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAQxC;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;;;;;OAMG;IACH,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAiGjD;;OAEG;IACH,wBAAwB,IAAI,cAAc,GAAG,IAAI;IA2BjD;;OAEG;IACH,sBAAsB,IAAI,cAAc;IAqBxC;;OAEG;IACH,KAAK,IAAI,IAAI;CAOhB"}
|
|
@@ -10,6 +10,12 @@ export class CoordinateHandler {
|
|
|
10
10
|
// For incremental processing
|
|
11
11
|
accumulatedBounds = null;
|
|
12
12
|
shiftCalculated = false;
|
|
13
|
+
// WASM RTC detection - if WASM already applied RTC, skip TypeScript shift
|
|
14
|
+
wasmRtcDetected = false;
|
|
15
|
+
// Threshold for "normal" coordinates when WASM RTC is active (10km = reasonable campus/site size)
|
|
16
|
+
NORMAL_COORD_THRESHOLD = 10000;
|
|
17
|
+
// Active threshold for coordinate validation (set based on wasmRtcDetected)
|
|
18
|
+
activeThreshold = 1e7;
|
|
13
19
|
/**
|
|
14
20
|
* Check if a coordinate value is reasonable (not corrupted garbage)
|
|
15
21
|
*/
|
|
@@ -18,12 +24,15 @@ export class CoordinateHandler {
|
|
|
18
24
|
}
|
|
19
25
|
/**
|
|
20
26
|
* Calculate bounding box from all meshes (filtering out corrupted values)
|
|
27
|
+
* @param meshes - Meshes to calculate bounds from
|
|
28
|
+
* @param maxCoord - Optional max coordinate threshold (default: MAX_REASONABLE_COORD)
|
|
21
29
|
*/
|
|
22
|
-
calculateBounds(meshes) {
|
|
30
|
+
calculateBounds(meshes, maxCoord) {
|
|
23
31
|
const bounds = {
|
|
24
32
|
min: { x: Infinity, y: Infinity, z: Infinity },
|
|
25
33
|
max: { x: -Infinity, y: -Infinity, z: -Infinity },
|
|
26
34
|
};
|
|
35
|
+
const threshold = maxCoord ?? this.MAX_REASONABLE_COORD;
|
|
27
36
|
let validVertexCount = 0;
|
|
28
37
|
let corruptedVertexCount = 0;
|
|
29
38
|
for (const mesh of meshes) {
|
|
@@ -32,8 +41,11 @@ export class CoordinateHandler {
|
|
|
32
41
|
const x = positions[i];
|
|
33
42
|
const y = positions[i + 1];
|
|
34
43
|
const z = positions[i + 2];
|
|
35
|
-
// Only include
|
|
36
|
-
|
|
44
|
+
// Only include values within threshold (filter out outliers/garbage)
|
|
45
|
+
const coordsFinite = Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z);
|
|
46
|
+
const withinThreshold = coordsFinite &&
|
|
47
|
+
Math.abs(x) < threshold && Math.abs(y) < threshold && Math.abs(z) < threshold;
|
|
48
|
+
if (withinThreshold) {
|
|
37
49
|
bounds.min.x = Math.min(bounds.min.x, x);
|
|
38
50
|
bounds.min.y = Math.min(bounds.min.y, y);
|
|
39
51
|
bounds.min.z = Math.min(bounds.min.z, z);
|
|
@@ -72,20 +84,26 @@ export class CoordinateHandler {
|
|
|
72
84
|
/**
|
|
73
85
|
* Shift positions in-place by subtracting origin shift
|
|
74
86
|
* Corrupted values are set to 0 (center of shifted coordinate system)
|
|
87
|
+
* @param positions - Position array to modify
|
|
88
|
+
* @param shift - Origin shift to subtract
|
|
89
|
+
* @param threshold - Optional threshold for valid coordinates (defaults to MAX_REASONABLE_COORD)
|
|
75
90
|
*/
|
|
76
|
-
shiftPositions(positions, shift) {
|
|
91
|
+
shiftPositions(positions, shift, threshold) {
|
|
92
|
+
const maxCoord = threshold ?? this.MAX_REASONABLE_COORD;
|
|
77
93
|
for (let i = 0; i < positions.length; i += 3) {
|
|
78
94
|
const x = positions[i];
|
|
79
95
|
const y = positions[i + 1];
|
|
80
96
|
const z = positions[i + 2];
|
|
81
|
-
// For corrupted values, set to center (0) in shifted space
|
|
82
|
-
|
|
97
|
+
// For corrupted/outlier values, set to center (0) in shifted space
|
|
98
|
+
const coordsValid = Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z) &&
|
|
99
|
+
Math.abs(x) < maxCoord && Math.abs(y) < maxCoord && Math.abs(z) < maxCoord;
|
|
100
|
+
if (coordsValid) {
|
|
83
101
|
positions[i] = x - shift.x;
|
|
84
102
|
positions[i + 1] = y - shift.y;
|
|
85
103
|
positions[i + 2] = z - shift.z;
|
|
86
104
|
}
|
|
87
105
|
else {
|
|
88
|
-
// Corrupted vertex - set to origin to avoid visual artifacts
|
|
106
|
+
// Corrupted/outlier vertex - set to origin to avoid visual artifacts
|
|
89
107
|
positions[i] = 0;
|
|
90
108
|
positions[i + 1] = 0;
|
|
91
109
|
positions[i + 2] = 0;
|
|
@@ -123,7 +141,7 @@ export class CoordinateHandler {
|
|
|
123
141
|
min: { x: 0, y: 0, z: 0 },
|
|
124
142
|
max: { x: 0, y: 0, z: 0 },
|
|
125
143
|
},
|
|
126
|
-
|
|
144
|
+
hasLargeCoordinates: false,
|
|
127
145
|
};
|
|
128
146
|
if (meshes.length === 0) {
|
|
129
147
|
return emptyResult;
|
|
@@ -162,7 +180,7 @@ export class CoordinateHandler {
|
|
|
162
180
|
originShift: zeroShift,
|
|
163
181
|
originalBounds,
|
|
164
182
|
shiftedBounds: originalBounds,
|
|
165
|
-
|
|
183
|
+
hasLargeCoordinates: false,
|
|
166
184
|
};
|
|
167
185
|
}
|
|
168
186
|
// Calculate centroid as origin shift
|
|
@@ -187,7 +205,7 @@ export class CoordinateHandler {
|
|
|
187
205
|
originShift: centroid,
|
|
188
206
|
originalBounds,
|
|
189
207
|
shiftedBounds,
|
|
190
|
-
|
|
208
|
+
hasLargeCoordinates: true,
|
|
191
209
|
};
|
|
192
210
|
}
|
|
193
211
|
/**
|
|
@@ -219,10 +237,15 @@ export class CoordinateHandler {
|
|
|
219
237
|
/**
|
|
220
238
|
* Process meshes incrementally for streaming
|
|
221
239
|
* Accumulates bounds and applies shift once calculated
|
|
240
|
+
*
|
|
241
|
+
* IMPORTANT: Detects if WASM already applied RTC offset by checking if
|
|
242
|
+
* majority of meshes have small coordinates. If so, skips TypeScript shift.
|
|
222
243
|
*/
|
|
223
244
|
processMeshesIncremental(batch) {
|
|
224
|
-
//
|
|
225
|
-
|
|
245
|
+
// If WASM RTC was detected, use stricter threshold to exclude outliers
|
|
246
|
+
// Store in instance variable so shiftPositions uses the same threshold
|
|
247
|
+
this.activeThreshold = this.wasmRtcDetected ? this.NORMAL_COORD_THRESHOLD : this.MAX_REASONABLE_COORD;
|
|
248
|
+
const batchBounds = this.calculateBounds(batch, this.activeThreshold);
|
|
226
249
|
if (this.accumulatedBounds === null) {
|
|
227
250
|
this.accumulatedBounds = batchBounds;
|
|
228
251
|
}
|
|
@@ -248,8 +271,37 @@ export class CoordinateHandler {
|
|
|
248
271
|
const maxSize = Math.max(size.x, size.y, size.z);
|
|
249
272
|
const centroid = this.calculateCentroid(this.accumulatedBounds);
|
|
250
273
|
const distanceFromOrigin = Math.sqrt(centroid.x ** 2 + centroid.y ** 2 + centroid.z ** 2);
|
|
251
|
-
//
|
|
252
|
-
|
|
274
|
+
// DETECT IF WASM ALREADY APPLIED RTC
|
|
275
|
+
// If majority of meshes have small coordinates, WASM already shifted them
|
|
276
|
+
let smallCoordCount = 0;
|
|
277
|
+
let largeCoordCount = 0;
|
|
278
|
+
const SMALL_COORD_THRESHOLD = this.THRESHOLD; // Use same threshold as RTC detection
|
|
279
|
+
for (const mesh of batch) {
|
|
280
|
+
const positions = mesh.positions;
|
|
281
|
+
if (positions.length >= 3) {
|
|
282
|
+
// Check first vertex of each mesh
|
|
283
|
+
const x = Math.abs(positions[0]);
|
|
284
|
+
const y = Math.abs(positions[1]);
|
|
285
|
+
const z = Math.abs(positions[2]);
|
|
286
|
+
const maxCoord = Math.max(x, y, z);
|
|
287
|
+
if (maxCoord < SMALL_COORD_THRESHOLD) {
|
|
288
|
+
smallCoordCount++;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
largeCoordCount++;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// If >50% have small coords, WASM RTC was likely applied
|
|
296
|
+
const totalMeshes = smallCoordCount + largeCoordCount;
|
|
297
|
+
const wasmRtcLikelyApplied = totalMeshes > 0 && (smallCoordCount / totalMeshes) > 0.5;
|
|
298
|
+
if (wasmRtcLikelyApplied) {
|
|
299
|
+
this.wasmRtcDetected = true;
|
|
300
|
+
// Recalculate bounds excluding outliers (use stricter threshold)
|
|
301
|
+
this.accumulatedBounds = this.calculateBounds(batch, this.NORMAL_COORD_THRESHOLD);
|
|
302
|
+
}
|
|
303
|
+
// Check if shift is needed (>10km from origin) AND WASM didn't already apply RTC
|
|
304
|
+
if ((distanceFromOrigin > this.THRESHOLD || maxSize > this.THRESHOLD) && !wasmRtcLikelyApplied) {
|
|
253
305
|
this.originShift = centroid;
|
|
254
306
|
console.log('[CoordinateHandler] Large coordinates detected, shifting to origin:', {
|
|
255
307
|
distanceFromOrigin: distanceFromOrigin.toFixed(2) + 'm',
|
|
@@ -257,13 +309,22 @@ export class CoordinateHandler {
|
|
|
257
309
|
shift: this.originShift,
|
|
258
310
|
});
|
|
259
311
|
}
|
|
312
|
+
else if (wasmRtcLikelyApplied) {
|
|
313
|
+
// Log that we're skipping because WASM already applied RTC
|
|
314
|
+
console.log('[CoordinateHandler] Skipping shift - WASM RTC already applied:', {
|
|
315
|
+
smallCoordCount,
|
|
316
|
+
largeCoordCount,
|
|
317
|
+
wasmRtcDetected: true,
|
|
318
|
+
});
|
|
319
|
+
}
|
|
260
320
|
}
|
|
261
321
|
this.shiftCalculated = true;
|
|
262
322
|
}
|
|
263
|
-
// Apply shift to this batch
|
|
323
|
+
// Apply shift to this batch (only if we determined shift is needed AND WASM didn't already apply)
|
|
324
|
+
// Use the same threshold for vertex cleanup as was used for bounds calculation
|
|
264
325
|
if (this.originShift.x !== 0 || this.originShift.y !== 0 || this.originShift.z !== 0) {
|
|
265
326
|
for (const mesh of batch) {
|
|
266
|
-
this.shiftPositions(mesh.positions, this.originShift);
|
|
327
|
+
this.shiftPositions(mesh.positions, this.originShift, this.activeThreshold);
|
|
267
328
|
}
|
|
268
329
|
}
|
|
269
330
|
}
|
|
@@ -280,14 +341,14 @@ export class CoordinateHandler {
|
|
|
280
341
|
return null;
|
|
281
342
|
}
|
|
282
343
|
const shiftedBounds = this.shiftBounds(this.accumulatedBounds, this.originShift);
|
|
283
|
-
const
|
|
344
|
+
const hasLargeCoordinates = this.originShift.x !== 0 ||
|
|
284
345
|
this.originShift.y !== 0 ||
|
|
285
346
|
this.originShift.z !== 0;
|
|
286
347
|
return {
|
|
287
348
|
originShift: { ...this.originShift },
|
|
288
349
|
originalBounds: { ...this.accumulatedBounds },
|
|
289
350
|
shiftedBounds,
|
|
290
|
-
|
|
351
|
+
hasLargeCoordinates,
|
|
291
352
|
};
|
|
292
353
|
}
|
|
293
354
|
/**
|
|
@@ -309,7 +370,7 @@ export class CoordinateHandler {
|
|
|
309
370
|
min: { x: 0, y: 0, z: 0 },
|
|
310
371
|
max: { x: 0, y: 0, z: 0 },
|
|
311
372
|
},
|
|
312
|
-
|
|
373
|
+
hasLargeCoordinates: false,
|
|
313
374
|
};
|
|
314
375
|
}
|
|
315
376
|
/**
|
|
@@ -319,6 +380,8 @@ export class CoordinateHandler {
|
|
|
319
380
|
this.accumulatedBounds = null;
|
|
320
381
|
this.shiftCalculated = false;
|
|
321
382
|
this.originShift = { x: 0, y: 0, z: 0 };
|
|
383
|
+
this.wasmRtcDetected = false;
|
|
384
|
+
this.activeThreshold = this.MAX_REASONABLE_COORD;
|
|
322
385
|
}
|
|
323
386
|
}
|
|
324
387
|
//# sourceMappingURL=coordinate-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate-handler.js","sourceRoot":"","sources":["../src/coordinate-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coordinate-handler.js","sourceRoot":"","sources":["../src/coordinate-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* Replaces web-ifc-bridge.ts with native IFC-Lite implementation (1.9x faster)
|
|
4
|
-
*/
|
|
5
|
-
import { IfcAPI, MeshCollection, MeshDataJs, InstancedMeshCollection, InstancedGeometry, InstanceData } from '@ifc-lite/wasm';
|
|
6
|
-
export type { MeshCollection, MeshDataJs, InstancedMeshCollection, InstancedGeometry, InstanceData };
|
|
1
|
+
import { IfcAPI, MeshCollection, MeshDataJs, InstancedMeshCollection, InstancedGeometry, InstanceData, SymbolicRepresentationCollection, SymbolicPolyline, SymbolicCircle } from '@ifc-lite/wasm';
|
|
2
|
+
export type { MeshCollection, MeshDataJs, InstancedMeshCollection, InstancedGeometry, InstanceData, SymbolicRepresentationCollection, SymbolicPolyline, SymbolicCircle };
|
|
7
3
|
export interface StreamingProgress {
|
|
8
4
|
percent: number;
|
|
9
5
|
processed: number;
|
|
@@ -37,7 +33,7 @@ export declare class IfcLiteBridge {
|
|
|
37
33
|
* Initialize IFC-Lite WASM
|
|
38
34
|
* The WASM binary is automatically resolved from the same location as the JS module
|
|
39
35
|
*/
|
|
40
|
-
init(
|
|
36
|
+
init(): Promise<void>;
|
|
41
37
|
/**
|
|
42
38
|
* Parse IFC content and return mesh collection (blocking)
|
|
43
39
|
* Returns individual meshes with express IDs and colors
|
|
@@ -62,6 +58,11 @@ export declare class IfcLiteBridge {
|
|
|
62
58
|
* Reduces draw calls significantly for buildings with repeated elements
|
|
63
59
|
*/
|
|
64
60
|
parseMeshesInstancedAsync(content: string, options?: ParseMeshesInstancedAsyncOptions): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Parse IFC content and return symbolic representations (Plan, Annotation, FootPrint)
|
|
63
|
+
* These are pre-authored 2D curves for architectural drawings
|
|
64
|
+
*/
|
|
65
|
+
parseSymbolicRepresentations(content: string): SymbolicRepresentationCollection;
|
|
65
66
|
/**
|
|
66
67
|
* Get IFC-Lite API instance
|
|
67
68
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-lite-bridge.d.ts","sourceRoot":"","sources":["../src/ifc-lite-bridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ifc-lite-bridge.d.ts","sourceRoot":"","sources":["../src/ifc-lite-bridge.ts"],"names":[],"mappings":"AAUA,OAAa,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,YAAY,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACxM,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,YAAY,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;AAIzK,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACtE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;CAClF;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjF,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;CACvD;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAkB;IAErC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAiB5C;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB;IAiB9D;;;;OAIG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7F;;;;;OAKG;IACG,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gCAAqC,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/G;;;OAGG;IACH,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,gCAAgC;IAiB/E;;OAEG;IACH,MAAM,IAAI,MAAM;IAOhB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
|
package/dist/ifc-lite-bridge.js
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* IFC-Lite bridge - initializes and manages IFC-Lite WASM for geometry processing
|
|
6
6
|
* Replaces web-ifc-bridge.ts with native IFC-Lite implementation (1.9x faster)
|
|
7
7
|
*/
|
|
8
|
+
import { createLogger } from '@ifc-lite/data';
|
|
8
9
|
import init, { IfcAPI } from '@ifc-lite/wasm';
|
|
10
|
+
const log = createLogger('Geometry');
|
|
9
11
|
export class IfcLiteBridge {
|
|
10
12
|
ifcApi = null;
|
|
11
13
|
initialized = false;
|
|
@@ -13,14 +15,23 @@ export class IfcLiteBridge {
|
|
|
13
15
|
* Initialize IFC-Lite WASM
|
|
14
16
|
* The WASM binary is automatically resolved from the same location as the JS module
|
|
15
17
|
*/
|
|
16
|
-
async init(
|
|
18
|
+
async init() {
|
|
17
19
|
if (this.initialized)
|
|
18
20
|
return;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
try {
|
|
22
|
+
// Initialize WASM module - wasm-bindgen automatically resolves the WASM URL
|
|
23
|
+
// from import.meta.url, no need to manually construct paths
|
|
24
|
+
await init();
|
|
25
|
+
this.ifcApi = new IfcAPI();
|
|
26
|
+
this.initialized = true;
|
|
27
|
+
log.info('WASM geometry engine initialized');
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
log.error('Failed to initialize WASM geometry engine', error, {
|
|
31
|
+
operation: 'init',
|
|
32
|
+
});
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
24
35
|
}
|
|
25
36
|
/**
|
|
26
37
|
* Parse IFC content and return mesh collection (blocking)
|
|
@@ -30,7 +41,18 @@ export class IfcLiteBridge {
|
|
|
30
41
|
if (!this.ifcApi) {
|
|
31
42
|
throw new Error('IFC-Lite not initialized. Call init() first.');
|
|
32
43
|
}
|
|
33
|
-
|
|
44
|
+
try {
|
|
45
|
+
const collection = this.ifcApi.parseMeshes(content);
|
|
46
|
+
log.debug(`Parsed ${collection.length} meshes`, { operation: 'parseMeshes' });
|
|
47
|
+
return collection;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
log.error('Failed to parse IFC geometry', error, {
|
|
51
|
+
operation: 'parseMeshes',
|
|
52
|
+
data: { contentLength: content.length },
|
|
53
|
+
});
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
34
56
|
}
|
|
35
57
|
/**
|
|
36
58
|
* Parse IFC content and return instanced geometry collection (blocking)
|
|
@@ -41,7 +63,18 @@ export class IfcLiteBridge {
|
|
|
41
63
|
if (!this.ifcApi) {
|
|
42
64
|
throw new Error('IFC-Lite not initialized. Call init() first.');
|
|
43
65
|
}
|
|
44
|
-
|
|
66
|
+
try {
|
|
67
|
+
const collection = this.ifcApi.parseMeshesInstanced(content);
|
|
68
|
+
log.debug(`Parsed ${collection.length} instanced geometries`, { operation: 'parseMeshesInstanced' });
|
|
69
|
+
return collection;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
log.error('Failed to parse instanced IFC geometry', error, {
|
|
73
|
+
operation: 'parseMeshesInstanced',
|
|
74
|
+
data: { contentLength: content.length },
|
|
75
|
+
});
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
45
78
|
}
|
|
46
79
|
/**
|
|
47
80
|
* Parse IFC content with streaming (non-blocking)
|
|
@@ -52,7 +85,16 @@ export class IfcLiteBridge {
|
|
|
52
85
|
if (!this.ifcApi) {
|
|
53
86
|
throw new Error('IFC-Lite not initialized. Call init() first.');
|
|
54
87
|
}
|
|
55
|
-
|
|
88
|
+
try {
|
|
89
|
+
return await this.ifcApi.parseMeshesAsync(content, options);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
log.error('Failed to parse IFC geometry (streaming)', error, {
|
|
93
|
+
operation: 'parseMeshesAsync',
|
|
94
|
+
data: { contentLength: content.length },
|
|
95
|
+
});
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
56
98
|
}
|
|
57
99
|
/**
|
|
58
100
|
* Parse IFC content with streaming instanced geometry (non-blocking)
|
|
@@ -64,7 +106,37 @@ export class IfcLiteBridge {
|
|
|
64
106
|
if (!this.ifcApi) {
|
|
65
107
|
throw new Error('IFC-Lite not initialized. Call init() first.');
|
|
66
108
|
}
|
|
67
|
-
|
|
109
|
+
try {
|
|
110
|
+
return await this.ifcApi.parseMeshesInstancedAsync(content, options);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
log.error('Failed to parse instanced IFC geometry (streaming)', error, {
|
|
114
|
+
operation: 'parseMeshesInstancedAsync',
|
|
115
|
+
data: { contentLength: content.length },
|
|
116
|
+
});
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Parse IFC content and return symbolic representations (Plan, Annotation, FootPrint)
|
|
122
|
+
* These are pre-authored 2D curves for architectural drawings
|
|
123
|
+
*/
|
|
124
|
+
parseSymbolicRepresentations(content) {
|
|
125
|
+
if (!this.ifcApi) {
|
|
126
|
+
throw new Error('IFC-Lite not initialized. Call init() first.');
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
const collection = this.ifcApi.parseSymbolicRepresentations(content);
|
|
130
|
+
log.debug(`Parsed ${collection.totalCount} symbolic items (${collection.polylineCount} polylines, ${collection.circleCount} circles)`, { operation: 'parseSymbolicRepresentations' });
|
|
131
|
+
return collection;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
log.error('Failed to parse symbolic representations', error, {
|
|
135
|
+
operation: 'parseSymbolicRepresentations',
|
|
136
|
+
data: { contentLength: content.length },
|
|
137
|
+
});
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
68
140
|
}
|
|
69
141
|
/**
|
|
70
142
|
* Get IFC-Lite API instance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-lite-bridge.js","sourceRoot":"","sources":["../src/ifc-lite-bridge.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;GAGG;AAEH,OAAO,IAAI,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ifc-lite-bridge.js","sourceRoot":"","sources":["../src/ifc-lite-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IFC-Lite Mesh Collector - extracts triangle data from IFC-Lite WASM
|
|
3
|
-
* Replaces mesh-collector.ts - uses native Rust geometry processing (1.9x faster)
|
|
4
|
-
*/
|
|
5
1
|
import type { IfcAPI, InstancedGeometry } from '@ifc-lite/wasm';
|
|
6
2
|
import type { MeshData } from './types.js';
|
|
7
3
|
export interface StreamingProgress {
|
|
@@ -27,7 +23,17 @@ export interface StreamingColorUpdateEvent {
|
|
|
27
23
|
type: 'colorUpdate';
|
|
28
24
|
updates: Map<number, [number, number, number, number]>;
|
|
29
25
|
}
|
|
30
|
-
export
|
|
26
|
+
export interface StreamingRtcOffsetEvent {
|
|
27
|
+
type: 'rtcOffset';
|
|
28
|
+
/** RTC offset in IFC coordinates (before Z-up to Y-up conversion) */
|
|
29
|
+
rtcOffset: {
|
|
30
|
+
x: number;
|
|
31
|
+
y: number;
|
|
32
|
+
z: number;
|
|
33
|
+
};
|
|
34
|
+
hasRtc: boolean;
|
|
35
|
+
}
|
|
36
|
+
export type StreamingEvent = StreamingBatchEvent | StreamingCompleteEvent | StreamingColorUpdateEvent | StreamingRtcOffsetEvent;
|
|
31
37
|
export declare class IfcLiteMeshCollector {
|
|
32
38
|
private ifcApi;
|
|
33
39
|
private content;
|
|
@@ -38,17 +44,28 @@ export declare class IfcLiteMeshCollector {
|
|
|
38
44
|
* Transformation: swap Y and Z, then negate new Z to maintain right-handedness
|
|
39
45
|
*/
|
|
40
46
|
private convertZUpToYUp;
|
|
47
|
+
/**
|
|
48
|
+
* Reverse triangle winding order to correct for handedness flip.
|
|
49
|
+
* The Z-up to Y-up conversion includes a reflection (Z negation),
|
|
50
|
+
* which flips the handedness. This reverses winding to compensate,
|
|
51
|
+
* ensuring triangles face the correct direction after transformation.
|
|
52
|
+
*/
|
|
53
|
+
private reverseWindingOrder;
|
|
41
54
|
/**
|
|
42
55
|
* Collect all meshes from IFC-Lite
|
|
43
56
|
* Much faster than web-ifc (~1.9x speedup)
|
|
44
57
|
*/
|
|
45
58
|
collectMeshes(): MeshData[];
|
|
59
|
+
/**
|
|
60
|
+
* Get building rotation extracted from IfcSite placement
|
|
61
|
+
*/
|
|
62
|
+
getBuildingRotation(): number | undefined;
|
|
46
63
|
/**
|
|
47
64
|
* Collect meshes incrementally, yielding batches for progressive rendering
|
|
48
65
|
* Uses fast-first-frame streaming: simple geometry (walls, slabs) first
|
|
49
66
|
* @param batchSize Number of meshes per batch (default: 25 for faster first frame)
|
|
50
67
|
*/
|
|
51
|
-
collectMeshesStreaming(batchSize?: number): AsyncGenerator<MeshData[] | StreamingColorUpdateEvent>;
|
|
68
|
+
collectMeshesStreaming(batchSize?: number): AsyncGenerator<MeshData[] | StreamingColorUpdateEvent | StreamingRtcOffsetEvent>;
|
|
52
69
|
/**
|
|
53
70
|
* Collect meshes with dynamic batch sizing (ramp-up approach)
|
|
54
71
|
* Accumulates meshes from WASM and yields them in dynamically-sized batches
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc-lite-mesh-collector.d.ts","sourceRoot":"","sources":["../src/ifc-lite-mesh-collector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ifc-lite-mesh-collector.d.ts","sourceRoot":"","sources":["../src/ifc-lite-mesh-collector.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAc,iBAAiB,EAAkB,MAAM,gBAAgB,CAAC;AAC5F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,qEAAqE;IACrE,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,yBAAyB,GAAG,uBAAuB,CAAC;AAEhI,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAK3C;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;OAGG;IACH,aAAa,IAAI,QAAQ,EAAE;IAwF3B;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC;;;;OAIG;IACI,sBAAsB,CAAC,SAAS,GAAE,MAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,yBAAyB,GAAG,uBAAuB,CAAC;IAqKvI;;;;OAIG;IACI,6BAA6B,CAClC,YAAY,EAAE,MAAM,MAAM,GACzB,cAAc,CAAC,QAAQ,EAAE,CAAC;IAmC7B;;;;;OAKG;IACI,iCAAiC,CAAC,SAAS,GAAE,MAAW,GAAG,cAAc,CAAC,iBAAiB,EAAE,CAAC;CAsDtG"}
|