@ifc-lite/cache 3.2.0 → 3.4.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.
Files changed (73) hide show
  1. package/README.md +35 -0
  2. package/dist/glb-accessor.d.ts +6 -0
  3. package/dist/glb-accessor.d.ts.map +1 -0
  4. package/dist/glb-accessor.js +157 -0
  5. package/dist/glb-accessor.js.map +1 -0
  6. package/dist/glb-images.d.ts +6 -0
  7. package/dist/glb-images.d.ts.map +1 -0
  8. package/dist/glb-images.js +91 -0
  9. package/dist/glb-images.js.map +1 -0
  10. package/dist/glb-transform.d.ts +15 -0
  11. package/dist/glb-transform.d.ts.map +1 -0
  12. package/dist/glb-transform.js +59 -0
  13. package/dist/glb-transform.js.map +1 -0
  14. package/dist/glb-types.d.ts +111 -0
  15. package/dist/glb-types.d.ts.map +1 -0
  16. package/dist/glb-types.js +5 -0
  17. package/dist/glb-types.js.map +1 -0
  18. package/dist/glb.d.ts +1 -71
  19. package/dist/glb.d.ts.map +1 -1
  20. package/dist/glb.js +61 -192
  21. package/dist/glb.js.map +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/sections/appearance-provenance.d.ts +11 -0
  27. package/dist/sections/appearance-provenance.d.ts.map +1 -0
  28. package/dist/sections/appearance-provenance.js +113 -0
  29. package/dist/sections/appearance-provenance.js.map +1 -0
  30. package/dist/sections/entity-index-columns.d.ts +4 -0
  31. package/dist/sections/entity-index-columns.d.ts.map +1 -0
  32. package/dist/sections/entity-index-columns.js +41 -0
  33. package/dist/sections/entity-index-columns.js.map +1 -0
  34. package/dist/sections/entity-index.d.ts.map +1 -1
  35. package/dist/sections/entity-index.js +17 -9
  36. package/dist/sections/entity-index.js.map +1 -1
  37. package/dist/sections/geometry-chunks.d.ts +5 -32
  38. package/dist/sections/geometry-chunks.d.ts.map +1 -1
  39. package/dist/sections/geometry-chunks.js +64 -29
  40. package/dist/sections/geometry-chunks.js.map +1 -1
  41. package/dist/sections/geometry-codec.d.ts +8 -0
  42. package/dist/sections/geometry-codec.d.ts.map +1 -0
  43. package/dist/sections/geometry-codec.js +19 -0
  44. package/dist/sections/geometry-codec.js.map +1 -0
  45. package/dist/sections/geometry.d.ts +6 -5
  46. package/dist/sections/geometry.d.ts.map +1 -1
  47. package/dist/sections/geometry.js +12 -7
  48. package/dist/sections/geometry.js.map +1 -1
  49. package/dist/sections/relationships.js +2 -0
  50. package/dist/sections/relationships.js.map +1 -1
  51. package/dist/types.d.ts +20 -2
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/types.js +4 -1
  54. package/dist/types.js.map +1 -1
  55. package/dist/workers/geometry-compression-client.d.ts +27 -0
  56. package/dist/workers/geometry-compression-client.d.ts.map +1 -0
  57. package/dist/workers/geometry-compression-client.js +84 -0
  58. package/dist/workers/geometry-compression-client.js.map +1 -0
  59. package/dist/workers/geometry-compression-handler.d.ts +4 -0
  60. package/dist/workers/geometry-compression-handler.d.ts.map +1 -0
  61. package/dist/workers/geometry-compression-handler.js +18 -0
  62. package/dist/workers/geometry-compression-handler.js.map +1 -0
  63. package/dist/workers/geometry-compression-protocol.d.ts +14 -0
  64. package/dist/workers/geometry-compression-protocol.d.ts.map +1 -0
  65. package/dist/workers/geometry-compression-protocol.js +10 -0
  66. package/dist/workers/geometry-compression-protocol.js.map +1 -0
  67. package/dist/workers/geometry-compression.worker.d.ts +2 -0
  68. package/dist/workers/geometry-compression.worker.d.ts.map +1 -0
  69. package/dist/workers/geometry-compression.worker.js +13 -0
  70. package/dist/workers/geometry-compression.worker.js.map +1 -0
  71. package/dist/writer.js +1 -1
  72. package/dist/writer.js.map +1 -1
  73. package/package.json +4 -4
