@ifc-lite/server-client 1.19.0 → 1.21.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.
@@ -1,6 +1,7 @@
1
1
  // This Source Code Form is subject to the terms of the Mozilla Public
2
2
  // License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
+ import { buildMeshesFromTables, buildMeshesFromOptimizedTables } from './parquet-tables.js';
4
5
  // Ambient types in vendor-types.d.ts cover parquet-wasm and apache-arrow APIs.
5
6
  // WASM initialization state
6
7
  let parquetInitialized = false;
@@ -122,103 +123,10 @@ export async function decodeParquetGeometry(data) {
122
123
  const meshArrow = arrow.tableFromIPC(meshTable.intoIPCStream());
123
124
  const vertexArrow = arrow.tableFromIPC(vertexTable.intoIPCStream());
124
125
  const indexArrow = arrow.tableFromIPC(indexTable.intoIPCStream());
125
- // Extract columns from mesh table
126
- const expressIds = meshArrow.getChild('express_id')?.toArray();
127
- const ifcTypes = meshArrow.getChild('ifc_type');
128
- const vertexStarts = meshArrow.getChild('vertex_start')?.toArray();
129
- const vertexCounts = meshArrow.getChild('vertex_count')?.toArray();
130
- const indexStarts = meshArrow.getChild('index_start')?.toArray();
131
- const indexCounts = meshArrow.getChild('index_count')?.toArray();
132
- const colorR = meshArrow.getChild('color_r')?.toArray();
133
- const colorG = meshArrow.getChild('color_g')?.toArray();
134
- const colorB = meshArrow.getChild('color_b')?.toArray();
135
- const colorA = meshArrow.getChild('color_a')?.toArray();
136
- // Extract columns from vertex table
137
- const posX = vertexArrow.getChild('x')?.toArray();
138
- const posY = vertexArrow.getChild('y')?.toArray();
139
- const posZ = vertexArrow.getChild('z')?.toArray();
140
- const normX = vertexArrow.getChild('nx')?.toArray();
141
- const normY = vertexArrow.getChild('ny')?.toArray();
142
- const normZ = vertexArrow.getChild('nz')?.toArray();
143
- // Extract columns from index table
144
- const idx0 = indexArrow.getChild('i0')?.toArray();
145
- const idx1 = indexArrow.getChild('i1')?.toArray();
146
- const idx2 = indexArrow.getChild('i2')?.toArray();
147
- // The per-mesh bounds check below only validates posX/normX/idx0, but the
148
- // loop also reads the sibling columns (posY/posZ, normY/normZ, idx1/idx2).
149
- // A malformed payload with a missing or short sibling would read `undefined`
150
- // → NaN positions / bad indices, so verify presence + matching lengths once
151
- // up front; the per-mesh check then transitively covers every sibling.
152
- if (!posX || !posY || !posZ || !normX || !normY || !normZ || !idx0 || !idx1 || !idx2) {
153
- throw new Error('Malformed Parquet geometry: missing required vertex/index column');
154
- }
155
- if (posX.length !== posY.length ||
156
- posX.length !== posZ.length ||
157
- normX.length !== normY.length ||
158
- normX.length !== normZ.length ||
159
- idx0.length !== idx1.length ||
160
- idx0.length !== idx2.length) {
161
- throw new Error('Malformed Parquet geometry: inconsistent parallel column lengths');
162
- }
163
- // Reconstruct MeshData array
164
- const meshCount = expressIds.length;
165
- const meshes = new Array(meshCount);
166
- for (let i = 0; i < meshCount; i++) {
167
- const vertexStart = vertexStarts[i];
168
- const vertexCount = vertexCounts[i];
169
- const indexStart = indexStarts[i];
170
- const indexCount = indexCounts[i];
171
- // Validate per-mesh ranges against the actual (untrusted) column lengths
172
- // before indexing, so an overrun fails loudly instead of silently
173
- // writing NaN positions / 0 indices into the geometry.
174
- if (vertexStart + vertexCount > posX.length ||
175
- vertexStart + vertexCount > normX.length ||
176
- indexStart % 3 !== 0 ||
177
- indexCount % 3 !== 0 ||
178
- (indexStart + indexCount) / 3 > idx0.length) {
179
- throw new Error(`Malformed Parquet geometry: mesh ${i} range out of bounds ` +
180
- `(vertexStart=${vertexStart}, vertexCount=${vertexCount}, vertices=${posX.length}; ` +
181
- `indexStart=${indexStart}, indexCount=${indexCount}, triangles=${idx0.length})`);
182
- }
183
- // Reconstruct interleaved positions from columnar format
184
- // OPTIMIZATION: Z-up to Y-up transform is now done server-side
185
- // Server already transforms: X stays same, new Y = old Z, new Z = -old Y
186
- // So we just copy directly without per-vertex transformation
187
- const positions = new Float32Array(vertexCount * 3);
188
- for (let v = 0; v < vertexCount; v++) {
189
- const srcIdx = vertexStart + v;
190
- positions[v * 3] = posX[srcIdx];
191
- positions[v * 3 + 1] = posY[srcIdx];
192
- positions[v * 3 + 2] = posZ[srcIdx];
193
- }
194
- // Reconstruct interleaved normals (also pre-transformed server-side)
195
- const normals = new Float32Array(vertexCount * 3);
196
- for (let v = 0; v < vertexCount; v++) {
197
- const srcIdx = vertexStart + v;
198
- normals[v * 3] = normX[srcIdx];
199
- normals[v * 3 + 1] = normY[srcIdx];
200
- normals[v * 3 + 2] = normZ[srcIdx];
201
- }
202
- // Reconstruct triangle indices from columnar format
203
- const triangleCount = indexCount / 3;
204
- const triangleStart = indexStart / 3;
205
- const indices = new Uint32Array(indexCount);
206
- for (let t = 0; t < triangleCount; t++) {
207
- const srcIdx = triangleStart + t;
208
- indices[t * 3] = idx0[srcIdx];
209
- indices[t * 3 + 1] = idx1[srcIdx];
210
- indices[t * 3 + 2] = idx2[srcIdx];
211
- }
212
- meshes[i] = {
213
- express_id: expressIds[i],
214
- ifc_type: ifcTypes?.get(i) ?? 'Unknown',
215
- positions,
216
- normals,
217
- indices,
218
- color: [colorR[i], colorG[i], colorB[i], colorA[i]],
219
- };
220
- }
221
- return meshes;
126
+ // Column semantics (including the additive origin / geometry_class columns of
127
+ // issue #1841) live in `parquet-tables.ts` so they are unit-testable without
128
+ // booting parquet-wasm. Everything above is wire framing.
129
+ return buildMeshesFromTables(meshArrow, vertexArrow, indexArrow);
222
130
  }
