@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.
- package/dist/data-model-decoder.d.ts +64 -1
- package/dist/data-model-decoder.d.ts.map +1 -1
- package/dist/data-model-decoder.js +182 -16
- package/dist/data-model-decoder.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/parquet-decoder.d.ts.map +1 -1
- package/dist/parquet-decoder.js +15 -258
- package/dist/parquet-decoder.js.map +1 -1
- package/dist/parquet-tables.d.ts +59 -0
- package/dist/parquet-tables.d.ts.map +1 -0
- package/dist/parquet-tables.js +360 -0
- package/dist/parquet-tables.js.map +1 -0
- package/dist/types.d.ts +22 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -3
package/dist/parquet-decoder.js
CHANGED
|
@@ -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
|
-
//
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
//
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
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"}
|