package/dist/glb.d.ts CHANGED
@@ -16,76 +16,7 @@ export interface GLBMapping {
16
16
  expressIdToMesh: Map<number, number>;
17
17
  nodeToExpressId: Map<number, number>;
18
18
  }
19
- interface GLTFDocument {
20
- asset: {
21
- version: string;
22
- generator?: string;
23
- };
24
- scene?: number;
25
- scenes?: Array<{
26
- nodes?: number[];
27
- }>;
28
- nodes?: GLTFNode[];
29
- meshes?: GLTFMesh[];
30
- materials?: GLTFMaterial[];
31
- accessors?: GLTFAccessor[];
32
- bufferViews?: GLTFBufferView[];
33
- buffers?: GLTFBuffer[];
34
- }
35
- interface GLTFNode {
36
- mesh?: number;
37
- name?: string;
38
- extras?: {
39
- expressId?: number;
40
- };
41
- children?: number[];
42
- /** Node-local translation (xyz). The from-meshes exporter places all geometry
43
- * under a single translated root node, so this is composed down the hierarchy. */
44
- translation?: number[];
45
- /** Node-local column-major 4x4 (glTF convention). The from-bytes instanced
46
- * exporter places each shared-template occurrence with a node MATRIX (rotation +
47
- * translation); mutually exclusive with `translation` per the glTF spec. */
48
- matrix?: number[];
49
- }
50
- interface GLTFMesh {
51
- primitives: GLTFPrimitive[];
52
- name?: string;
53
- }
54
- interface GLTFPrimitive {
55
- attributes: {
56
- POSITION: number;
57
- NORMAL?: number;
58
- };
59
- indices?: number;
60
- mode?: number;
61
- material?: number;
62
- }
63
- interface GLTFMaterial {
64
- pbrMetallicRoughness?: {
65
- baseColorFactor?: [number, number, number, number] | number[];
66
- };
67
- alphaMode?: 'OPAQUE' | 'MASK' | 'BLEND';
68
- }
69
- interface GLTFAccessor {
70
- bufferView: number;
71
- byteOffset?: number;
72
- componentType: number;
73
- count: number;
74
- type: 'SCALAR' | 'VEC2' | 'VEC3' | 'VEC4' | 'MAT2' | 'MAT3' | 'MAT4';
75
- min?: number[];
76
- max?: number[];
77
- }
78
- interface GLTFBufferView {
79
- buffer: number;
80
- byteOffset?: number;
81
- byteLength: number;
82
- byteStride?: number;
83
- target?: number;
84
- }
85
- interface GLTFBuffer {
86
- byteLength: number;
87
- uri?: string;
88
- }
19
+ import type { GLTFDocument } from './glb-types.js';
89
20
  /**
90
21
  * Parse a GLB (binary glTF) file
91
22
  *
@@ -118,5 +49,4 @@ export declare function parseGLBToMeshData(gltf: GLTFDocument, bin: Uint8Array):
118
49
  * @returns Array of MeshData objects
119
50
  */
120
51
  export declare function loadGLBToMeshData(data: Uint8Array): MeshData[];
121
- export {};
122
52
  //# sourceMappingURL=glb.d.ts.map
package/dist/glb.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAYnD,2BAA2B;AAC3B,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;CACxB;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAC7D;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CA8DpD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAwBhE;AAGD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,GAAG,QAAQ,EAAE,CAgMlF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAM9D"}
package/dist/glb.js CHANGED
@@ -2,19 +2,14 @@
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
4
  import { safeUtf8Decode } from '@ifc-lite/data';
5
+ import { primitiveTexture, validateGLBImages } from './glb-images.js';
5
6
  import { linearToSrgb } from './glb-color.js';
6
7
  // glTF 2.0 constants
7
8
  const GLB_MAGIC = 0x46546c67; // 'glTF'
8
9
  const GLB_VERSION = 2;
9
10
  const CHUNK_TYPE_JSON = 0x4e4f534a; // 'JSON'
10
11
  const CHUNK_TYPE_BIN = 0x004e4942; // 'BIN\0'
