@ifc-lite/renderer 1.39.0 → 1.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/deviation/deviation-pipeline.d.ts +8 -0
- package/dist/deviation/deviation-pipeline.d.ts.map +1 -1
- package/dist/deviation/deviation-pipeline.js +20 -9
- package/dist/deviation/deviation-pipeline.js.map +1 -1
- package/dist/deviation/deviation-shader.wgsl.d.ts +1 -1
- package/dist/deviation/deviation-shader.wgsl.d.ts.map +1 -1
- package/dist/deviation/deviation-shader.wgsl.js +11 -3
- package/dist/deviation/deviation-shader.wgsl.js.map +1 -1
- package/dist/index.d.ts +45 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +78 -3
- package/dist/index.js.map +1 -1
- package/dist/picker.d.ts +9 -0
- package/dist/picker.d.ts.map +1 -1
- package/dist/picker.js +84 -2
- package/dist/picker.js.map +1 -1
- package/dist/picking-manager.d.ts +33 -5
- package/dist/picking-manager.d.ts.map +1 -1
- package/dist/picking-manager.js +162 -101
- package/dist/picking-manager.js.map +1 -1
- package/dist/pointcloud/point-cloud-node.d.ts +46 -0
- package/dist/pointcloud/point-cloud-node.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-node.js +71 -0
- package/dist/pointcloud/point-cloud-node.js.map +1 -1
- package/dist/pointcloud/point-cloud-ray-transform.d.ts +66 -0
- package/dist/pointcloud/point-cloud-ray-transform.d.ts.map +1 -0
- package/dist/pointcloud/point-cloud-ray-transform.js +172 -0
- package/dist/pointcloud/point-cloud-ray-transform.js.map +1 -0
- package/dist/pointcloud/point-cloud-renderer.d.ts +24 -0
- package/dist/pointcloud/point-cloud-renderer.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-renderer.js +46 -13
- package/dist/pointcloud/point-cloud-renderer.js.map +1 -1
- package/dist/pointcloud/point-cloud-spatial-index.d.ts +188 -0
- package/dist/pointcloud/point-cloud-spatial-index.d.ts.map +1 -0
- package/dist/pointcloud/point-cloud-spatial-index.js +536 -0
- package/dist/pointcloud/point-cloud-spatial-index.js.map +1 -0
- package/dist/pointcloud/point-cloud-uniforms.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-uniforms.js +14 -6
- package/dist/pointcloud/point-cloud-uniforms.js.map +1 -1
- package/dist/raycast-engine.d.ts +8 -0
- package/dist/raycast-engine.d.ts.map +1 -1
- package/dist/raycast-engine.js +68 -23
- package/dist/raycast-engine.js.map +1 -1
- package/dist/raycast-point-cloud-query.d.ts +122 -0
- package/dist/raycast-point-cloud-query.d.ts.map +1 -0
- package/dist/raycast-point-cloud-query.js +145 -0
- package/dist/raycast-point-cloud-query.js.map +1 -0
- package/dist/scene-rect-select.d.ts +51 -0
- package/dist/scene-rect-select.d.ts.map +1 -0
- package/dist/scene-rect-select.js +207 -0
- package/dist/scene-rect-select.js.map +1 -0
- package/dist/scene.d.ts +15 -0
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +115 -46
- package/dist/scene.js.map +1 -1
- package/dist/snap-detector.d.ts +12 -1
- package/dist/snap-detector.d.ts.map +1 -1
- package/dist/snap-detector.js +9 -1
- package/dist/snap-detector.js.map +1 -1
- package/package.json +2 -2
package/dist/picker.js
CHANGED
|
@@ -26,6 +26,51 @@ function unprojectPickSample(viewProj, pickX, pickY, width, height, depth) {
|
|
|
26
26
|
return null;
|
|
27
27
|
return MathUtils.transformPoint(inv, { x: ndcX, y: ndcY, z: depth });
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Whether a rejected `mapAsync` readback means "the GPU resource went away"
|
|
31
|
+
* rather than "we asked for something illegal".
|
|
32
|
+
*
|
|
33
|
+
* WebGPU only rejects a map with `AbortError` when the thing being mapped
|
|
34
|
+
* stops existing: the buffer is destroyed or unmapped before the map settles,
|
|
35
|
+
* or the device/instance behind it is destroyed or lost. The pick path never
|
|
36
|
+
* touches its readback buffers before the map settles, so for us that reduces
|
|
37
|
+
* to "the device is gone" — Chromium words it
|
|
38
|
+
* `AbortError: … A valid external Instance reference no longer exists.` (#1901).
|
|
39
|
+
*
|
|
40
|
+
* The entry guards in `pick()` / `pickRect()` (and `Renderer.pickPathAlive()`)
|
|
41
|
+
* stop a pick that STARTS on a dead device, but they cannot close the window
|
|
42
|
+
* between `queue.submit()` and the map settling: a pick that was perfectly
|
|
43
|
+
* legal when it started is still aborted if the canvas unmounts, the model
|
|
44
|
+
* reloads (`Renderer.destroy()` ends in `device.destroy()`), or the driver
|
|
45
|
+
* resets while the readback is in flight. Nothing on that path can handle the
|
|
46
|
+
* rejection — the DOM listeners that reach it are `async` functions nobody
|
|
47
|
+
* awaits — so it escapes as an unhandled rejection.
|
|
48
|
+
*
|
|
49
|
+
* Real faults are NOT covered here: a validation failure (already-mapped
|
|
50
|
+
* buffer, bad usage flags, out-of-range range) rejects with `OperationError`,
|
|
51
|
+
* which still propagates.
|
|
52
|
+
*/
|
|
53
|
+
function isReadbackAbort(err) {
|
|
54
|
+
return typeof err === 'object' && err !== null && err.name === 'AbortError';
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Free readback buffers on the aborted path. The device may already be gone,
|
|
58
|
+
* in which case `destroy()` is a no-op — or throws on some backends, which
|
|
59
|
+
* must not turn a handled teardown back into an escaping error.
|
|
60
|
+
*/
|
|
61
|
+
function releaseReadbacks(...buffers) {
|
|
62
|
+
for (const buffer of buffers) {
|
|
63
|
+
try {
|
|
64
|
+
buffer.destroy();
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
// Non-fatal: the device is already gone and the buffer died with it.
|
|
68
|
+
// Surfaced rather than swallowed, per the no-silent-catch house rule —
|
|
69
|
+
// this firing on a LIVE device would mean a real teardown bug.
|
|
70
|
+
console.warn('[Picker] failed to release a readback buffer during teardown', err);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
29
74
|
export class Picker {
|
|
30
75
|
device;
|
|
31
76
|
webgpuDevice;
|
|
@@ -38,6 +83,7 @@ export class Picker {
|
|
|
38
83
|
expressIdBuffer;
|
|
39
84
|
bindGroup;
|
|
40
85
|
maxMeshes = 100000; // Support up to 100K meshes (was 10K)
|
|
86
|
+
/** Set by `destroy()`; makes it idempotent and turns `pick`/`pickRect` into no-ops. */
|
|
41
87
|
destroyed = false;
|
|
42
88
|
pointPicker = null;
|
|
43
89
|
// Reused scratch for the 32-float (128-byte) uniform block: viewProj +
|
|
@@ -305,8 +351,15 @@ export class Picker {
|
|
|
305
351
|
* Returns `PickResult` with `{expressId, modelIndex}` for both kinds.
|
|
306
352
|
* For point hits, expressId is the federated globalId of the asset
|
|
307
353
|
* (already correct for hover/selection plumbing — no remapping needed).
|
|
354
|
+
*
|
|
355
|
+
* Returns null once `destroy()` has run — every texture and buffer below is
|
|
356
|
+
* already freed, so the `mapAsync` readback could only reject. Also returns
|
|
357
|
+
* null if the device dies *during* the readback, which no entry guard can
|
|
358
|
+
* pre-empt (see {@link isReadbackAbort}).
|
|
308
359
|
*/
|
|
309
360
|
async pick(x, y, width, height, meshes, viewProj, pointNodes, pointSizing, instancedTemplates, clip) {
|
|
361
|
+
if (this.destroyed)
|
|
362
|
+
return null;
|
|
310
363
|
const encoder = this.renderPickPass(width, height, meshes, viewProj, pointNodes, pointSizing, instancedTemplates, clip);
|
|
311
364
|
// Clamp the texel origin to the texture bounds. Math.floor(x/y) can
|
|
312
365
|
// be -1 or equal to width/height on border clicks (and on
|
|
@@ -343,7 +396,20 @@ export class Picker {
|
|
|
343
396
|
}, { buffer: depthBuffer, bytesPerRow: depthBytesPerRow, rowsPerImage: height }, { width, height });
|
|
344
397
|
this.device.queue.submit([encoder.finish()]);
|
|
345
398
|
// GPUMapMode.READ = 1 (WebGPU spec)
|
|
346
|
-
|
|
399
|
+
try {
|
|
400
|
+
await Promise.all([readBuffer.mapAsync(1), depthBuffer.mapAsync(1)]);
|
|
401
|
+
}
|
|
402
|
+
catch (err) {
|
|
403
|
+
// Free BOTH readbacks on every failure path, not just the aborted one.
|
|
404
|
+
// `Promise.all` rejects the moment one map fails, so the other may have
|
|
405
|
+
// succeeded and still be holding its mapped GPU allocation — rethrowing
|
|
406
|
+
// without this leaks it for the life of the device.
|
|
407
|
+
releaseReadbacks(readBuffer, depthBuffer);
|
|
408
|
+
// The device died between submit and readback — see isReadbackAbort.
|
|
409
|
+
if (!isReadbackAbort(err))
|
|
410
|
+
throw err;
|
|
411
|
+
return null;
|
|
412
|
+
}
|
|
347
413
|
const sample = new Uint32Array(readBuffer.getMappedRange())[0];
|
|
348
414
|
const depthBytes = new Uint8Array(depthBuffer.getMappedRange());
|
|
349
415
|
const depthOffset = sampleY * depthBytesPerRow + sampleX * 4;
|
|
@@ -411,8 +477,13 @@ export class Picker {
|
|
|
411
477
|
* sustained use because the readback grows with rect area. A 800×600
|
|
412
478
|
* rect = 480k pixels = ~2 MB transfer, fine for one-shot but we'd
|
|
413
479
|
* want a GPU-side dedupe for sustained marquee selection.
|
|
480
|
+
*
|
|
481
|
+
* Returns an empty set once `destroy()` has run — or if the device dies
|
|
482
|
+
* mid-readback — for the same reasons {@link Picker.pick} returns null.
|
|
414
483
|
*/
|
|
415
484
|
async pickRect(x0, y0, x1, y1, width, height, meshes, viewProj, pointNodes, pointSizing, instancedTemplates, clip) {
|
|
485
|
+
if (this.destroyed)
|
|
486
|
+
return new Set();
|
|
416
487
|
// Normalise + clip rect to texture bounds.
|
|
417
488
|
const lx = Math.max(0, Math.floor(Math.min(x0, x1)));
|
|
418
489
|
const ly = Math.max(0, Math.floor(Math.min(y0, y1)));
|
|
@@ -436,7 +507,18 @@ export class Picker {
|
|
|
436
507
|
origin: { x: lx, y: ly, z: 0 },
|
|
437
508
|
}, { buffer: readBuffer, bytesPerRow: rowStride, rowsPerImage: rectH }, { width: rectW, height: rectH });
|
|
438
509
|
this.device.queue.submit([encoder.finish()]);
|
|
439
|
-
|
|
510
|
+
try {
|
|
511
|
+
await readBuffer.mapAsync(1);
|
|
512
|
+
}
|
|
513
|
+
catch (err) {
|
|
514
|
+
// Released on every failure path, not just the aborted one — a real
|
|
515
|
+
// fault must not leak the readback's GPU allocation on its way out.
|
|
516
|
+
releaseReadbacks(readBuffer);
|
|
517
|
+
// The device died between submit and readback — see isReadbackAbort.
|
|
518
|
+
if (!isReadbackAbort(err))
|
|
519
|
+
throw err;
|
|
520
|
+
return new Set();
|
|
521
|
+
}
|
|
440
522
|
const view = new Uint32Array(readBuffer.getMappedRange());
|
|
441
523
|
const ids = new Set();
|
|
442
524
|
const stridePx = rowStride / 4;
|
package/dist/picker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,22 @@ export declare class PickingManager {
|
|
|
31
31
|
* Update the picker reference (e.g., after init)
|
|
32
32
|
*/
|
|
33
33
|
setPicker(picker: Picker | null): void;
|
|
34
|
+
/**
|
|
35
|
+
* Prepare batched geometry for a GPU pick pass, shared by `pick()` and
|
|
36
|
+
* `pickRect()`.
|
|
37
|
+
*
|
|
38
|
+
* Returns `'cpu'` when the caller must fall back to a CPU test — either JS
|
|
39
|
+
* geometry data was released, or hydrating an individual mesh per visible
|
|
40
|
+
* piece would exceed the pick-mesh budget. Returns `'gpu'` after hydrating
|
|
41
|
+
* whatever was missing, so a following `scene.getMeshes()` covers every
|
|
42
|
+
* visible entity.
|
|
43
|
+
*
|
|
44
|
+
* Both pick paths MUST route through this. `pickRect` used to read
|
|
45
|
+
* `scene.getMeshes()` directly, which on a batched model is empty or
|
|
46
|
+
* partial, so rectangle select returned an empty set no matter how many
|
|
47
|
+
* elements the rect covered (#1904).
|
|
48
|
+
*/
|
|
49
|
+
private prepareBatchedPick;
|
|
34
50
|
/**
|
|
35
51
|
* Pick object at screen coordinates
|
|
36
52
|
* Respects visibility filtering so users can only select visible elements
|
|
@@ -51,11 +67,23 @@ export declare class PickingManager {
|
|
|
51
67
|
* filtered (per-asset visibility is binary and the asset count is
|
|
52
68
|
* tiny).
|
|
53
69
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
70
|
+
* Batched models take the same route as `pick()`: hydrate the
|
|
71
|
+
* missing individual meshes when that is affordable, otherwise fall
|
|
72
|
+
* back to `Scene.selectRect`, which over-selects relative to the
|
|
73
|
+
* pixel-exact GPU pass in three ways: it is bounding-box granular
|
|
74
|
+
* (a rect over empty space inside an element's bounds selects it),
|
|
75
|
+
* it has no depth test (occluded entities are selected), and it
|
|
76
|
+
* drops a section-planed or cropped entity only when the whole box
|
|
77
|
+
* is clipped away, where the pick shader discards per fragment.
|
|
78
|
+
* Hidden and isolation filtering do apply there. Reading
|
|
79
|
+
* `scene.getMeshes()` unconditionally is what made this return an
|
|
80
|
+
* empty set on every batched model (#1904).
|
|
81
|
+
*
|
|
82
|
+
* Point clouds never depend on mesh hydration — splats render into
|
|
83
|
+
* the pick pass on their own — so the CPU branch still runs the GPU
|
|
84
|
+
* pass for them and unions the two results. Skipping it would drop
|
|
85
|
+
* point selection on any mixed scene big enough to miss the
|
|
86
|
+
* pick-mesh budget.
|
|
59
87
|
*/
|
|
60
88
|
pickRect(x0: number, y0: number, x1: number, y1: number, options?: PickOptions, clip?: PickClipState | null): Promise<Set<number>>;
|
|
61
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picking-manager.d.ts","sourceRoot":"","sources":["../src/picking-manager.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAC5B;IAAE,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAChE,IAAI,CAAC;AAET,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,iBAAiB,CAAkC;gBAGvD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,iBAAiB,EACzB,oBAAoB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI;IAStD,+EAA+E;IAC/E,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IAI9D;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC;;;;;;;OAOG;IACG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"picking-manager.d.ts","sourceRoot":"","sources":["../src/picking-manager.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAC5B;IAAE,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAChE,IAAI,CAAC;AAET,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,iBAAiB,CAAkC;gBAGvD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,iBAAiB,EACzB,oBAAoB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI;IAStD,+EAA+E;IAC/E,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IAI9D;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,kBAAkB;IAoF1B;;;;;;;OAOG;IACG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmEhH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,QAAQ,CACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,EACrB,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,GAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAsF1B"}
|
package/dist/picking-manager.js
CHANGED
|
@@ -25,6 +25,99 @@ export class PickingManager {
|
|
|
25
25
|
setPicker(picker) {
|
|
26
26
|
this.picker = picker;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Prepare batched geometry for a GPU pick pass, shared by `pick()` and
|
|
30
|
+
* `pickRect()`.
|
|
31
|
+
*
|
|
32
|
+
* Returns `'cpu'` when the caller must fall back to a CPU test — either JS
|
|
33
|
+
* geometry data was released, or hydrating an individual mesh per visible
|
|
34
|
+
* piece would exceed the pick-mesh budget. Returns `'gpu'` after hydrating
|
|
35
|
+
* whatever was missing, so a following `scene.getMeshes()` covers every
|
|
36
|
+
* visible entity.
|
|
37
|
+
*
|
|
38
|
+
* Both pick paths MUST route through this. `pickRect` used to read
|
|
39
|
+
* `scene.getMeshes()` directly, which on a batched model is empty or
|
|
40
|
+
* partial, so rectangle select returned an empty set no matter how many
|
|
41
|
+
* elements the rect covered (#1904).
|
|
42
|
+
*/
|
|
43
|
+
prepareBatchedPick(options) {
|
|
44
|
+
const batchedMeshes = this.scene.getBatchedMeshes();
|
|
45
|
+
// Nothing batched: every mesh is already individually hydrated.
|
|
46
|
+
if (batchedMeshes.length === 0)
|
|
47
|
+
return 'gpu';
|
|
48
|
+
if (this.scene.isGeometryDataReleased())
|
|
49
|
+
return 'cpu';
|
|
50
|
+
// Collect every pickable expressId. We use the scene's authoritative
|
|
51
|
+
// mesh-data id set rather than each batch's `expressIds`, because a batch
|
|
52
|
+
// only records the PRIMARY expressId of each merged piece. When a door or
|
|
53
|
+
// window is colour-fused into a batch keyed by its host wall / opening,
|
|
54
|
+
// the filler's id lives only in the per-vertex entityIds (registered in
|
|
55
|
+
// meshDataMap by Scene.addMeshData). Reading batch.expressIds alone would
|
|
56
|
+
// skip the filler, so under isolation its mesh is never hydrated and
|
|
57
|
+
// pick() returns null (#1358).
|
|
58
|
+
const expressIds = new Set(this.scene.getAllMeshDataExpressIds());
|
|
59
|
+
// Track how many individual mesh pieces already exist for each (expressId:modelIndex).
|
|
60
|
+
// Multi-piece elements (windows/doors with submeshes) need all pieces for reliable picking.
|
|
61
|
+
const existingPieceCounts = new Map();
|
|
62
|
+
for (const mesh of this.scene.getMeshes()) {
|
|
63
|
+
const key = `${mesh.expressId}:${mesh.modelIndex ?? 'any'}`;
|
|
64
|
+
existingPieceCounts.set(key, (existingPieceCounts.get(key) ?? 0) + 1);
|
|
65
|
+
}
|
|
66
|
+
// Build required piece counts from MeshData for all visible entities.
|
|
67
|
+
const requiredPieceCounts = new Map();
|
|
68
|
+
const visibleExpressIds = [];
|
|
69
|
+
for (const expressId of expressIds) {
|
|
70
|
+
if (options?.hiddenIds?.has(expressId))
|
|
71
|
+
continue;
|
|
72
|
+
if (options?.isolatedIds !== null && options?.isolatedIds !== undefined && !options.isolatedIds.has(expressId))
|
|
73
|
+
continue;
|
|
74
|
+
visibleExpressIds.push(expressId);
|
|
75
|
+
const pieces = this.scene.getMeshDataPieces(expressId);
|
|
76
|
+
if (!pieces)
|
|
77
|
+
continue;
|
|
78
|
+
for (const piece of pieces) {
|
|
79
|
+
const key = `${piece.expressId}:${piece.modelIndex ?? 'any'}`;
|
|
80
|
+
requiredPieceCounts.set(key, (requiredPieceCounts.get(key) ?? 0) + 1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Count how many meshes we'd need to create for full GPU picking
|
|
84
|
+
// For multi-model and multi-piece elements, count missing piece instances per key.
|
|
85
|
+
let toCreate = 0;
|
|
86
|
+
for (const [key, requiredCount] of requiredPieceCounts) {
|
|
87
|
+
const existingCount = existingPieceCounts.get(key) ?? 0;
|
|
88
|
+
if (requiredCount > existingCount) {
|
|
89
|
+
toCreate += requiredCount - existingCount;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// PERFORMANCE: fall back to CPU for large models instead of creating GPU meshes.
|
|
93
|
+
// GPU picking requires individual mesh buffers; for 60K+ elements this is too slow.
|
|
94
|
+
// The CPU paths use bounding boxes - no GPU buffers needed.
|
|
95
|
+
const MAX_PICK_MESH_CREATION = 500;
|
|
96
|
+
if (toCreate > MAX_PICK_MESH_CREATION || (visibleExpressIds.length > 0 && requiredPieceCounts.size === 0)) {
|
|
97
|
+
return 'cpu';
|
|
98
|
+
}
|
|
99
|
+
// For smaller models, create GPU meshes for picking
|
|
100
|
+
// Only create meshes for VISIBLE elements (not hidden, and either no isolation or in isolated set)
|
|
101
|
+
// For multi-model support: create meshes for ALL (expressId, modelIndex) pairs
|
|
102
|
+
const baselineExistingCounts = new Map(existingPieceCounts);
|
|
103
|
+
const seenOrdinalsByKey = new Map();
|
|
104
|
+
for (const expressId of visibleExpressIds) {
|
|
105
|
+
const pieces = this.scene.getMeshDataPieces(expressId);
|
|
106
|
+
if (pieces) {
|
|
107
|
+
for (const piece of pieces) {
|
|
108
|
+
const meshKey = `${piece.expressId}:${piece.modelIndex ?? 'any'}`;
|
|
109
|
+
const ordinal = seenOrdinalsByKey.get(meshKey) ?? 0;
|
|
110
|
+
seenOrdinalsByKey.set(meshKey, ordinal + 1);
|
|
111
|
+
const baselineExisting = baselineExistingCounts.get(meshKey) ?? 0;
|
|
112
|
+
// Assume existing pieces correspond to the first N pieces in stable order.
|
|
113
|
+
if (ordinal < baselineExisting)
|
|
114
|
+
continue;
|
|
115
|
+
this.createMeshFromDataFn(piece);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return 'gpu';
|
|
120
|
+
}
|
|
28
121
|
/**
|
|
29
122
|
* Pick object at screen coordinates
|
|
30
123
|
* Respects visibility filtering so users can only select visible elements
|
|
@@ -52,103 +145,18 @@ export class PickingManager {
|
|
|
52
145
|
if (options?.isStreaming) {
|
|
53
146
|
return null;
|
|
54
147
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return null;
|
|
66
|
-
return {
|
|
67
|
-
expressId: hit.expressId,
|
|
68
|
-
modelIndex: hit.modelIndex,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
// Collect every pickable expressId. We use the scene's authoritative
|
|
72
|
-
// mesh-data id set rather than each batch's `expressIds`, because a batch
|
|
73
|
-
// only records the PRIMARY expressId of each merged piece. When a door or
|
|
74
|
-
// window is colour-fused into a batch keyed by its host wall / opening,
|
|
75
|
-
// the filler's id lives only in the per-vertex entityIds (registered in
|
|
76
|
-
// meshDataMap by Scene.addMeshData). Reading batch.expressIds alone would
|
|
77
|
-
// skip the filler, so under isolation its mesh is never hydrated and
|
|
78
|
-
// pick() returns null (#1358).
|
|
79
|
-
const expressIds = new Set(this.scene.getAllMeshDataExpressIds());
|
|
80
|
-
// Track how many individual mesh pieces already exist for each (expressId:modelIndex).
|
|
81
|
-
// Multi-piece elements (windows/doors with submeshes) need all pieces for reliable picking.
|
|
82
|
-
const existingPieceCounts = new Map();
|
|
83
|
-
for (const mesh of meshes) {
|
|
84
|
-
const key = `${mesh.expressId}:${mesh.modelIndex ?? 'any'}`;
|
|
85
|
-
existingPieceCounts.set(key, (existingPieceCounts.get(key) ?? 0) + 1);
|
|
86
|
-
}
|
|
87
|
-
// Build required piece counts from MeshData for all visible entities.
|
|
88
|
-
const requiredPieceCounts = new Map();
|
|
89
|
-
const visibleExpressIds = [];
|
|
90
|
-
for (const expressId of expressIds) {
|
|
91
|
-
if (options?.hiddenIds?.has(expressId))
|
|
92
|
-
continue;
|
|
93
|
-
if (options?.isolatedIds !== null && options?.isolatedIds !== undefined && !options.isolatedIds.has(expressId))
|
|
94
|
-
continue;
|
|
95
|
-
visibleExpressIds.push(expressId);
|
|
96
|
-
const pieces = this.scene.getMeshDataPieces(expressId);
|
|
97
|
-
if (!pieces)
|
|
98
|
-
continue;
|
|
99
|
-
for (const piece of pieces) {
|
|
100
|
-
const key = `${piece.expressId}:${piece.modelIndex ?? 'any'}`;
|
|
101
|
-
requiredPieceCounts.set(key, (requiredPieceCounts.get(key) ?? 0) + 1);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
// Count how many meshes we'd need to create for full GPU picking
|
|
105
|
-
// For multi-model and multi-piece elements, count missing piece instances per key.
|
|
106
|
-
let toCreate = 0;
|
|
107
|
-
for (const [key, requiredCount] of requiredPieceCounts) {
|
|
108
|
-
const existingCount = existingPieceCounts.get(key) ?? 0;
|
|
109
|
-
if (requiredCount > existingCount) {
|
|
110
|
-
toCreate += requiredCount - existingCount;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
// PERFORMANCE FIX: Use CPU raycasting for large models instead of creating GPU meshes
|
|
114
|
-
// GPU picking requires individual mesh buffers; for 60K+ elements this is too slow
|
|
115
|
-
// CPU raycasting uses bounding box filtering + triangle tests - no GPU buffers needed
|
|
116
|
-
const MAX_PICK_MESH_CREATION = 500;
|
|
117
|
-
if (toCreate > MAX_PICK_MESH_CREATION || (visibleExpressIds.length > 0 && requiredPieceCounts.size === 0)) {
|
|
118
|
-
// Use CPU raycasting fallback - works regardless of how many individual meshes exist
|
|
119
|
-
const ray = this.camera.unprojectToRay(scaledX, scaledY, this.canvas.width, this.canvas.height);
|
|
120
|
-
const hit = this.scene.raycast(ray.origin, ray.direction, options?.hiddenIds, options?.isolatedIds, clip);
|
|
121
|
-
if (!hit)
|
|
122
|
-
return null;
|
|
123
|
-
// CPU raycasting returns expressId and modelIndex
|
|
124
|
-
return {
|
|
125
|
-
expressId: hit.expressId,
|
|
126
|
-
modelIndex: hit.modelIndex,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
// For smaller models, create GPU meshes for picking
|
|
130
|
-
// Only create meshes for VISIBLE elements (not hidden, and either no isolation or in isolated set)
|
|
131
|
-
// For multi-model support: create meshes for ALL (expressId, modelIndex) pairs
|
|
132
|
-
const baselineExistingCounts = new Map(existingPieceCounts);
|
|
133
|
-
const seenOrdinalsByKey = new Map();
|
|
134
|
-
for (const expressId of visibleExpressIds) {
|
|
135
|
-
const pieces = this.scene.getMeshDataPieces(expressId);
|
|
136
|
-
if (pieces) {
|
|
137
|
-
for (const piece of pieces) {
|
|
138
|
-
const meshKey = `${piece.expressId}:${piece.modelIndex ?? 'any'}`;
|
|
139
|
-
const ordinal = seenOrdinalsByKey.get(meshKey) ?? 0;
|
|
140
|
-
seenOrdinalsByKey.set(meshKey, ordinal + 1);
|
|
141
|
-
const baselineExisting = baselineExistingCounts.get(meshKey) ?? 0;
|
|
142
|
-
// Assume existing pieces correspond to the first N pieces in stable order.
|
|
143
|
-
if (ordinal < baselineExisting)
|
|
144
|
-
continue;
|
|
145
|
-
this.createMeshFromDataFn(piece);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
// Get updated meshes list (includes newly created ones)
|
|
150
|
-
meshes = this.scene.getMeshes();
|
|
148
|
+
if (this.prepareBatchedPick(options) === 'cpu') {
|
|
149
|
+
const ray = this.camera.unprojectToRay(scaledX, scaledY, this.canvas.width, this.canvas.height);
|
|
150
|
+
const hit = this.scene.raycast(ray.origin, ray.direction, options?.hiddenIds, options?.isolatedIds, clip);
|
|
151
|
+
if (!hit)
|
|
152
|
+
return null;
|
|
153
|
+
// CPU raycasting returns expressId and modelIndex
|
|
154
|
+
return {
|
|
155
|
+
expressId: hit.expressId,
|
|
156
|
+
modelIndex: hit.modelIndex,
|
|
157
|
+
};
|
|
151
158
|
}
|
|
159
|
+
let meshes = this.scene.getMeshes();
|
|
152
160
|
// Apply visibility filtering to meshes before picking
|
|
153
161
|
// This ensures users can only select elements that are actually visible
|
|
154
162
|
if (options?.hiddenIds && options.hiddenIds.size > 0) {
|
|
@@ -179,11 +187,23 @@ export class PickingManager {
|
|
|
179
187
|
* filtered (per-asset visibility is binary and the asset count is
|
|
180
188
|
* tiny).
|
|
181
189
|
*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
190
|
+
* Batched models take the same route as `pick()`: hydrate the
|
|
191
|
+
* missing individual meshes when that is affordable, otherwise fall
|
|
192
|
+
* back to `Scene.selectRect`, which over-selects relative to the
|
|
193
|
+
* pixel-exact GPU pass in three ways: it is bounding-box granular
|
|
194
|
+
* (a rect over empty space inside an element's bounds selects it),
|
|
195
|
+
* it has no depth test (occluded entities are selected), and it
|
|
196
|
+
* drops a section-planed or cropped entity only when the whole box
|
|
197
|
+
* is clipped away, where the pick shader discards per fragment.
|
|
198
|
+
* Hidden and isolation filtering do apply there. Reading
|
|
199
|
+
* `scene.getMeshes()` unconditionally is what made this return an
|
|
200
|
+
* empty set on every batched model (#1904).
|
|
201
|
+
*
|
|
202
|
+
* Point clouds never depend on mesh hydration — splats render into
|
|
203
|
+
* the pick pass on their own — so the CPU branch still runs the GPU
|
|
204
|
+
* pass for them and unions the two results. Skipping it would drop
|
|
205
|
+
* point selection on any mixed scene big enough to miss the
|
|
206
|
+
* pick-mesh budget.
|
|
187
207
|
*/
|
|
188
208
|
async pickRect(x0, y0, x1, y1, options, clip) {
|
|
189
209
|
if (!this.picker)
|
|
@@ -197,6 +217,47 @@ export class PickingManager {
|
|
|
197
217
|
const sx1 = x1 * scaleX, sy1 = y1 * scaleY;
|
|
198
218
|
if (options?.isStreaming)
|
|
199
219
|
return new Set();
|
|
220
|
+
if (this.prepareBatchedPick(options) === 'cpu') {
|
|
221
|
+
const boxHits = this.scene.selectRect(sx0, sy0, sx1, sy1, this.canvas.width, this.canvas.height, this.camera.getViewProjMatrix().m, options?.hiddenIds, options?.isolatedIds, clip);
|
|
222
|
+
const cpuPointSnap = this.pointPickProvider?.() ?? null;
|
|
223
|
+
if (!cpuPointSnap || cpuPointSnap.nodes.length === 0)
|
|
224
|
+
return boxHits;
|
|
225
|
+
// Point-only pick pass. Meshes are deliberately `[]`: this branch runs
|
|
226
|
+
// precisely because the per-element pick buffers were NOT hydrated, so
|
|
227
|
+
// `scene.getMeshes()` holds an arbitrary partial set (highlight meshes
|
|
228
|
+
// and whatever an earlier pick left behind) whose ids `selectRect`
|
|
229
|
+
// already covers.
|
|
230
|
+
//
|
|
231
|
+
// Instanced templates are left out for a different reason. The
|
|
232
|
+
// instanced pick pass IS visibility-filtered — its fragment shader
|
|
233
|
+
// discards on `instFlags` bit 1, which `Scene` sets for every
|
|
234
|
+
// occurrence that is hidden or excluded by isolation — so unioning its
|
|
235
|
+
// hits would not re-admit anything. It is left out because it would
|
|
236
|
+
// add no ids and can only subtract. Every instanced occurrence whose
|
|
237
|
+
// template has geometry folds its world AABB into
|
|
238
|
+
// `Scene.boundingBoxes`, so `selectRect` above has already returned
|
|
239
|
+
// those ids under the same two filters (a template with no finite
|
|
240
|
+
// local box is skipped there, and rasterises nothing here either).
|
|
241
|
+
// Meanwhile the instanced draw shares this pass's depth target, so an
|
|
242
|
+
// occurrence in front of a splat would occlude it and drop a point hit
|
|
243
|
+
// that nothing else on this path can supply — point assets have no
|
|
244
|
+
// entry in `boundingBoxes` at all.
|
|
245
|
+
let pointHits;
|
|
246
|
+
try {
|
|
247
|
+
pointHits = await this.picker.pickRect(sx0, sy0, sx1, sy1, this.canvas.width, this.canvas.height, [], this.camera.getViewProjMatrix().m, cpuPointSnap.nodes, cpuPointSnap.sizing, undefined, clip);
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
// `picker.pickRect` rethrows any readback failure that is not a
|
|
251
|
+
// device-loss abort. The box hits are already computed and this
|
|
252
|
+
// branch could not throw at all before the point pass was added,
|
|
253
|
+
// so degrade to them instead of failing the whole rectangle select.
|
|
254
|
+
console.warn('[PickingManager] point-cloud rect pick failed; returning bounding-box hits only:', err);
|
|
255
|
+
return boxHits;
|
|
256
|
+
}
|
|
257
|
+
for (const id of pointHits)
|
|
258
|
+
boxHits.add(id);
|
|
259
|
+
return boxHits;
|
|
260
|
+
}
|
|
200
261
|
let meshes = this.scene.getMeshes();
|
|
201
262
|
if (options?.hiddenIds && options.hiddenIds.size > 0) {
|
|
202
263
|
meshes = meshes.filter((m) => !options.hiddenIds.has(m.expressId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picking-manager.js","sourceRoot":"","sources":["../src/picking-manager.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAuB/D,MAAM,OAAO,cAAc;IACf,MAAM,CAAS;IACf,KAAK,CAAQ;IACb,MAAM,CAAgB;IACtB,MAAM,CAAoB;IAC1B,oBAAoB,CAA+B;IACnD,iBAAiB,GAA6B,IAAI,CAAC;IAE3D,YACI,MAAc,EACd,KAAY,EACZ,MAAqB,EACrB,MAAyB,EACzB,oBAAkD;QAElD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACrD,CAAC;IAED,+EAA+E;IAC/E,oBAAoB,CAAC,QAAkC;QACnD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAqB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"picking-manager.js","sourceRoot":"","sources":["../src/picking-manager.ts"],"names":[],"mappings":"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"}
|