223
131
  /**
224
132
  * Check if parquet-wasm is available and can be initialized.
@@ -308,166 +216,15 @@ export async function decodeOptimizedParquetGeometry(data, vertexMultiplier = 10
308
216
  const materialArrow = arrow.tableFromIPC(materialTable.intoIPCStream());
309
217
  const vertexArrow = arrow.tableFromIPC(vertexTable.intoIPCStream());
310
218
  const indexArrow = arrow.tableFromIPC(indexTable.intoIPCStream());
311
- // Extract instance columns
312
- const entityIds = instanceArrow.getChild('entity_id')?.toArray();
313
- const ifcTypes = instanceArrow.getChild('ifc_type');
314
- const meshIndices = instanceArrow.getChild('mesh_index')?.toArray();
315
- const materialIndices = instanceArrow.getChild('material_index')?.toArray();
316
- // Extract mesh columns
317
- const meshVertexOffsets = meshArrow.getChild('vertex_offset')?.toArray();
318
- const meshVertexCounts = meshArrow.getChild('vertex_count')?.toArray();
319
- const meshIndexOffsets = meshArrow.getChild('index_offset')?.toArray();
320
- const meshIndexCounts = meshArrow.getChild('index_count')?.toArray();
321
- // Extract material columns (bytes 0-255)
322
- const matR = materialArrow.getChild('r')?.toArray();
323
- const matG = materialArrow.getChild('g')?.toArray();
324
- const matB = materialArrow.getChild('b')?.toArray();
325
- const matA = materialArrow.getChild('a')?.toArray();
326
- // Extract vertex columns (quantized integers)
327
- const vertexX = vertexArrow.getChild('x')?.toArray();
328
- const vertexY = vertexArrow.getChild('y')?.toArray();
329
- const vertexZ = vertexArrow.getChild('z')?.toArray();
330
- const normalX = hasNormals ? vertexArrow.getChild('nx')?.toArray() : null;
331
- const normalY = hasNormals ? vertexArrow.getChild('ny')?.toArray() : null;
332
- const normalZ = hasNormals ? vertexArrow.getChild('nz')?.toArray() : null;
333
- // Extract index column
334
- const indices = indexArrow.getChild('i')?.toArray();
335
- // The per-instance check below validates only vertexX/normalX/indices/matR,
336
- // but the loop also reads the sibling columns (vertexY/Z, normalY/Z, matG/B/A).
337
- // Verify presence + length parity once up front so a malformed payload with a
338
- // missing/short sibling fails loudly instead of producing NaN geometry/colors.
339
- if (!vertexX || !vertexY || !vertexZ || !indices || !matR || !matG || !matB || !matA) {
340
- throw new Error('Malformed optimized Parquet geometry: missing required column');
341
- }
342
- if (vertexX.length !== vertexY.length ||
343
- vertexX.length !== vertexZ.length ||
344
- matR.length !== matG.length ||
345
- matR.length !== matB.length ||
346
- matR.length !== matA.length ||
347
- (hasNormals &&
348
- (!normalX ||
349
- !normalY ||
350
- !normalZ ||
351
- normalX.length !== vertexX.length ||
352
- normalY.length !== vertexX.length ||
353
- normalZ.length !== vertexX.length))) {
354
- throw new Error('Malformed optimized Parquet geometry: inconsistent parallel column lengths');
355
- }
356
- // Reconstruct MeshData array from instances
357
- const instanceCount = entityIds.length;
358
- const meshes = new Array(instanceCount);
359
- const dequantMultiplier = 1.0 / vertexMultiplier;
360
- for (let i = 0; i < instanceCount; i++) {
361
- const meshIdx = meshIndices[i];
362
- const materialIdx = materialIndices[i];
363
- // Validate the untrusted cross-table indices before dereferencing, so a
364
- // bad index fails loudly instead of silently producing empty meshes /
365
- // NaN colors.
366
- if (meshIdx >= meshVertexOffsets.length || materialIdx >= matR.length) {
367
- throw new Error(`Malformed optimized Parquet geometry: instance ${i} references ` +
368
- `mesh ${meshIdx} (of ${meshVertexOffsets.length}) / ` +
369
- `material ${materialIdx} (of ${matR.length})`);
370
- }
371
- const vertexOffset = meshVertexOffsets[meshIdx];
372
- const vertexCount = meshVertexCounts[meshIdx];
373
- const indexOffset = meshIndexOffsets[meshIdx];
374
- const indexCount = meshIndexCounts[meshIdx];
375
- // Validate the resolved ranges against the actual vertex/index column
376
- // lengths (indices here are flat, not triangle-columnar — no %3 check).
377
- if (vertexOffset + vertexCount > vertexX.length ||
378
- (normalX && vertexOffset + vertexCount > normalX.length) ||
379
- indexOffset + indexCount > indices.length) {
380
- throw new Error(`Malformed optimized Parquet geometry: instance ${i} range out of bounds ` +
381
- `(meshIdx=${meshIdx}, vertexOffset=${vertexOffset}, vertexCount=${vertexCount}, ` +
382
- `vertices=${vertexX.length}; indexOffset=${indexOffset}, indexCount=${indexCount}, ` +
383
- `indices=${indices.length})`);
384
- }
385
- // Dequantize and reconstruct positions
386
- // OPTIMIZATION: Z-up to Y-up transform is now done server-side for optimized format too
387
- // Server already transforms before quantization, so we just dequantize directly
388
- const positions = new Float32Array(vertexCount * 3);
389
- for (let v = 0; v < vertexCount; v++) {
390
- const srcIdx = vertexOffset + v;
391
- positions[v * 3] = vertexX[srcIdx] * dequantMultiplier;
392
- positions[v * 3 + 1] = vertexY[srcIdx] * dequantMultiplier;
393
- positions[v * 3 + 2] = vertexZ[srcIdx] * dequantMultiplier;
394
- }
395
- // Reconstruct normals (pre-transformed server-side, or compute if not present)
396
- let normals;
397
- if (hasNormals && normalX && normalY && normalZ) {
398
- normals = new Float32Array(vertexCount * 3);
399
- for (let v = 0; v < vertexCount; v++) {
400
- const srcIdx = vertexOffset + v;
401
- normals[v * 3] = normalX[srcIdx];
402
- normals[v * 3 + 1] = normalY[srcIdx];
403
- normals[v * 3 + 2] = normalZ[srcIdx];
404
- }
405
- }
406
- else {
407
- // Compute flat normals from triangle faces
408
- normals = computeFlatNormals(positions, indices.slice(indexOffset, indexOffset + indexCount));
409
- }
410
- // Reconstruct indices (relative to this mesh's vertices)
411
- const meshIndicesArray = new Uint32Array(indexCount);
412
- for (let j = 0; j < indexCount; j++) {
413
- meshIndicesArray[j] = indices[indexOffset + j];
414
- }
415
- // Convert byte colors to float [0-1]
416
- meshes[i] = {
417
- express_id: entityIds[i],
418
- ifc_type: ifcTypes?.get(i) ?? 'Unknown',
419
- positions,
420
- normals,
421
- indices: meshIndicesArray,
422
- color: [matR[materialIdx] / 255, matG[materialIdx] / 255, matB[materialIdx] / 255, matA[materialIdx] / 255],
423
- };
424
- }
425
- return meshes;
426
- }
427
- /**
428
- * Compute flat normals for a mesh from positions and indices.
429
- * Each triangle face gets a uniform normal.
430
- */
431
- function computeFlatNormals(positions, indices) {
432
- const vertexCount = positions.length / 3;
433
- const normals = new Float32Array(vertexCount * 3).fill(0);
434
- const triangleCount = indices.length / 3;
435
- for (let t = 0; t < triangleCount; t++) {
436
- const i0 = indices[t * 3];
437
- const i1 = indices[t * 3 + 1];
438
- const i2 = indices[t * 3 + 2];
439
- // Get triangle vertices
440
- const ax = positions[i0 * 3], ay = positions[i0 * 3 + 1], az = positions[i0 * 3 + 2];
441
- const bx = positions[i1 * 3], by = positions[i1 * 3 + 1], bz = positions[i1 * 3 + 2];
442
- const cx = positions[i2 * 3], cy = positions[i2 * 3 + 1], cz = positions[i2 * 3 + 2];
443
- // Compute edge vectors
444
- const e1x = bx - ax, e1y = by - ay, e1z = bz - az;
445
- const e2x = cx - ax, e2y = cy - ay, e2z = cz - az;
446
- // Cross product
447
- const nx = e1y * e2z - e1z * e2y;
448
- const ny = e1z * e2x - e1x * e2z;
449
- const nz = e1x * e2y - e1y * e2x;
450
- // Accumulate normals (will normalize later)
451
- normals[i0 * 3] += nx;
452
- normals[i0 * 3 + 1] += ny;
453
- normals[i0 * 3 + 2] += nz;
454
- normals[i1 * 3] += nx;
455
- normals[i1 * 3 + 1] += ny;
456
- normals[i1 * 3 + 2] += nz;
457
- normals[i2 * 3] += nx;
458
- normals[i2 * 3 + 1] += ny;
459
- normals[i2 * 3 + 2] += nz;
460
- }
461
- // Normalize
462
- for (let v = 0; v < vertexCount; v++) {
463
- const x = normals[v * 3], y = normals[v * 3 + 1], z = normals[v * 3 + 2];
464
- const len = Math.sqrt(x * x + y * y + z * z);
465
- if (len > 0) {
466
- normals[v * 3] /= len;
467
- normals[v * 3 + 1] /= len;
468
- normals[v * 3 + 2] /= len;
469
- }
470
- }
471
- return normals;
219
+ // As above: the column contract lives in `parquet-tables.ts`.
220
+ return buildMeshesFromOptimizedTables({
221
+ instanceArrow,
222
+ meshArrow,
223
+ materialArrow,
224
+ vertexArrow,
225
+ indexArrow,
226
+ hasNormals,
227
+ vertexMultiplier,
228
+ });
472
229
  }