11
- // Component types
12
- const COMPONENT_BYTE = 5120;
13
- const COMPONENT_UNSIGNED_BYTE = 5121;
14
- const COMPONENT_SHORT = 5122;
15
- const COMPONENT_UNSIGNED_SHORT = 5123;
16
- const COMPONENT_UNSIGNED_INT = 5125;
17
- const COMPONENT_FLOAT = 5126;
12
+ import { readAccessorData } from './glb-accessor.js';
18
13
  /**
19
14
  * Parse a GLB (binary glTF) file
20
15
  *
@@ -102,175 +97,7 @@ export function extractGLBMapping(gltf) {
102
97
  }
103
98
  return { expressIdToNode, expressIdToMesh, nodeToExpressId };
104
99
  }
105
- /**
106
- * Get the byte size for a glTF component type
107
- */
108
- function getComponentSize(componentType) {
109
- switch (componentType) {
110
- case COMPONENT_BYTE:
111
- case COMPONENT_UNSIGNED_BYTE:
112
- return 1;
113
- case COMPONENT_SHORT:
114
- case COMPONENT_UNSIGNED_SHORT:
115
- return 2;
116
- case COMPONENT_UNSIGNED_INT:
117
- case COMPONENT_FLOAT:
118
- return 4;
119
- default:
120
- throw new Error(`Unknown component type: ${componentType}`);
121
- }
122
- }
123
- /**
124
- * Get the number of components for an accessor type
125
- */
126
- function getComponentCount(type) {
127
- switch (type) {
128
- case 'SCALAR':
129
- return 1;
130
- case 'VEC2':
131
- return 2;
132
- case 'VEC3':
133
- return 3;
134
- case 'VEC4':
135
- return 4;
136
- case 'MAT2':
137
- return 4;
138
- case 'MAT3':
139
- return 9;
140
- case 'MAT4':
141
- return 16;
142
- default:
143
- throw new Error(`Unknown accessor type: ${type}`);
144
- }
145
- }
146
- /**
147
- * Read accessor data as a typed array
148
- */
149
- function readAccessorData(gltf, bin, accessorIdx) {
150
- const accessor = gltf.accessors?.[accessorIdx];
151
- if (!accessor) {
152
- throw new Error(`Accessor ${accessorIdx} not found`);
153
- }
154
- const bufferView = gltf.bufferViews?.[accessor.bufferView];
155
- if (!bufferView) {
156
- throw new Error(`BufferView ${accessor.bufferView} not found`);
157
- }
158
- const componentSize = getComponentSize(accessor.componentType);
159
- const componentCount = getComponentCount(accessor.type);
160
- const elementSize = componentSize * componentCount;
161
- const byteStride = bufferView.byteStride ?? elementSize;
162
- const bufferOffset = (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0);
163
- // `accessor.count` comes straight from the (untrusted) GLB JSON chunk and
164
- // is REQUIRED by the glTF spec, but nothing here enforced that at runtime:
165
- // a missing/non-numeric `count` makes it `undefined`/NaN, and `NaN * x` is
166
- // NaN. Every arithmetic bounds comparison below (`< 0`, `> bin.byteLength`)
167
- // is false against NaN, so the bounds check was silently bypassed rather
168
- // than rejecting the malformed accessor. Control then fell through to a
169
- // typed-array constructor built from that same NaN count, which coerces to
170
- // an element count of 0 (ToIndex(NaN) === 0) — producing a silently EMPTY
171
- // mesh reported as a successful import instead of throwing.
172
- if (!Number.isInteger(accessor.count) || accessor.count < 0) {
173
- throw new Error(`GLB: accessor ${accessorIdx} has an invalid count: ${accessor.count}`);
174
- }
175
- // Bounds-check the full byte range this accessor claims against the actual
176
- // BIN chunk BEFORE slicing/constructing anything. `accessor.count` /
177
- // `byteOffset` come straight from the (untrusted) GLB JSON chunk; without
178
- // this, `bin.slice()` below silently CLAMPS on a truncated/malformed BIN
179
- // (fewer bytes than asked), and the typed-array constructor that follows
180
- // still requests the ORIGINALLY declared element count against that
181
- // shorter buffer — a raw `RangeError: Invalid typed array length` (or
182
- // "range consisting of offset and length are out of bounds", depending on
183
- // engine) escapes instead of a diagnosable domain error.
184
- const neededBytes = byteStride === elementSize
185
- ? accessor.count * elementSize
186
- : accessor.count > 0
187
- ? (accessor.count - 1) * byteStride + elementSize
188
- : 0;
189
- if (bufferOffset < 0 || neededBytes < 0 || bufferOffset + neededBytes > bin.byteLength) {
190
- throw new Error(`GLB: accessor ${accessorIdx} reads bytes [${bufferOffset}, ${bufferOffset + neededBytes}) ` +
191
- `but the BIN chunk is only ${bin.byteLength} bytes`);
192
- }
193
- // If data is tightly packed, we can use a view directly
194
- if (byteStride === elementSize) {
195
- const byteLength = accessor.count * elementSize;
196
- const slice = bin.slice(bufferOffset, bufferOffset + byteLength);
197
- switch (accessor.componentType) {
198
- case COMPONENT_FLOAT:
199
- return new Float32Array(slice.buffer, slice.byteOffset, accessor.count * componentCount);
200
- case COMPONENT_UNSIGNED_INT:
201
- return new Uint32Array(slice.buffer, slice.byteOffset, accessor.count * componentCount);
202
- case COMPONENT_UNSIGNED_SHORT:
203
- return new Uint16Array(slice.buffer, slice.byteOffset, accessor.count * componentCount);
204
- case COMPONENT_UNSIGNED_BYTE:
205
- return slice;
206
- default:
207
- throw new Error(`Unsupported component type for reading: ${accessor.componentType}`);
208
- }
209
- }
210
- // Handle strided data
211
- const result = accessor.componentType === COMPONENT_FLOAT
212
- ? new Float32Array(accessor.count * componentCount)
213
- : accessor.componentType === COMPONENT_UNSIGNED_INT
214
- ? new Uint32Array(accessor.count * componentCount)
215
- : accessor.componentType === COMPONENT_UNSIGNED_SHORT
216
- ? new Uint16Array(accessor.count * componentCount)
217
- : new Uint8Array(accessor.count * componentCount);
218
- const dataView = new DataView(bin.buffer, bin.byteOffset, bin.byteLength);
219
- for (let i = 0; i < accessor.count; i++) {
220
- const elementOffset = bufferOffset + i * byteStride;
221
- for (let c = 0; c < componentCount; c++) {
222
- const byteOffset = elementOffset + c * componentSize;
223
- let value;
224
- switch (accessor.componentType) {
225
- case COMPONENT_FLOAT:
226
- value = dataView.getFloat32(byteOffset, true);
227
- break;
228
- case COMPONENT_UNSIGNED_INT:
229
- value = dataView.getUint32(byteOffset, true);
230
- break;
231
- case COMPONENT_UNSIGNED_SHORT:
232
- value = dataView.getUint16(byteOffset, true);
233
- break;
234
- case COMPONENT_UNSIGNED_BYTE:
235
- value = dataView.getUint8(byteOffset);
236
- break;
237
- default:
238
- throw new Error(`Unsupported component type: ${accessor.componentType}`);
239
- }
240
- result[i * componentCount + c] = value;
241
- }
242
- }
243
- return result;
244
- }
245
- const MAT4_IDENTITY = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
246
- /** Column-major 4x4 multiply `a * b`. */
247
- function mat4Mul(a, b) {
248
- const out = new Array(16);
249
- for (let col = 0; col < 4; col++) {
250
- for (let row = 0; row < 4; row++) {
251
- let s = 0;
252
- for (let k = 0; k < 4; k++)
253
- s += a[k * 4 + row] * b[col * 4 + k];
254
- out[col * 4 + row] = s;
255
- }
256
- }
257
- return out;
258
- }
259
- /** A node's local transform: its `matrix` (column-major) or a translation matrix. */
260
- function nodeLocalMat4(nd) {
261
- if (Array.isArray(nd.matrix) && nd.matrix.length === 16)
262
- return nd.matrix;
263
- const t = nd.translation;
264
- return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, t?.[0] ?? 0, t?.[1] ?? 0, t?.[2] ?? 0, 1];
265
- }
266
- /** True when a 4x4's upper-left 3x3 is the identity (within epsilon) — i.e. the
267
- * node carries pure translation, so vertices need no rotation/scale baking. */
268
- function linearIsIdentity(m) {
269
- const e = 1e-6;
270
- return (Math.abs(m[0] - 1) < e && Math.abs(m[1]) < e && Math.abs(m[2]) < e &&
271
- Math.abs(m[4]) < e && Math.abs(m[5] - 1) < e && Math.abs(m[6]) < e &&
272
- Math.abs(m[8]) < e && Math.abs(m[9]) < e && Math.abs(m[10] - 1) < e);
273
- }
100
+ import { MAT4_IDENTITY, mat4Mul, nodeLocalMat4, linearIsIdentity, normalMatrix, mirrored } from './glb-transform.js';
274
101
  /**
275
102
  * Parse GLB geometry into MeshData format
276
103
  *
@@ -280,6 +107,15 @@ function linearIsIdentity(m) {
280
107
  */
