@ifc-lite/renderer 2.0.0 → 2.2.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.
Files changed (177) hide show
  1. package/README.md +10 -0
  2. package/dist/appearance-batch-cohorts.d.ts +33 -0
  3. package/dist/appearance-batch-cohorts.d.ts.map +1 -0
  4. package/dist/appearance-batch-cohorts.js +126 -0
  5. package/dist/appearance-batch-cohorts.js.map +1 -0
  6. package/dist/appearance-companions.d.ts +30 -0
  7. package/dist/appearance-companions.d.ts.map +1 -0
  8. package/dist/appearance-companions.js +138 -0
  9. package/dist/appearance-companions.js.map +1 -0
  10. package/dist/appearance-preview.d.ts +93 -0
  11. package/dist/appearance-preview.d.ts.map +1 -0
  12. package/dist/appearance-preview.js +246 -0
  13. package/dist/appearance-preview.js.map +1 -0
  14. package/dist/appearance-uvs.d.ts +10 -0
  15. package/dist/appearance-uvs.d.ts.map +1 -0
  16. package/dist/appearance-uvs.js +112 -0
  17. package/dist/appearance-uvs.js.map +1 -0
  18. package/dist/bvh.d.ts.map +1 -1
  19. package/dist/bvh.js +3 -0
  20. package/dist/bvh.js.map +1 -1
  21. package/dist/deviation/deviation-computer.js +1 -1
  22. package/dist/deviation/deviation-computer.js.map +1 -1
  23. package/dist/index.d.ts +60 -18
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +184 -232
  26. package/dist/index.js.map +1 -1
  27. package/dist/lod-simplify.d.ts.map +1 -1
  28. package/dist/lod-simplify.js +24 -2
  29. package/dist/lod-simplify.js.map +1 -1
  30. package/dist/merged-mesh-extract.d.ts +18 -0
  31. package/dist/merged-mesh-extract.d.ts.map +1 -0
  32. package/dist/merged-mesh-extract.js +73 -0
  33. package/dist/merged-mesh-extract.js.map +1 -0
  34. package/dist/model-bounds-tracker.d.ts +1 -1
  35. package/dist/model-bounds-tracker.d.ts.map +1 -1
  36. package/dist/model-bounds-tracker.js +3 -2
  37. package/dist/model-bounds-tracker.js.map +1 -1
  38. package/dist/model-placement-bounds.d.ts +29 -0
  39. package/dist/model-placement-bounds.d.ts.map +1 -0
  40. package/dist/model-placement-bounds.js +55 -0
  41. package/dist/model-placement-bounds.js.map +1 -0
  42. package/dist/model-translation.d.ts +57 -0
  43. package/dist/model-translation.d.ts.map +1 -0
  44. package/dist/model-translation.js +223 -0
  45. package/dist/model-translation.js.map +1 -0
  46. package/dist/partial-batch-cache.d.ts +65 -0
  47. package/dist/partial-batch-cache.d.ts.map +1 -0
  48. package/dist/partial-batch-cache.js +88 -0
  49. package/dist/partial-batch-cache.js.map +1 -0
  50. package/dist/partial-batch-requests.d.ts +77 -0
  51. package/dist/partial-batch-requests.d.ts.map +1 -0
  52. package/dist/partial-batch-requests.js +97 -0
  53. package/dist/partial-batch-requests.js.map +1 -0
  54. package/dist/picking-manager.js +2 -2
  55. package/dist/picking-manager.js.map +1 -1
  56. package/dist/point-picker.d.ts +2 -2
  57. package/dist/point-picker.d.ts.map +1 -1
  58. package/dist/point-picker.js +27 -21
  59. package/dist/point-picker.js.map +1 -1
  60. package/dist/pointcloud/point-cloud-node.d.ts +2 -0
  61. package/dist/pointcloud/point-cloud-node.d.ts.map +1 -1
  62. package/dist/pointcloud/point-cloud-node.js +12 -0
  63. package/dist/pointcloud/point-cloud-node.js.map +1 -1
  64. package/dist/pointcloud/point-cloud-placement.d.ts +20 -0
  65. package/dist/pointcloud/point-cloud-placement.d.ts.map +1 -0
  66. package/dist/pointcloud/point-cloud-placement.js +69 -0
  67. package/dist/pointcloud/point-cloud-placement.js.map +1 -0
  68. package/dist/pointcloud/point-cloud-renderer.d.ts +14 -14
  69. package/dist/pointcloud/point-cloud-renderer.d.ts.map +1 -1
  70. package/dist/pointcloud/point-cloud-renderer.js +47 -63
  71. package/dist/pointcloud/point-cloud-renderer.js.map +1 -1
  72. package/dist/raycast-engine.d.ts +9 -11
  73. package/dist/raycast-engine.d.ts.map +1 -1
  74. package/dist/raycast-engine.js +6 -11
  75. package/dist/raycast-engine.js.map +1 -1
  76. package/dist/raycaster.d.ts.map +1 -1
  77. package/dist/raycaster.js +3 -0
  78. package/dist/raycaster.js.map +1 -1
  79. package/dist/reference-image-hit.d.ts +5 -0
  80. package/dist/reference-image-hit.d.ts.map +1 -0
  81. package/dist/reference-image-hit.js +28 -0
  82. package/dist/reference-image-hit.js.map +1 -0
  83. package/dist/reference-image-host.d.ts +5 -0
  84. package/dist/reference-image-host.d.ts.map +1 -0
  85. package/dist/reference-image-host.js +26 -0
  86. package/dist/reference-image-host.js.map +1 -0
  87. package/dist/reference-image-pipeline.d.ts +15 -0
  88. package/dist/reference-image-pipeline.d.ts.map +1 -0
  89. package/dist/reference-image-pipeline.js +104 -0
  90. package/dist/reference-image-pipeline.js.map +1 -0
  91. package/dist/reference-image-types.d.ts +27 -0
  92. package/dist/reference-image-types.d.ts.map +1 -0
  93. package/dist/reference-image-types.js +5 -0
  94. package/dist/reference-image-types.js.map +1 -0
  95. package/dist/reference-images.d.ts +27 -0
  96. package/dist/reference-images.d.ts.map +1 -0
  97. package/dist/reference-images.js +134 -0
  98. package/dist/reference-images.js.map +1 -0
  99. package/dist/renderer-viewport.d.ts +3 -0
  100. package/dist/renderer-viewport.d.ts.map +1 -0
  101. package/dist/renderer-viewport.js +20 -0
  102. package/dist/renderer-viewport.js.map +1 -0
  103. package/dist/rgba-texture-pool.d.ts +12 -0
  104. package/dist/rgba-texture-pool.d.ts.map +1 -0
  105. package/dist/rgba-texture-pool.js +51 -0
  106. package/dist/rgba-texture-pool.js.map +1 -0
  107. package/dist/scene-appearance-buckets.d.ts +41 -0
  108. package/dist/scene-appearance-buckets.d.ts.map +1 -0
  109. package/dist/scene-appearance-buckets.js +164 -0
  110. package/dist/scene-appearance-buckets.js.map +1 -0
  111. package/dist/scene-appearance-instances.d.ts +42 -0
  112. package/dist/scene-appearance-instances.d.ts.map +1 -0
  113. package/dist/scene-appearance-instances.js +143 -0
  114. package/dist/scene-appearance-instances.js.map +1 -0
  115. package/dist/scene-appearance-preview.d.ts +30 -0
  116. package/dist/scene-appearance-preview.d.ts.map +1 -0
  117. package/dist/scene-appearance-preview.js +149 -0
  118. package/dist/scene-appearance-preview.js.map +1 -0
  119. package/dist/scene-appearance-resources.d.ts +16 -0
  120. package/dist/scene-appearance-resources.d.ts.map +1 -0
  121. package/dist/scene-appearance-resources.js +41 -0
  122. package/dist/scene-appearance-resources.js.map +1 -0
  123. package/dist/scene-authored-owner.d.ts +9 -0
  124. package/dist/scene-authored-owner.d.ts.map +1 -0
  125. package/dist/scene-authored-owner.js +73 -0
  126. package/dist/scene-authored-owner.js.map +1 -0
  127. package/dist/scene-batch-upload.d.ts +12 -0
  128. package/dist/scene-batch-upload.d.ts.map +1 -0
  129. package/dist/scene-batch-upload.js +147 -0
  130. package/dist/scene-batch-upload.js.map +1 -0
  131. package/dist/scene-contents.d.ts +41 -0
  132. package/dist/scene-contents.d.ts.map +1 -1
  133. package/dist/scene-geometry.d.ts +16 -0
  134. package/dist/scene-geometry.d.ts.map +1 -1
  135. package/dist/scene-geometry.js +26 -0
  136. package/dist/scene-geometry.js.map +1 -1
  137. package/dist/scene-instance-materialization.d.ts +17 -0
  138. package/dist/scene-instance-materialization.d.ts.map +1 -0
  139. package/dist/scene-instance-materialization.js +52 -0
  140. package/dist/scene-instance-materialization.js.map +1 -0
  141. package/dist/scene-instance-suppression.d.ts +22 -0
  142. package/dist/scene-instance-suppression.d.ts.map +1 -0
  143. package/dist/scene-instance-suppression.js +100 -0
  144. package/dist/scene-instance-suppression.js.map +1 -0
  145. package/dist/scene-instance-types.d.ts +55 -0
  146. package/dist/scene-instance-types.d.ts.map +1 -0
  147. package/dist/scene-instance-types.js +2 -0
  148. package/dist/scene-instance-types.js.map +1 -0
  149. package/dist/scene-model-translation.d.ts +49 -0
  150. package/dist/scene-model-translation.d.ts.map +1 -0
  151. package/dist/scene-model-translation.js +100 -0
  152. package/dist/scene-model-translation.js.map +1 -0
  153. package/dist/scene-stream-split.d.ts +4 -0
  154. package/dist/scene-stream-split.d.ts.map +1 -0
  155. package/dist/scene-stream-split.js +54 -0
  156. package/dist/scene-stream-split.js.map +1 -0
  157. package/dist/scene.d.ts +105 -85
  158. package/dist/scene.d.ts.map +1 -1
  159. package/dist/scene.js +445 -581
  160. package/dist/scene.js.map +1 -1
  161. package/dist/shadow-occluders.d.ts.map +1 -1
  162. package/dist/shadow-occluders.js +13 -9
  163. package/dist/shadow-occluders.js.map +1 -1
  164. package/dist/snap-detector.d.ts.map +1 -1
  165. package/dist/snap-detector.js +3 -0
  166. package/dist/snap-detector.js.map +1 -1
  167. package/dist/textured-vertices.d.ts +9 -0
  168. package/dist/textured-vertices.d.ts.map +1 -0
  169. package/dist/textured-vertices.js +40 -0
  170. package/dist/textured-vertices.js.map +1 -0
  171. package/dist/types.d.ts +11 -9
  172. package/dist/types.d.ts.map +1 -1
  173. package/dist/xray-alpha.d.ts +131 -0
  174. package/dist/xray-alpha.d.ts.map +1 -0
  175. package/dist/xray-alpha.js +266 -0
  176. package/dist/xray-alpha.js.map +1 -0
  177. package/package.json +4 -4