473
230
  //# sourceMappingURL=parquet-decoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parquet-decoder.js","sourceRoot":"","sources":["../src/parquet-decoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parquet-decoder.js","sourceRoot":"","sources":["../src/parquet-decoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Arrow table -> MeshData reconstruction (the pure half of the Parquet decoder).
3
+ *
4
+ * Split out of `parquet-decoder.ts` so the column contract can be tested without
5
+ * booting parquet-wasm: `parquet-decoder.ts` keeps the wire framing and the WASM
6
+ * reader, this file keeps the part that decides what each column MEANS.
7
+ *
8
+ * That distinction is the whole of issue #1841 — the decoder silently dropped
9
+ * `origin` / `geometry_class`, and nothing failed because no test could reach
10
+ * this logic. See `parquet-tables.test.ts`.
11
+ */
12
+ import type { MeshData } from './types.js';
13
+ /**
14
+ * Structural view of the bits of `apache-arrow`'s `Table` this module uses.
15
+ * Deliberately minimal: it keeps the real Arrow types out of the signature
16
+ * (their browser export map hides the `.d.ts` from TS's strict resolver) and it
17
+ * lets tests pass plain objects.
18
+ */
19
+ export interface ArrowColumnLike {
20
+ toArray(): ArrayLike<number>;
21
+ get(index: number): unknown;
22
+ }
23
+ export interface ArrowTableLike {
24
+ getChild(name: string): ArrowColumnLike | null | undefined;
25
+ }
26
+ /**
27
+ * Rebuild `MeshData[]` from the standard (non-instanced) three-table layout.
28
+ *
29
+ * Positions/normals are already Y-up metres — the server applies the axis swap
30
+ * once, in `services::axis` (issue #1841), so every transport agrees.
31
+ */
32
+ export declare function buildMeshesFromTables(meshArrow: ArrowTableLike, vertexArrow: ArrowTableLike, indexArrow: ArrowTableLike): MeshData[];
33
+ /** Tables + header flags of the optimized (instanced, quantized) layout. */
34
+ export interface OptimizedTables {
35
+ instanceArrow: ArrowTableLike;
36
+ meshArrow: ArrowTableLike;
37
+ materialArrow: ArrowTableLike;
38
+ vertexArrow: ArrowTableLike;
39
+ indexArrow: ArrowTableLike;
40
+ /** From the payload header flags: whether the vertex table carries normals. */
41
+ hasNormals: boolean;
42
+ /** Quantization divisor: metres = quantized / vertexMultiplier. */
43
+ vertexMultiplier: number;
44
+ }
45
+ /**
46
+ * Rebuild `MeshData[]` from the optimized instanced layout.
47
+ *
48
+ * Geometry is deduplicated: many instances share one template mesh, so the
49
+ * per-INSTANCE `origin` is the only thing that places each occurrence. Dropping
50
+ * it renders every occurrence at the template's coordinates — literally the
51
+ * "N slabs collapse to one" symptom of issue #1841.
52
+ */
53
+ export declare function buildMeshesFromOptimizedTables(tables: OptimizedTables): MeshData[];
54
+ /**
55
+ * Compute flat normals for a mesh from positions and indices.
56
+ * Each triangle face gets a uniform normal.
57
+ */
58
+ export declare function computeFlatNormals(positions: Float32Array, indices: number[] | Uint32Array): Float32Array;
59
+ //# sourceMappingURL=parquet-tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parquet-tables.d.ts","sourceRoot":"","sources":["../src/parquet-tables.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;CAC5D;AAwDD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,cAAc,EACzB,WAAW,EAAE,cAAc,EAC3B,UAAU,EAAE,cAAc,GACzB,QAAQ,EAAE,CAiJZ;AAED,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,cAAc,CAAC;IAC9B,SAAS,EAAE,cAAc,CAAC;IAC1B,aAAa,EAAE,cAAc,CAAC;IAC9B,WAAW,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC;IAC3B,+EAA+E;IAC/E,UAAU,EAAE,OAAO,CAAC;IACpB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,EAAE,CAwLlF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,GAC9B,YAAY,CA0Cd"}