281
108
  export function parseGLBToMeshData(gltf, bin) {
282
109
  const meshes = [];
110
+ for (const extension of gltf.extensionsRequired ?? []) {
111
+ if (extension === 'KHR_draco_mesh_compression')
112
+ throw new Error('GLB: Draco-compressed geometry is not yet supported; export an uncompressed GLB or glTF bundle.');
113
+ if (extension === 'KHR_materials_pbrSpecularGlossiness')
114
+ throw new Error('GLB: required specular-glossiness materials do not expose a supported base-colour texture.');
115
+ if (!extension.startsWith('KHR_materials_') && extension !== 'KHR_texture_transform')
116
+ throw new Error(`GLB: unsupported required extension ${extension}`);
117
+ }
118
+ validateGLBImages(gltf, bin);
283
119
  const mapping = extractGLBMapping(gltf);
284
120
  if (!gltf.nodes || !gltf.meshes) {
285
121
  return meshes;
@@ -297,14 +133,20 @@ export function parseGLBToMeshData(gltf, bin) {
297
133
  const seen = new Set();
298
134
  const roots = gltf.scenes?.[gltf.scene ?? 0]?.nodes ?? gltf.nodes.map((_, i) => i);
299
135
  const walk = (idx, parent) => {
300
- const nd = gltf.nodes?.[idx];
301
- if (!nd || seen.has(idx))
302
- return; // guard against malformed cycles
303
- seen.add(idx);
304
- const world = mat4Mul(parent, nodeLocalMat4(nd));
305
- nodeWorldM.set(idx, world);
306
- for (const c of nd.children ?? [])
307
- walk(c, world);
136
+ const pending = [[idx, parent]];
137
+ while (pending.length) {
138
+ const [idx, parent] = pending.pop();
139
+ const nd = gltf.nodes?.[idx];
140
+ if (!nd || seen.has(idx))
141
+ continue; // finite iterative walk
142
+ if (nd.skin !== undefined)
143
+ throw new Error('GLB: skinned capture meshes are not supported');
144
+ seen.add(idx);
145
+ const world = mat4Mul(parent, nodeLocalMat4(nd));
146
+ nodeWorldM.set(idx, world);
147
+ for (const c of nd.children ?? [])
148
+ pending.push([c, world]);
149
+ }
308
150
  };
309
151
  for (const r of roots)
310
152
  walk(r, MAT4_IDENTITY);
@@ -323,7 +165,7 @@ export function parseGLBToMeshData(gltf, bin) {
323
165
  const material = gltf.materials?.[materialIdx];
324
166
  const factor = material?.pbrMetallicRoughness?.baseColorFactor;
325
167
  if (!Array.isArray(factor) || factor.length < 3)
326
- return [...DEFAULT_COLOR];
168
+ return material?.pbrMetallicRoughness?.baseColorTexture ? [1, 1, 1, 1] : [...DEFAULT_COLOR];
327
169
  const r = factor[0], g = factor[1], b = factor[2], a = factor.length >= 4 ? factor[3] : 1.0;
328
170
  if (typeof r !== 'number' || !Number.isFinite(r) ||
329
171
  typeof g !== 'number' || !Number.isFinite(g) ||
@@ -331,7 +173,7 @@ export function parseGLBToMeshData(gltf, bin) {
331
173
  typeof a !== 'number' || !Number.isFinite(a)) {
332
174
  return [...DEFAULT_COLOR];
333
175
  }
334
- return [linearToSrgb(r), linearToSrgb(g), linearToSrgb(b), a];
176
+ return [linearToSrgb(r), linearToSrgb(g), linearToSrgb(b), material?.pbrMetallicRoughness?.baseColorTexture ? 1 : a];
335
177
  };
336
178
  for (let nodeIdx = 0; nodeIdx < gltf.nodes.length; nodeIdx++) {
337
179
  const node = gltf.nodes[nodeIdx];
@@ -353,14 +195,14 @@ export function parseGLBToMeshData(gltf, bin) {
353
195
  if (posAccessorIdx === undefined)
354
196
  continue;
355
197
  // Read position data
356
- const positions = readAccessorData(gltf, bin, posAccessorIdx);
198
+ const positions = readAccessorData(gltf, bin, posAccessorIdx, 'VEC3');
357
199
  if (!(positions instanceof Float32Array)) {
358
200
  throw new Error('Position data must be Float32');
359
201
  }
360
202
  // Read normal data (optional, generate if missing)
361
203
  let normals;
362
204
  if (normAccessorIdx !== undefined) {
363
- const normData = readAccessorData(gltf, bin, normAccessorIdx);
205
+ const normData = readAccessorData(gltf, bin, normAccessorIdx, 'VEC3');
364
206
  if (!(normData instanceof Float32Array)) {
365
207
  throw new Error('Normal data must be Float32');
366
208
  }
@@ -373,7 +215,7 @@ export function parseGLBToMeshData(gltf, bin) {
373
215
  // Read index data (optional for non-indexed geometry)
374
216
  let indices;
375
217
  if (idxAccessorIdx !== undefined) {
376
- const idxData = readAccessorData(gltf, bin, idxAccessorIdx);
218
+ const idxData = readAccessorData(gltf, bin, idxAccessorIdx, 'SCALAR');
377
219
  if (idxData instanceof Float32Array) {
378
220
  throw new Error('Index data cannot be Float32');
379
221
  }
@@ -388,6 +230,26 @@ export function parseGLBToMeshData(gltf, bin) {
388
230
  indices[i] = i;
389
231
  }
390
232
  }
233
+ if (positions.length % 3 || indices.length % 3 || normals.length !== positions.length || !positions.every(Number.isFinite) || !normals.every(Number.isFinite) || indices.some(index => index >= positions.length / 3))
234
+ throw new Error('GLB: invalid triangle geometry');
235
+ if (normAccessorIdx === undefined) {
236
+ for (let i = 0; i < indices.length; i += 3) {
237
+ const a = indices[i] * 3, b = indices[i + 1] * 3, c = indices[i + 2] * 3;
238
+ const ux = positions[b] - positions[a], uy = positions[b + 1] - positions[a + 1], uz = positions[b + 2] - positions[a + 2];
239
+ const vx = positions[c] - positions[a], vy = positions[c + 1] - positions[a + 1], vz = positions[c + 2] - positions[a + 2];
240
+ for (const index of [a, b, c]) {
241
+ normals[index] += uy * vz - uz * vy;
242
+ normals[index + 1] += uz * vx - ux * vz;
243
+ normals[index + 2] += ux * vy - uy * vx;
244
+ }
245
+ }
246
+ for (let i = 0; i < normals.length; i += 3) {
247
+ const length = Math.hypot(normals[i], normals[i + 1], normals[i + 2]) || 1;
248
+ normals[i] /= length;
249
+ normals[i + 1] /= length;
250
+ normals[i + 2] /= length;
251
+ }
252
+ }
391
253
  // Apply the node's composed world transform. The TRANSLATION rides each mesh
392
254
  // as `MeshData.origin` (world = origin + position) and is kept OUT of the f32
393
255
  // vertex buffer: the exporter emits scene-centre-relative vertices precisely so
@@ -409,20 +271,27 @@ export function parseGLBToMeshData(gltf, bin) {
409
271
  outPositions[i + 1] = m[1] * x + m[5] * y + m[9] * z;
410
272
  outPositions[i + 2] = m[2] * x + m[6] * y + m[10] * z;
411
273
  }
274
+ const n = normalMatrix(m);
412
275
  outNormals = new Float32Array(normals.length);
413
276
  for (let i = 0; i + 2 < normals.length; i += 3) {
414
277
  const x = normals[i], y = normals[i + 1], z = normals[i + 2];
415
- const nx = m[0] * x + m[4] * y + m[8] * z;
416
- const ny = m[1] * x + m[5] * y + m[9] * z;
417
- const nz = m[2] * x + m[6] * y + m[10] * z;
278
+ const nx = n[0] * x + n[3] * y + n[6] * z;
279
+ const ny = n[1] * x + n[4] * y + n[7] * z;
280
+ const nz = n[2] * x + n[5] * y + n[8] * z;
418
281
  const len = Math.hypot(nx, ny, nz) || 1;
419
282
  outNormals[i] = nx / len;
420
283
  outNormals[i + 1] = ny / len;
421
284
  outNormals[i + 2] = nz / len;
422
285
  }
423
286
  }
287
+ if (mirrored(m)) {
288
+ for (let i = 0; i < indices.length; i += 3)
289
+ [indices[i + 1], indices[i + 2]] = [indices[i + 2], indices[i + 1]];
290
+ }
424
291
  const origin = t[0] !== 0 || t[1] !== 0 || t[2] !== 0 ? t : undefined;
292
+ const texture = primitiveTexture(gltf, bin, primitive, positions.length / 3);
425
293
  meshes.push({
294
+ ...texture,
426
295
  expressId,
427
296
  positions: outPositions,
428
297
  normals: outNormals,
package/dist/glb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"glb.js","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glb.js","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -43,4 +43,5 @@ export { xxhash64, xxhash64Hex } from './utils/hash.js';
43
43
  export { BufferWriter, BufferReader } from './utils/buffer-utils.js';
44
44
  export { parseGLB, extractGLBMapping, parseGLBToMeshData, loadGLBToMeshData, } from './glb.js';
45
45
  export type { ParsedGLB, GLBMapping } from './glb.js';
46
+ export { parseGLBImageResources } from './glb-images.js';
46
47
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EACL,KAAK,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,YAAY,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGrE,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EACL,KAAK,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,YAAY,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGrE,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -45,4 +45,5 @@ export { xxhash64, xxhash64Hex } from './utils/hash.js';
45
45
  export { BufferWriter, BufferReader } from './utils/buffer-utils.js';
46
46
  // GLB parser
47
47
  export { parseGLB, extractGLBMapping, parseGLBToMeshData, loadGLBToMeshData, } from './glb.js';
48
+ export { parseGLBImageResources } from './glb-images.js';
48
49
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EACL,KAAK,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,4EAA4E;AAC5E,mDAAmD;AACnD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAiBrE,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAErE,aAAa;AACb,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EACL,KAAK,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,4EAA4E;AAC5E,mDAAmD;AACnD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAiBrE,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAErE,aAAa;AACb,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { MeshData } from '@ifc-lite/geometry';
2
+ import { BufferReader, BufferWriter } from '../utils/buffer-utils.js';
3
+ export type AppearanceSourcePool = ReadonlyMap<Uint32Array, number>;
4
+ export declare function provenanceByteLength(mesh: MeshData, pool?: AppearanceSourcePool): number;
5
+ export declare function writeProvenance(writer: BufferWriter, mesh: MeshData, pool?: AppearanceSourcePool): void;
6
+ export declare function readProvenance(reader: BufferReader, mesh: MeshData, pool?: readonly Uint32Array[]): void;
7
+ /** Deduplicate by existing source-array identity across every spatial chunk. */
8
+ export declare function collectSourcePool(meshes: readonly MeshData[]): Map<Uint32Array, number>;
9
+ export declare function writeSourcePool(writer: BufferWriter, pool: AppearanceSourcePool): void;
10
+ export declare function readSourcePool(reader: BufferReader, meshCount: number, end: number): Uint32Array[];
11
+ //# sourceMappingURL=appearance-provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance-provenance.d.ts","sourceRoot":"","sources":["../../src/sections/appearance-provenance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAItE,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AA0BpE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAIxF;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAOvG;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,SAAS,WAAW,EAAO,GAAG,IAAI,CAmB5G;AACD,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAQvF;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAGtF;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAUlG"}