@ifc-lite/renderer 2.0.1 → 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.
- package/README.md +10 -0
- package/dist/appearance-batch-cohorts.d.ts +33 -0
- package/dist/appearance-batch-cohorts.d.ts.map +1 -0
- package/dist/appearance-batch-cohorts.js +126 -0
- package/dist/appearance-batch-cohorts.js.map +1 -0
- package/dist/appearance-companions.d.ts +30 -0
- package/dist/appearance-companions.d.ts.map +1 -0
- package/dist/appearance-companions.js +138 -0
- package/dist/appearance-companions.js.map +1 -0
- package/dist/appearance-preview.d.ts +93 -0
- package/dist/appearance-preview.d.ts.map +1 -0
- package/dist/appearance-preview.js +246 -0
- package/dist/appearance-preview.js.map +1 -0
- package/dist/appearance-uvs.d.ts +10 -0
- package/dist/appearance-uvs.d.ts.map +1 -0
- package/dist/appearance-uvs.js +112 -0
- package/dist/appearance-uvs.js.map +1 -0
- package/dist/bvh.d.ts.map +1 -1
- package/dist/bvh.js +3 -0
- package/dist/bvh.js.map +1 -1
- package/dist/deviation/deviation-computer.js +1 -1
- package/dist/deviation/deviation-computer.js.map +1 -1
- package/dist/index.d.ts +60 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +184 -232
- package/dist/index.js.map +1 -1
- package/dist/merged-mesh-extract.d.ts +18 -0
- package/dist/merged-mesh-extract.d.ts.map +1 -0
- package/dist/merged-mesh-extract.js +73 -0
- package/dist/merged-mesh-extract.js.map +1 -0
- package/dist/model-bounds-tracker.d.ts +1 -1
- package/dist/model-bounds-tracker.d.ts.map +1 -1
- package/dist/model-bounds-tracker.js +3 -2
- package/dist/model-bounds-tracker.js.map +1 -1
- package/dist/model-placement-bounds.d.ts +29 -0
- package/dist/model-placement-bounds.d.ts.map +1 -0
- package/dist/model-placement-bounds.js +55 -0
- package/dist/model-placement-bounds.js.map +1 -0
- package/dist/model-translation.d.ts +57 -0
- package/dist/model-translation.d.ts.map +1 -0
- package/dist/model-translation.js +223 -0
- package/dist/model-translation.js.map +1 -0
- package/dist/partial-batch-cache.d.ts +65 -0
- package/dist/partial-batch-cache.d.ts.map +1 -0
- package/dist/partial-batch-cache.js +88 -0
- package/dist/partial-batch-cache.js.map +1 -0
- package/dist/partial-batch-requests.d.ts +77 -0
- package/dist/partial-batch-requests.d.ts.map +1 -0
- package/dist/partial-batch-requests.js +97 -0
- package/dist/partial-batch-requests.js.map +1 -0
- package/dist/picking-manager.js +2 -2
- package/dist/picking-manager.js.map +1 -1
- package/dist/point-picker.d.ts +2 -2
- package/dist/point-picker.d.ts.map +1 -1
- package/dist/point-picker.js +27 -21
- package/dist/point-picker.js.map +1 -1
- package/dist/pointcloud/point-cloud-node.d.ts +2 -0
- package/dist/pointcloud/point-cloud-node.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-node.js +12 -0
- package/dist/pointcloud/point-cloud-node.js.map +1 -1
- package/dist/pointcloud/point-cloud-placement.d.ts +20 -0
- package/dist/pointcloud/point-cloud-placement.d.ts.map +1 -0
- package/dist/pointcloud/point-cloud-placement.js +69 -0
- package/dist/pointcloud/point-cloud-placement.js.map +1 -0
- package/dist/pointcloud/point-cloud-renderer.d.ts +14 -14
- package/dist/pointcloud/point-cloud-renderer.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-renderer.js +47 -63
- package/dist/pointcloud/point-cloud-renderer.js.map +1 -1
- package/dist/raycast-engine.d.ts +9 -11
- package/dist/raycast-engine.d.ts.map +1 -1
- package/dist/raycast-engine.js +6 -11
- package/dist/raycast-engine.js.map +1 -1
- package/dist/raycaster.d.ts.map +1 -1
- package/dist/raycaster.js +3 -0
- package/dist/raycaster.js.map +1 -1
- package/dist/reference-image-hit.d.ts +5 -0
- package/dist/reference-image-hit.d.ts.map +1 -0
- package/dist/reference-image-hit.js +28 -0
- package/dist/reference-image-hit.js.map +1 -0
- package/dist/reference-image-host.d.ts +5 -0
- package/dist/reference-image-host.d.ts.map +1 -0
- package/dist/reference-image-host.js +26 -0
- package/dist/reference-image-host.js.map +1 -0
- package/dist/reference-image-pipeline.d.ts +15 -0
- package/dist/reference-image-pipeline.d.ts.map +1 -0
- package/dist/reference-image-pipeline.js +104 -0
- package/dist/reference-image-pipeline.js.map +1 -0
- package/dist/reference-image-types.d.ts +27 -0
- package/dist/reference-image-types.d.ts.map +1 -0
- package/dist/reference-image-types.js +5 -0
- package/dist/reference-image-types.js.map +1 -0
- package/dist/reference-images.d.ts +27 -0
- package/dist/reference-images.d.ts.map +1 -0
- package/dist/reference-images.js +134 -0
- package/dist/reference-images.js.map +1 -0
- package/dist/renderer-viewport.d.ts +3 -0
- package/dist/renderer-viewport.d.ts.map +1 -0
- package/dist/renderer-viewport.js +20 -0
- package/dist/renderer-viewport.js.map +1 -0
- package/dist/rgba-texture-pool.d.ts +12 -0
- package/dist/rgba-texture-pool.d.ts.map +1 -0
- package/dist/rgba-texture-pool.js +51 -0
- package/dist/rgba-texture-pool.js.map +1 -0
- package/dist/scene-appearance-buckets.d.ts +41 -0
- package/dist/scene-appearance-buckets.d.ts.map +1 -0
- package/dist/scene-appearance-buckets.js +164 -0
- package/dist/scene-appearance-buckets.js.map +1 -0
- package/dist/scene-appearance-instances.d.ts +42 -0
- package/dist/scene-appearance-instances.d.ts.map +1 -0
- package/dist/scene-appearance-instances.js +143 -0
- package/dist/scene-appearance-instances.js.map +1 -0
- package/dist/scene-appearance-preview.d.ts +30 -0
- package/dist/scene-appearance-preview.d.ts.map +1 -0
- package/dist/scene-appearance-preview.js +149 -0
- package/dist/scene-appearance-preview.js.map +1 -0
- package/dist/scene-appearance-resources.d.ts +16 -0
- package/dist/scene-appearance-resources.d.ts.map +1 -0
- package/dist/scene-appearance-resources.js +41 -0
- package/dist/scene-appearance-resources.js.map +1 -0
- package/dist/scene-authored-owner.d.ts +9 -0
- package/dist/scene-authored-owner.d.ts.map +1 -0
- package/dist/scene-authored-owner.js +73 -0
- package/dist/scene-authored-owner.js.map +1 -0
- package/dist/scene-batch-upload.d.ts +12 -0
- package/dist/scene-batch-upload.d.ts.map +1 -0
- package/dist/scene-batch-upload.js +147 -0
- package/dist/scene-batch-upload.js.map +1 -0
- package/dist/scene-contents.d.ts +41 -0
- package/dist/scene-contents.d.ts.map +1 -1
- package/dist/scene-geometry.d.ts +16 -0
- package/dist/scene-geometry.d.ts.map +1 -1
- package/dist/scene-geometry.js +26 -0
- package/dist/scene-geometry.js.map +1 -1
- package/dist/scene-instance-materialization.d.ts +17 -0
- package/dist/scene-instance-materialization.d.ts.map +1 -0
- package/dist/scene-instance-materialization.js +52 -0
- package/dist/scene-instance-materialization.js.map +1 -0
- package/dist/scene-instance-suppression.d.ts +22 -0
- package/dist/scene-instance-suppression.d.ts.map +1 -0
- package/dist/scene-instance-suppression.js +100 -0
- package/dist/scene-instance-suppression.js.map +1 -0
- package/dist/scene-instance-types.d.ts +55 -0
- package/dist/scene-instance-types.d.ts.map +1 -0
- package/dist/scene-instance-types.js +2 -0
- package/dist/scene-instance-types.js.map +1 -0
- package/dist/scene-model-translation.d.ts +49 -0
- package/dist/scene-model-translation.d.ts.map +1 -0
- package/dist/scene-model-translation.js +100 -0
- package/dist/scene-model-translation.js.map +1 -0
- package/dist/scene-stream-split.d.ts +4 -0
- package/dist/scene-stream-split.d.ts.map +1 -0
- package/dist/scene-stream-split.js +54 -0
- package/dist/scene-stream-split.js.map +1 -0
- package/dist/scene.d.ts +105 -85
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +445 -581
- package/dist/scene.js.map +1 -1
- package/dist/shadow-occluders.d.ts.map +1 -1
- package/dist/shadow-occluders.js +13 -9
- package/dist/shadow-occluders.js.map +1 -1
- package/dist/snap-detector.d.ts.map +1 -1
- package/dist/snap-detector.js +3 -0
- package/dist/snap-detector.js.map +1 -1
- package/dist/textured-vertices.d.ts +9 -0
- package/dist/textured-vertices.d.ts.map +1 -0
- package/dist/textured-vertices.js +40 -0
- package/dist/textured-vertices.js.map +1 -0
- package/dist/types.d.ts +11 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/xray-alpha.d.ts +131 -0
- package/dist/xray-alpha.d.ts.map +1 -0
- package/dist/xray-alpha.js +266 -0
- package/dist/xray-alpha.js.map +1 -0
- package/package.json +3 -3
|
@@ -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":"
|
|
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
package/dist/bvh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bvh.js","sourceRoot":"","sources":["../src/bvh.ts"],"names":[],"mappings":"
|
|
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":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAAC,MAA+B;IAC1D,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;
|
|
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
|
|
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
|
-
/**
|
|
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
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
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
|
-
|
|
703
|
-
|
|
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;
|