@@ -0,0 +1,246 @@
1
+ import { equivalentAppearanceGeometry } from './appearance-uvs.js';
2
+ import { sameCompanionParts } from './appearance-companions.js';
3
+ /** Owns detached GPU originals until cancellation/commit; never exports GPU handles. */
4
+ export class AppearancePreviewController {
5
+ adapter;
6
+ drafts = new Map();
7
+ issued = new WeakSet();
8
+ constructor(adapter) {
9
+ this.adapter = adapter;
10
+ }
11
+ begin(owner, options) {
12
+ if (this.drafts.has(owner.expressId))
13
+ throw new Error('An appearance preview already owns this entity');
14
+ if (options?.companionHidden && !options.companionOriginals)
15
+ throw new Error('Hidden companion preparation requires canonical originals');
16
+ const captured = this.adapter.capture(owner, options?.materializedOriginals, options?.companionOriginals, options?.companionHidden);
17
+ try {
18
+ const remaps = options?.geometryItemRemaps ?? [];
19
+ const companions = captured.companionOriginals ?? options?.companionOriginals;
20
+ if (companions && (!companions.length || remaps.length || options?.materializedOriginals
21
+ || (captured.parts.length && !sameCompanionParts(captured.parts, companions)))) {
22
+ throw new Error('Invalid companion presence transition');
23
+ }
24
+ if (remaps.length > captured.parts.length)
25
+ throw new Error('Appearance item remap exceeds the original part count');
26
+ const originals = new Set(captured.parts.map(part => part.geometryItemId));
27
+ const from = new Set(), to = new Set();
28
+ for (const pair of remaps) {
29
+ if (!Number.isSafeInteger(pair.from) || !Number.isSafeInteger(pair.to)
30
+ || pair.from <= 0 || pair.to <= 0 || pair.from === pair.to
31
+ || !originals.has(pair.from) || from.has(pair.from) || to.has(pair.to)
32
+ || originals.has(pair.to))
33
+ throw new Error('Invalid occurrence geometry item remap');
34
+ from.add(pair.from);
35
+ to.add(pair.to);
36
+ }
37
+ const geometryItemRemaps = Object.freeze(remaps.map(pair => Object.freeze({ ...pair })));
38
+ const token = Object.freeze({ owner: Object.freeze({ ...owner }) });
39
+ const before = Object.freeze(captured.parts.map((part) => Object.freeze({ ...part })));
40
+ this.issued.add(token);
41
+ this.drafts.set(owner.expressId, {
42
+ token,
43
+ before,
44
+ original: captured.resources,
45
+ after: before,
46
+ current: captured.resources,
47
+ geometryItemRemaps,
48
+ companionOriginals: companions && Object.freeze(companions.map(part => Object.freeze({ ...part }))),
49
+ });
50
+ return token;
51
+ }
52
+ catch (error) {
53
+ captured.abandon?.();
54
+ throw error;
55
+ }
56
+ }
57
+ getParts(owner) { return this.adapter.parts?.(owner); }
58
+ retainSource(owner) { return this.adapter.retainSource?.(owner) ?? (() => { }); }
59
+ draft(token) {
60
+ const draft = this.drafts.get(token.owner.expressId);
61
+ if (!draft || draft.token !== token)
62
+ throw new Error('Stale or foreign appearance preview token');
63
+ return draft;
64
+ }
65
+ update(token, parts) {
66
+ const draft = this.draft(token);
67
+ this.adapter.validate?.(token.owner);
68
+ if (draft.companionOriginals) {
69
+ if (parts.length && !sameCompanionParts(parts, draft.companionOriginals))
70
+ throw new Error('Companion preview can only restore exact original geometry');
71
+ const after = Object.freeze(parts.map(part => Object.freeze({ ...part })));
72
+ this.installDraft(draft, after);
73
+ return;
74
+ }
75
+ if (parts.length !== draft.before.length)
76
+ throw new Error('Appearance preview requires every original mesh part');
77
+ const bitmapIds = new Map();
78
+ for (const old of draft.before)
79
+ if (old.textureRef)
80
+ bitmapIds.set(old.textureRef.textureId, old.textureBitmap);
81
+ for (const old of draft.after)
82
+ if (old.textureRef)
83
+ bitmapIds.set(old.textureRef.textureId, old.textureBitmap);
84
+ for (let i = 0; i < parts.length; i++) {
85
+ const p = parts[i], b = draft.before[i];
86
+ if (p.expressId !== b.expressId ||
87
+ p.modelIndex !== b.modelIndex ||
88
+ !equivalentAppearanceGeometry(p, b, { allowNormalChanges: true }) ||
89
+ p.entityIds !== b.entityIds ||
90
+ p.geometryItemId !== (draft.geometryItemRemaps.find(pair => pair.from === b.geometryItemId)?.to ?? b.geometryItemId) ||
91
+ p.normals.length !== p.positions.length ||
92
+ !p.normals.every(Number.isFinite)) {
93
+ throw new Error('Appearance preview cannot change geometry or ownership');
94
+ }
95
+ if (!p.texture &&
96
+ p.textureRef &&
97
+ p.textureBitmap &&
98
+ bitmapIds.has(p.textureRef.textureId) &&
99
+ bitmapIds.get(p.textureRef.textureId) !== p.textureBitmap) {
100
+ throw new Error('A replacement bitmap needs a new texture identity');
101
+ }
102
+ if (p.textureRef)
103
+ bitmapIds.set(p.textureRef.textureId, p.textureBitmap);
104
+ if ((p.texture || p.textureRef || p.textureBitmap) &&
105
+ (!p.uvs ||
106
+ p.uvs.length !== (p.positions.length / 3) * 2 ||
107
+ !p.uvs.every(Number.isFinite) ||
108
+ !(p.texture || (p.textureRef && p.textureBitmap)))) {
109
+ throw new Error('Appearance preview requires finite UVs and a resolved image for every part');
110
+ }
111
+ }
112
+ const after = Object.freeze(parts.map((part, index) => Object.freeze({
113
+ ...draft.before[index],
114
+ geometryItemId: part.geometryItemId,
115
+ positions: part.positions,
116
+ normals: part.normals,
117
+ indices: part.indices,
118
+ appearanceSource: part.appearanceSource,
119
+ color: part.color,
120
+ shadingColor: part.shadingColor,
121
+ uvs: part.uvs,
122
+ texture: part.texture,
123
+ textureRef: part.textureRef,
124
+ textureBitmap: part.textureBitmap,
125
+ })));
126
+ this.installDraft(draft, after);
127
+ }
128
+ installDraft(draft, after) {
129
+ // Stage may throw: no scene state has changed and originals remain alive.
130
+ const resources = this.adapter.stage(after);
131
+ try {
132
+ this.adapter.install(draft.token.owner, after, resources);
133
+ }
134
+ catch (error) {
135
+ this.adapter.release(resources);
136
+ throw error;
137
+ }
138
+ if (draft.current !== draft.original)
139
+ this.adapter.release(draft.current);
140
+ draft.after = after;
141
+ draft.current = resources;
142
+ }
143
+ cancel(token) {
144
+ if (!this.issued.has(token))
145
+ throw new Error('Foreign appearance preview token');
146
+ if (this.drafts.get(token.owner.expressId)?.token !== token)
147
+ return;
148
+ const draft = this.draft(token);
149
+ this.adapter.validate?.(token.owner);
150
+ this.adapter.install(token.owner, draft.before, draft.original);
151
+ if (draft.current !== draft.original)
152
+ this.adapter.release(draft.current);
153
+ this.drafts.delete(token.owner.expressId);
154
+ this.finished(token.owner);
155
+ }
156
+ commit(token) {
157
+ return this.prepareCommit([token])()[0];
158
+ }
159
+ prepareCommit(tokens) {
160
+ if (new Set(tokens).size !== tokens.length)
161
+ throw new Error('Appearance commit repeats a token');
162
+ const prepared = tokens.map((token) => {
163
+ const draft = this.draft(token);
164
+ this.adapter.validate?.(token.owner);
165
+ return { draft, current: draft.current, after: draft.after };
166
+ });
167
+ const changes = prepared.map(({ draft, after }) => Object.freeze({
168
+ owner: draft.token.owner,
169
+ before: draft.before,
170
+ after,
171
+ ...(draft.companionOriginals ? { companionOriginals: draft.companionOriginals } : {}),
172
+ ...(this.adapter.instanced?.(draft.token.owner, draft.before) ? { beforeInstanced: true } : {}),
173
+ ...(this.adapter.instanced?.(draft.token.owner, after) ? { afterInstanced: true } : {}),
174
+ ...(draft.geometryItemRemaps.length ? { geometryItemRemaps: draft.geometryItemRemaps } : {}),
175
+ }));
176
+ let committed = false;
177
+ return () => {
178
+ if (committed)
179
+ return changes;
180
+ // Every stale/reentrant change is rejected BEFORE consuming any token.
181
+ for (const { draft, current, after } of prepared) {
182
+ this.adapter.validate?.(draft.token.owner);
183
+ if (this.draft(draft.token) !== draft ||
184
+ draft.current !== current ||
185
+ draft.after !== after) {
186
+ throw new Error('Appearance changed after preparing the commit');
187
+ }
188
+ }
189
+ for (const { draft } of prepared)
190
+ this.drafts.delete(draft.token.owner.expressId);
191
+ committed = true;
192
+ // Resource disposal cannot roll back a committed model command. Report a
193
+ // failed disposal independently and continue releasing the other owners.
194
+ for (const { draft, current } of prepared) {
195
+ if (current === draft.original)
196
+ continue;
197
+ try {
198
+ this.adapter.release(draft.original);
199
+ }
200
+ catch (error) {
201
+ console.warn('[Appearance] failed to release committed preview resources', error);
202
+ }
203
+ }
204
+ for (const { draft } of prepared)
205
+ this.finished(draft.token.owner);
206
+ return changes;
207
+ };
208
+ }
209
+ finished(owner) {
210
+ try {
211
+ this.adapter.finished?.(owner);
212
+ }
213
+ catch (error) {
214
+ console.warn('[Appearance] batch restoration failed; split geometry remains active', error);
215
+ }
216
+ }
217
+ owns(expressId) {
218
+ return this.drafts.has(expressId);
219
+ }
220
+ /** End drafts, then validate every surviving history owner before GPU reset. */
221
+ prepareRebuild(geometry, models) {
222
+ for (const draft of [...this.drafts.values()])
223
+ this.cancel(draft.token);
224
+ return this.adapter.prepareRebuild?.(geometry, models) ?? new Set();
225
+ }
226
+ finishRebuild(retained) { this.adapter.finishRebuild?.(retained); }
227
+ discardedForRebuild(retained) { return this.adapter.discardedForRebuild?.(retained) ?? []; }
228
+ /** Geometry edits supersede an uncommitted appearance draft. */
229
+ cancelFor(expressId) {
230
+ const draft = this.drafts.get(expressId);
231
+ if (draft)
232
+ this.cancel(draft.token);
233
+ }
234
+ /** Scene deletion/teardown invalidates tokens and releases detached originals. */
235
+ forget(expressId) {
236
+ this.adapter.forget?.(expressId);
237
+ for (const [id, draft] of this.drafts) {
238
+ if (expressId !== undefined && expressId !== id)
239
+ continue;
240
+ if (draft.current !== draft.original)
241
+ this.adapter.release(draft.original);
242
+ this.drafts.delete(id);
243
+ }
244
+ }
245
+ }
246
+ //# sourceMappingURL=appearance-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance-preview.js","sourceRoot":"","sources":["../src/appearance-preview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { MeshData } from '@ifc-lite/geometry';
2
+ /** Bind canonical final triangle corners, expanding welded vertices only for
3
+ * appearance. Geometry coordinates and triangle order remain exactly unchanged. */
4
+ export declare function expandAppearanceCorners(mesh: MeshData, canonicalSourceIndices: ArrayLike<number>, canonicalCornerUvs: ArrayLike<number>, canonicalTargetIndices: ArrayLike<number>, canonicalTargetCornerNormals: ArrayLike<number>, canonicalTargetVertexCount: number): MeshData;
5
+ /** Exact triangle-corner equivalence for history validation. Normal changes are
6
+ * opt-in when applying canonical appearance shading; positions stay exact. */
7
+ export declare function equivalentAppearanceGeometry(a: MeshData, b: MeshData, options?: {
8
+ allowNormalChanges?: boolean;
9
+ }): boolean;
10
+ //# sourceMappingURL=appearance-uvs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance-uvs.d.ts","sourceRoot":"","sources":["../src/appearance-uvs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;mFACmF;AACnF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,EACd,sBAAsB,EAAE,SAAS,CAAC,MAAM,CAAC,EACzC,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC,EACrC,sBAAsB,EAAE,SAAS,CAAC,MAAM,CAAC,EACzC,4BAA4B,EAAE,SAAS,CAAC,MAAM,CAAC,EAC/C,0BAA0B,EAAE,MAAM,GACjC,QAAQ,CA+EV;AAED;8EAC8E;AAC9E,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,QAAQ,EACX,CAAC,EAAE,QAAQ,EACX,OAAO,GAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7C,OAAO,CAkDT"}
@@ -0,0 +1,112 @@
1
+ /** Bind canonical final triangle corners, expanding welded vertices only for
2
+ * appearance. Geometry coordinates and triangle order remain exactly unchanged. */
3
+ export function expandAppearanceCorners(mesh, canonicalSourceIndices, canonicalCornerUvs, canonicalTargetIndices, canonicalTargetCornerNormals, canonicalTargetVertexCount) {
4
+ const source = mesh.appearanceSource;
5
+ if (!source ||
6
+ source.kind !== 'canonical-item' ||
7
+ source.indices !== mesh.indices ||
8
+ mesh.geometryItemId === undefined ||
9
+ mesh.entityIds ||
10
+ mesh.indices.length % 3 !== 0 ||
11
+ canonicalSourceIndices.length !== source.sourceIndices.length ||
12
+ canonicalCornerUvs.length !== source.sourceIndices.length * 2 ||
13
+ canonicalTargetIndices.length !== source.sourceIndices.length ||
14
+ canonicalTargetCornerNormals.length !== source.sourceIndices.length * 3 ||
15
+ (source.cornerIndices
16
+ ? source.cornerIndices.length !== mesh.indices.length
17
+ : mesh.indices.length !== source.sourceIndices.length)) {
18
+ throw new Error('Appearance preview requires matching canonical corner provenance. Reload the IFC model.');
19
+ }
20
+ for (let i = 0; i < canonicalSourceIndices.length; i++) {
21
+ if (canonicalSourceIndices[i] !== source.sourceIndices[i])
22
+ throw new Error('Appearance canonical source topology changed');
23
+ }
24
+ if (!Number.isSafeInteger(canonicalTargetVertexCount) ||
25
+ canonicalTargetVertexCount <= 0 ||
26
+ canonicalTargetVertexCount > 0x100000000)
27
+ throw new Error('Appearance target vertex pool is invalid');
28
+ for (let i = 0; i < canonicalTargetIndices.length; i++) {
29
+ if (!Number.isSafeInteger(canonicalTargetIndices[i]) ||
30
+ canonicalTargetIndices[i] < 0 ||
31
+ canonicalTargetIndices[i] >= canonicalTargetVertexCount)
32
+ throw new Error('Appearance target topology is invalid');
33
+ }
34
+ const targetIndices = canonicalTargetIndices instanceof Uint32Array
35
+ ? canonicalTargetIndices
36
+ : Uint32Array.from(canonicalTargetIndices);
37
+ const count = mesh.indices.length;
38
+ const positions = new Float32Array(count * 3), normals = new Float32Array(count * 3);
39
+ const indices = new Uint32Array(count), uvs = new Float32Array(count * 2);
40
+ for (let i = 0; i < count; i++) {
41
+ const corner = source.cornerIndices?.[i] ?? i, vertex = mesh.indices[i];
42
+ if (corner >= source.sourceIndices.length ||
43
+ vertex * 3 + 2 >= mesh.positions.length ||
44
+ vertex * 3 + 2 >= mesh.normals.length)
45
+ throw new Error('Appearance source corner index is out of range');
46
+ for (let axis = 0; axis < 3; axis++) {
47
+ positions[i * 3 + axis] = mesh.positions[vertex * 3 + axis];
48
+ // Canonical final weld representatives are already in renderer Y-up.
49
+ normals[i * 3 + axis] = canonicalTargetCornerNormals[corner * 3 + axis];
50
+ if (!Number.isFinite(normals[i * 3 + axis]))
51
+ throw new Error('Appearance normals exceed the finite renderer range');
52
+ }
53
+ indices[i] = i;
54
+ uvs[i * 2] = canonicalCornerUvs[corner * 2];
55
+ uvs[i * 2 + 1] = canonicalCornerUvs[corner * 2 + 1];
56
+ if (!Number.isFinite(uvs[i * 2]) || !Number.isFinite(uvs[i * 2 + 1])) {
57
+ throw new Error('Appearance UVs exceed the finite renderer range');
58
+ }
59
+ }
60
+ return {
61
+ ...mesh,
62
+ positions,
63
+ normals,
64
+ indices,
65
+ uvs,
66
+ appearanceSource: { ...source, indices, sourceIndices: targetIndices },
67
+ };
68
+ }
69
+ /** Exact triangle-corner equivalence for history validation. Normal changes are
70
+ * opt-in when applying canonical appearance shading; positions stay exact. */
71
+ export function equivalentAppearanceGeometry(a, b, options = {}) {
72
+ for (const key of ['origin', 'localToWorld']) {
73
+ const av = a[key], bv = b[key];
74
+ if (av === undefined || bv === undefined) {
75
+ if (av !== bv)
76
+ return false;
77
+ }
78
+ else if (av.length !== bv.length ||
79
+ av.some((value, i) => value !== bv[i])) {
80
+ return false;
81
+ }
82
+ }
83
+ if (a.positions === b.positions &&
84
+ (options.allowNormalChanges || a.normals === b.normals) &&
85
+ a.indices === b.indices)
86
+ return true;
87
+ if (!a.appearanceSource ||
88
+ !b.appearanceSource ||
89
+ a.appearanceSource.indices !== a.indices ||
90
+ b.appearanceSource.indices !== b.indices ||
91
+ a.indices.length !== b.indices.length ||
92
+ a.appearanceSource.sourceIndices.length !==
93
+ b.appearanceSource.sourceIndices.length)
94
+ return false;
95
+ for (let corner = 0; corner < a.indices.length; corner++) {
96
+ if ((a.appearanceSource.cornerIndices?.[corner] ?? corner) !==
97
+ (b.appearanceSource.cornerIndices?.[corner] ?? corner))
98
+ return false;
99
+ for (let axis = 0; axis < 3; axis++) {
100
+ const ai = a.indices[corner] * 3 + axis, bi = b.indices[corner] * 3 + axis;
101
+ if (ai >= a.positions.length ||
102
+ bi >= b.positions.length ||
103
+ ai >= a.normals.length ||
104
+ bi >= b.normals.length ||
105
+ a.positions[ai] !== b.positions[bi] ||
106
+ (!options.allowNormalChanges && a.normals[ai] !== b.normals[bi]))
107
+ return false;
108
+ }
109
+ }
110
+ return true;
111
+ }
112
+ //# sourceMappingURL=appearance-uvs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance-uvs.js","sourceRoot":"","sources":["../src/appearance-uvs.ts"],"names":[],"mappings":"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"}
package/dist/bvh.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bvh.d.ts","sourceRoot":"","sources":["../src/bvh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACX;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAK;IAOtC,OAAO,CAAC,SAAS,CAA6B;IAE9C;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI;IAoD/B;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE;IAUvD;;OAEG;IACH,OAAO,CAAC,SAAS;IAkCjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmCzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB"}
1
+ {"version":3,"file":"bvh.d.ts","sourceRoot":"","sources":["../src/bvh.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,IAAI,CAAC;CACX;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAK;IAOtC,OAAO,CAAC,SAAS,CAA6B;IAE9C;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI;IAoD/B;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE;IAUvD;;OAEG;IACH,OAAO,CAAC,SAAS;IAkCjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmCzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB"}
package/dist/bvh.js CHANGED
@@ -1,3 +1,6 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
1
4
  export class BVH {
2
5
  root = null;
3
6
  maxMeshesPerLeaf = 8;
package/dist/bvh.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bvh.js","sourceRoot":"","sources":["../src/bvh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bvh.js","sourceRoot":"","sources":["../src/bvh.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ function computeBvhFingerprint(meshes) {
31
31
  const mi = m.modelIndex ?? -1;
32
32
  const posLen = m.positions?.length ?? 0;
33
33
  const idxLen = m.indices?.length ?? 0;
34
- parts.push(`${id}:${mi}:${posLen}:${idxLen}`);
34
+ parts.push(`${id}:${mi}:${posLen}:${idxLen}:${m.origin?.join(',') ?? ''}:${m.positions[0]},${m.positions[1]},${m.positions[2]}`);
35
35
  }
36
36
  return parts.join('|');
37
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deviation-computer.js","sourceRoot":"","sources":["../../src/deviation/deviation-computer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deviation-computer.js","sourceRoot":"","sources":["../../src/deviation/deviation-computer.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,11 @@ export type { AdapterInfoSnapshot } from './device.js';
6
6
  export { RenderPipeline } from './pipeline.js';
7
7
  export { Camera } from './camera.js';
8
8
  export type { SceneContents } from './scene-contents.js';
9
+ export { expandAppearanceCorners, equivalentAppearanceGeometry } from './appearance-uvs.js';
10
+ export { sameCompanionParts } from './appearance-companions.js';
11
+ export type { AppearancePreview, AppearanceOwner, AppearanceToken, AppearanceChange } from './appearance-preview.js';
12
+ import type { AppearancePreview } from './appearance-preview.js';
13
+ export type { ReferenceImages, ReferenceImageInput, ReferenceImageHit, ReferenceCorners } from './reference-image-types.js';
9
14
  export type { ProjectionMode } from './camera-state.js';
10
15
  export type { InteractionMode } from './camera-controls.js';
11
16
  export { pickFitPolicy } from './camera-fit-policy.js';
@@ -94,6 +99,8 @@ export declare class Renderer {
94
99
  * objects inside stay null until `init()` calls `overlays.init()`.
95
100
  */
96
101
  private readonly overlays;
102
+ private readonly referenceImages;
103
+ getReferenceImages(): import('./reference-image-types.js').ReferenceImages;
97
104
  private postProcessor;
98
105
  private readonly interactionEffects;
99
106
  private edlPass;
@@ -256,14 +263,18 @@ export declare class Renderer {
256
263
  private _lastRenderError;
257
264
  private _renderRequested;
258
265
  private readonly _visibilityEpochs;
266
+ private readonly _xrayEpochs;
259
267
  private _visibilityVersion;
260
268
  private _partialBatchEpoch;
261
269
  private _lastColorOverrideGen;
262
- private _lastHadVisibilityFiltering;
270
+ private _xrayVersion;
271
+ private _lastHadPartialSources;
263
272
  private _batchVisibilityEpoch;
264
273
  private _batchVisibilityCache;
265
274
  private _prevHydratedSelection;
266
275
  private _prevHydratedSelectionModelIndex;
276
+ private _prevHydratedSelectionItemExpressId;
277
+ private _prevHydratedSelectionItemId;
267
278
  private _loggedSectionBounds;
268
279
  private readonly uniformScratch;
269
280
  private readonly uniformScratchU32;
@@ -433,18 +444,40 @@ export declare class Renderer {
433
444
  * buffer rewrite needed.
434
445
  */
435
446
  relabelPointCloudAsset(handle: import('./pointcloud/point-cloud-renderer.js').PointCloudAssetHandle, newExpressId: number): void;
436
- /** Aggregate bounds across all batched + individual meshes. Returns
437
- * null if the scene has no mesh geometry. */
447
+ /** Bounds across flat draw batches. */
438
448
  private computeMeshBounds;
439
449
  /** Apply rendering options (color mode, fixed override, point size). */
440
450
  setPointCloudOptions(opts: import('./pointcloud/point-cloud-renderer.js').PointCloudRenderOptions): void;
441
- /**
442
- * Set (or clear, with `null`) a streamed point-cloud asset's per-vertex
443
- * GPU model matrix (column-major, 16 floats) — issue #1804's
444
- * `IfcMapConversion` alignment toggle. Cheap: takes effect on the next
445
- * frame's uniform write, no GPU buffer rewrite.
446
- */
447
- setPointCloudTransform(handle: import('./pointcloud/point-cloud-renderer.js').PointCloudAssetHandle, matrix: Float32Array | null): void;
451
+ getModelPlacementBounds(modelIndex: number, pointCloudHandle?: {
452
+ id: number;
453
+ }): {
454
+ min: {
455
+ x: number;
456
+ y: number;
457
+ z: number;
458
+ };
459
+ max: {
460
+ x: number;
461
+ y: number;
462
+ z: number;
463
+ };
464
+ } | null;
465
+ /** Absolute workspace translation in renderer Y-up metres (#4226). */
466
+ setModelTranslation(modelIndex: number, translation: readonly [number, number, number]): void;
467
+ /** Streamed clouds are addressed by durable asset handle. */
468
+ setPointCloudTranslation(handle: {
469
+ id: number;
470
+ }, translation: readonly [number, number, number]): void;
471
+ private refreshPlacementBounds;
472
+ getPointCloudTransform(handle: {
473
+ id: number;
474
+ }): Float32Array | undefined;
475
+ /**
476
+ * Set/clear a streamed cloud's column-major model matrix (16 floats) for
477
+ * IfcMapConversion alignment (#1804). Applied on the next frame's uniform
478
+ * write without rewriting vertex buffers.
479
+ */
480
+ setPointCloudTransform(handle: import('./pointcloud/point-cloud-renderer.js').PointCloudAssetHandle, matrix: Float32Array | Float64Array | null): void;
448
481
  /**
449
482
  * Compute BIM ↔ scan deviation for every loaded point cloud asset.
450
483
  *
@@ -530,7 +563,10 @@ export declare class Renderer {
530
563
  * partially-hidden OPAQUE batch casts only its visible subset via the SAME
531
564
  * cached partial sub-batch the colour pass renders (shared cache key
532
565
  * `${colorKey}:${id}` + `_partialBatchEpoch`), so no extra clone memory and no
533
- * phantom shadow from an individually-hidden element in a shared batch.
566
+ * phantom shadow from an individually-hidden element in a shared batch. That
567
+ * sharing lapses while X-Ray splits the same batch further (#4129): the colour
568
+ * pass then draws `:x0`/`:x1` slots and this slot owns its own clone — right,
569
+ * since a ghosted element still casts its real shadow.
534
570
  *
535
571
  * Transparent (glass-like) partially-hidden parents are left to the collector's
536
572
  * material-alpha filter — they don't cast at all, so building a visible subset
@@ -698,13 +734,9 @@ export declare class Renderer {
698
734
  * Resolves an empty set once the device is gone — see `pickPathAlive()`.
699
735
  */
700
736
  pickRect(x0: number, y0: number, x1: number, y1: number, options?: PickOptions): Promise<Set<number>>;
701
- /**
702
- * Raycast into the scene to get precise 3D intersection point
703
- * This is more accurate than pick() as it returns the exact surface point
704
- *
705
- * Note: x, y are CSS pixel coordinates relative to the canvas element.
706
- * These are scaled internally to match the actual canvas pixel dimensions.
707
- */
737
+ /** Whether the last rendered frame clipped surfaces (section, terrain or box). */
738
+ hasActiveClipping(): boolean;
739
+ /** Exact surface raycast in CSS canvas coordinates; does not apply clipping. */
708
740
  raycastScene(x: number, y: number, options?: PickOptions & {
709
741
  snapOptions?: Partial<SnapOptions>;
710
742
  }): {
@@ -752,6 +784,16 @@ export declare class Renderer {
752
784
  * Resize canvas
753
785
  */
754
786
  resize(width: number, height: number): void;
787
+ /** Stage one new owner; borrowed mesh buffers must remain immutable until disposal. */
788
+ prepareAuthoredOwner(parts: readonly MeshData[]): {
789
+ commit: () => void;
790
+ dispose: () => void;
791
+ };
792
+ prepareTexturedOwner(mesh: MeshData): {
793
+ commit: () => void;
794
+ dispose: () => void;
795
+ };
796
+ getAppearancePreview(): AppearancePreview;
755
797
  getCamera(): Camera;
756
798
  /** MEASURED external surface, not the 4400-line `Scene`: widening `SceneContents` is a published-API decision, not a detail — see `scene-contents.ts`. */
757
799
  getScene(): SceneContents;