gps-plus-slam-app-framework 1.1.0 → 1.3.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/{app-selectors-CR9OWodf.d.ts → app-selectors-B8VQoMDY.d.ts} +1 -1
- package/dist/ar/bresenham3d.d.ts +2 -0
- package/dist/ar/bresenham3d.js +81 -0
- package/dist/ar/camera-blit-capture.d.ts +1 -1
- package/dist/ar/camera-blit-capture.js +43 -2
- package/dist/ar/capability-checker.d.ts +1 -1
- package/dist/ar/capture-failure-tracker.d.ts +1 -1
- package/dist/ar/chromium-camera-access-workaround.d.ts +1 -1
- package/dist/ar/depth-sampler.d.ts +3 -3
- package/dist/ar/depth-sampler.js +63 -8
- package/dist/ar/depth-unprojection.d.ts +2 -0
- package/dist/ar/depth-unprojection.js +94 -0
- package/dist/ar/enable-gps-ar.d.ts +1 -1
- package/dist/ar/enable-gps-ar.js +1 -1
- package/dist/ar/frame-loop.d.ts +1 -1
- package/dist/ar/image-capture.d.ts +2 -2
- package/dist/ar/image-capture.js +9 -6
- package/dist/ar/index.d.ts +19 -16
- package/dist/ar/index.js +7 -4
- package/dist/ar/occupancy-grid.d.ts +2 -0
- package/dist/ar/occupancy-grid.js +164 -0
- package/dist/ar/replay-scene.d.ts +1 -1
- package/dist/ar/replay-scene.js +1 -1
- package/dist/ar/scene-node-names.d.ts +1 -1
- package/dist/ar/webxr-nue-basis.d.ts +2 -0
- package/dist/{webxr-nue-basis-BbdqhqY6.js → ar/webxr-nue-basis.js} +1 -1
- package/dist/ar/webxr-session.d.ts +3 -3
- package/dist/ar/webxr-session.js +1 -969
- package/dist/ar/xr-camera-texture.d.ts +1 -1
- package/dist/ar/xr-error-handler.d.ts +1 -1
- package/dist/ar/xr-frame-loop.d.ts +1 -1
- package/dist/{ar-types-isPsQptb.d.ts → ar-types-Dan1MVTi.d.ts} +28 -5
- package/dist/{ar-world-group-alignment-Dn4rQk_c.d.ts → ar-world-group-alignment-C9lwwIyI.d.ts} +1 -1
- package/dist/bresenham3d-CFfd7n6B.d.ts +59 -0
- package/dist/{camera-blit-capture-75WWa9Xb.d.ts → camera-blit-capture-CnxUDbKx.d.ts} +29 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/{create-slam-app-store-B76AGaI0.d.ts → create-slam-app-store-BljusOua.d.ts} +5 -5
- package/dist/depth-sampler-Bhanfwla.d.ts +169 -0
- package/dist/depth-unprojection-Y6i_mJuT.d.ts +52 -0
- package/dist/{enable-gps-ar-DNbO0zbg.d.ts → enable-gps-ar-BfUJOgpW.d.ts} +4 -4
- package/dist/{file-system-TIsDfamK.d.ts → file-system-CwXTNHmB.d.ts} +1 -1
- package/dist/file-system-utils-CXIoL-DM.d.ts +40 -0
- package/dist/{frame-conversions-D2EYjeNa.d.ts → frame-conversions-BfsafGWR.d.ts} +1 -1
- package/dist/{fused-path-BdVHmDW9.d.ts → fused-path-DJoVu98b.d.ts} +1 -1
- package/dist/geo/h3-proximity.d.ts +1 -1
- package/dist/geo/index.d.ts +1 -1
- package/dist/{gps-anchor-CISLPQIb.d.ts → gps-anchor-dYeCvvp5.d.ts} +1 -1
- package/dist/{gps-ar-pose-sampler-BypXZUqC.d.ts → gps-ar-pose-sampler-DVb96iOy.d.ts} +1 -1
- package/dist/{gps-event-coordinator-BKVZbS1M.d.ts → gps-event-coordinator-CWIDOk4U.d.ts} +3 -3
- package/dist/{image-capture-BXZUmj7j.d.ts → image-capture-qAZ5Fh5X.d.ts} +44 -5
- package/dist/{index-BB2KEWbN2.d.ts → index-BYYUdf9v.d.ts} +1 -1
- package/dist/index.d.ts +67 -64
- package/dist/index.js +7 -4
- package/dist/{leaflet-map-overlay-jNt-kcUr.d.ts → leaflet-map-overlay-6CJC-E1l.d.ts} +1 -1
- package/dist/{map-data-BGIBM5rv.d.ts → map-data-CkloBxIl.d.ts} +1 -1
- package/dist/{map-overlay-draw-DcGs9UV3.d.ts → map-overlay-draw-krOKwDAq.d.ts} +1 -1
- package/dist/{null-storage-backend-BPQJSaMw.d.ts → null-storage-backend-uKQE8tl7.d.ts} +2 -2
- package/dist/occupancy-grid-BRNRaPyT.d.ts +72 -0
- package/dist/{opfs-storage-LsLY6VZV.d.ts → opfs-storage-D5zAn_lx.d.ts} +2 -2
- package/dist/{opfs-storage-backend-u4QKvgvP.d.ts → opfs-storage-backend-6aYMUZlJ.d.ts} +2 -2
- package/dist/{persistence-middleware-xB5sTllJ.d.ts → persistence-middleware-B9ei4Nhx.d.ts} +1 -1
- package/dist/{recording-options-BSFpBSZH.d.ts → recording-options-DJBXuMxV.d.ts} +12 -2
- package/dist/{recording-replayer-CTL2cUE0.d.ts → recording-replayer-r0DZ9ALp.d.ts} +2 -2
- package/dist/{recording-slice-Cb888P6d.d.ts → recording-slice-89O07ebs.d.ts} +10 -2
- package/dist/{replay-engine-B-5GIZtc.d.ts → replay-engine-XpDa0dy1.d.ts} +1 -1
- package/dist/{replay-scene-DkNfldPh.d.ts → replay-scene-Bw58VL6p.d.ts} +3 -3
- package/dist/sensors/gps-error-handler.d.ts +1 -1
- package/dist/sensors/gps.d.ts +1 -1
- package/dist/sensors/index.d.ts +3 -3
- package/dist/sensors/permission-checker.d.ts +1 -1
- package/dist/state/app-selectors.d.ts +1 -1
- package/dist/state/app-selectors.js +3 -1
- package/dist/state/combined-root-state.d.ts +1 -1
- package/dist/state/create-slam-app-store.d.ts +1 -1
- package/dist/state/gps-ar-pose-sampler.d.ts +3 -3
- package/dist/state/gps-event-coordinator.d.ts +1 -1
- package/dist/state/index.d.ts +16 -16
- package/dist/state/persistence-middleware.d.ts +1 -1
- package/dist/state/recording-options.d.ts +1 -1
- package/dist/state/recording-options.js +5 -3
- package/dist/state/recording-replayer.d.ts +2 -2
- package/dist/state/recording-slice.d.ts +1 -1
- package/dist/state/recording-slice.js +11 -2
- package/dist/state/replay-engine.d.ts +1 -1
- package/dist/state/store-subscribers.d.ts +2 -2
- package/dist/state/subscribe-to-selector.d.ts +1 -1
- package/dist/state/tracking-quality.d.ts +1 -1
- package/dist/state/tracking-quality.js +1 -1
- package/dist/state/tracking-slice.d.ts +1 -1
- package/dist/storage/file-system-utils.d.ts +2 -2
- package/dist/storage/file-system-utils.js +17 -1
- package/dist/storage/file-system.d.ts +1 -1
- package/dist/storage/file-system.js +2 -2
- package/dist/storage/index.d.ts +8 -8
- package/dist/storage/null-storage-backend.d.ts +1 -1
- package/dist/storage/opfs-storage-backend.d.ts +1 -1
- package/dist/storage/opfs-storage.d.ts +1 -1
- package/dist/storage/opfs-storage.js +4 -4
- package/dist/storage/storage-backend.d.ts +1 -1
- package/dist/storage/zip-export.d.ts +1 -1
- package/dist/storage/zip-export.js +1 -1
- package/dist/storage/zip-reader.d.ts +1 -1
- package/dist/storage/zip-reader.js +1 -1
- package/dist/{storage-backend-yDSKafAQ.d.ts → storage-backend-Do6YDpNo.d.ts} +1 -1
- package/dist/{store-subscribers-swlbtg_z.d.ts → store-subscribers-0YWyOLvV.d.ts} +2 -2
- package/dist/{subscribe-to-selector--KQpgLXG.d.ts → subscribe-to-selector-CZ6k1NFP.d.ts} +1 -1
- package/dist/test-utils/browser-mocks.d.ts +1 -1
- package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
- package/dist/test-utils/zip-round-trip-helpers.js +3 -2
- package/dist/{tracking-slice-CDREeoZ_.d.ts → tracking-slice-CdK8c-8P.d.ts} +1 -1
- package/dist/types/ar-types.d.ts +2 -2
- package/dist/types/geo-types.d.ts +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/utils/concurrency.d.ts +1 -1
- package/dist/utils/failure-tracker.d.ts +1 -1
- package/dist/utils/format-file-size.d.ts +1 -1
- package/dist/utils/fused-path.d.ts +1 -1
- package/dist/utils/index.d.ts +6 -6
- package/dist/utils/list-formatter.d.ts +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/visualization/accuracy-circles.d.ts +1 -1
- package/dist/visualization/alignment-lerper.d.ts +1 -1
- package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
- package/dist/visualization/camera-follower.d.ts +1 -1
- package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
- package/dist/visualization/frame-conversions.d.ts +1 -1
- package/dist/visualization/frustum-visibility.d.ts +1 -1
- package/dist/visualization/gps-anchor.d.ts +1 -1
- package/dist/visualization/gps-compass-cubes.d.ts +1 -1
- package/dist/visualization/gps-event-markers.d.ts +1 -1
- package/dist/visualization/gps-event-markers.js +1 -1
- package/dist/visualization/hit-test-reticle.d.ts +1 -1
- package/dist/visualization/hit-test-reticle.js +1 -1
- package/dist/visualization/index.d.ts +18 -18
- package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
- package/dist/visualization/lerp-utils.d.ts +1 -1
- package/dist/visualization/map-data.d.ts +1 -1
- package/dist/visualization/map-overlay-draw.d.ts +1 -1
- package/dist/visualization/map-overlay.d.ts +1 -1
- package/dist/visualization/three-dispose.d.ts +1 -1
- package/dist/visualization/vis-colors.d.ts +1 -1
- package/dist/{webxr-session-BnArFCew.d.ts → webxr-session-GjZ2BIpS.d.ts} +21 -10
- package/dist/webxr-session-TIaD883f.js +1054 -0
- package/dist/{zip-export-C0_ErAqT.d.ts → zip-export-G14hkSPG.d.ts} +1 -1
- package/package.json +2 -2
- package/dist/depth-sampler-CqrkRr2N.d.ts +0 -108
- package/dist/file-system-utils-BH6uIs2i.d.ts +0 -24
- /package/dist/{accuracy-circles-DEKr0Hoh.d.ts → accuracy-circles-BpwWAs8G.d.ts} +0 -0
- /package/dist/{alignment-lerper-CCZJf-Xb.d.ts → alignment-lerper-Dm9G7JJO.d.ts} +0 -0
- /package/dist/{camera-follower-B-nS1sr6.d.ts → camera-follower-C2mwEn7c.d.ts} +0 -0
- /package/dist/{capability-checker-BTCmZRL4.d.ts → capability-checker-CQXJHxXg.d.ts} +0 -0
- /package/dist/{capture-failure-tracker-D4HYJNOj.d.ts → capture-failure-tracker-CUeU3L_M.d.ts} +0 -0
- /package/dist/{chromium-camera-access-workaround-MifIwK9x.d.ts → chromium-camera-access-workaround-Jqbn0apH.d.ts} +0 -0
- /package/dist/{concurrency-Bsmv53qw.d.ts → concurrency-CO1FQvs3.d.ts} +0 -0
- /package/dist/{css3d-renderer-manager-EDED3nvg.d.ts → css3d-renderer-manager-ptu_t3B3.d.ts} +0 -0
- /package/dist/{failure-tracker-D7ELffm0.d.ts → failure-tracker-Cn8Fo9D4.d.ts} +0 -0
- /package/dist/{format-file-size-B7gJb3Md.d.ts → format-file-size-CLCZz3lC.d.ts} +0 -0
- /package/dist/{frame-loop-BTeRpDm4.d.ts → frame-loop-CMewS8cY.d.ts} +0 -0
- /package/dist/{frustum-visibility-DGnJqls0.d.ts → frustum-visibility-CmI96ESS.d.ts} +0 -0
- /package/dist/{geo-types-clgzl8b5.d.ts → geo-types-SaPnIEUM.d.ts} +0 -0
- /package/dist/{gps-B7AlMPz5.d.ts → gps-VuezJWK3.d.ts} +0 -0
- /package/dist/{gps-compass-cubes-Ys6Hf1nc.d.ts → gps-compass-cubes-BM1uGiYV.d.ts} +0 -0
- /package/dist/{gps-error-handler-BLDhUlw5.d.ts → gps-error-handler-CJl_2MVm.d.ts} +0 -0
- /package/dist/{gps-event-markers-BlHq3jYV.d.ts → gps-event-markers-Dc9FT-q1.d.ts} +0 -0
- /package/dist/{h3-proximity-DJnghtir.d.ts → h3-proximity-I1msGPgE.d.ts} +0 -0
- /package/dist/{hit-test-reticle-BGXOxrUh.d.ts → hit-test-reticle-BEzEybxZ.d.ts} +0 -0
- /package/dist/{index--ldLph4V.d.ts → index-CF05QV2m.d.ts} +0 -0
- /package/dist/{lerp-utils-DNcSmKVX.d.ts → lerp-utils-BpV-0Dtk.d.ts} +0 -0
- /package/dist/{list-formatter-CsqcU4v5.d.ts → list-formatter-RRcBe8Vg.d.ts} +0 -0
- /package/dist/{logger-BZ44Dhd3.d.ts → logger-BEHXsnnq.d.ts} +0 -0
- /package/dist/{map-overlay-yrFsUtGv.d.ts → map-overlay-bcogY5fK.d.ts} +0 -0
- /package/dist/{permission-checker-CfV7INCa.d.ts → permission-checker-GpAiSCwd.d.ts} +0 -0
- /package/dist/{scene-node-names-IHW7HR4S.d.ts → scene-node-names-Bu0S66H1.d.ts} +0 -0
- /package/dist/{three-dispose-WTBAfaWU.d.ts → three-dispose-D950t71B.d.ts} +0 -0
- /package/dist/{vis-colors-Djnyg_UH.d.ts → vis-colors-D6omC64K.d.ts} +0 -0
- /package/dist/{index-22v8MXJX.d.ts → webxr-nue-basis-CqKQmZzT.d.ts} +0 -0
- /package/dist/{xr-camera-texture-BU5YvKAM.d.ts → xr-camera-texture-DBwCaKTd.d.ts} +0 -0
- /package/dist/{xr-error-handler-DcUFshNF.d.ts → xr-error-handler-C0AQRmxs.d.ts} +0 -0
- /package/dist/{xr-frame-loop-BKckC7xC.d.ts → xr-frame-loop-BtYytZJg.d.ts} +0 -0
- /package/dist/{zip-reader-B2lzN8F5.d.ts → zip-reader-DSEXt7K6.d.ts} +0 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { createDepthUnprojector } from "./depth-unprojection.js";
|
|
2
|
+
import { bresenham3d } from "./bresenham3d.js";
|
|
3
|
+
//#region ../src/ar/occupancy-grid.ts
|
|
4
|
+
var OccupancyGrid = class {
|
|
5
|
+
cellSizeM;
|
|
6
|
+
carveStopCells;
|
|
7
|
+
cells = /* @__PURE__ */ new Map();
|
|
8
|
+
constructor(options) {
|
|
9
|
+
const cellSizeM = options?.cellSizeM ?? .15;
|
|
10
|
+
const carveStopCells = options?.carveStopCells ?? 2;
|
|
11
|
+
if (!Number.isFinite(cellSizeM) || cellSizeM <= 0) throw new RangeError(`cellSizeM must be a positive number, got ${cellSizeM}`);
|
|
12
|
+
if (!Number.isSafeInteger(carveStopCells) || carveStopCells < 0) throw new RangeError(`carveStopCells must be a non-negative integer, got ${carveStopCells}`);
|
|
13
|
+
this.cellSizeM = cellSizeM;
|
|
14
|
+
this.carveStopCells = carveStopCells;
|
|
15
|
+
}
|
|
16
|
+
/** Number of occupied cells. */
|
|
17
|
+
get size() {
|
|
18
|
+
return this.cells.size;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Fold one depth sample into the grid: unproject each point, carve free
|
|
22
|
+
* space from the camera cell to the point cell, then count the point's
|
|
23
|
+
* cell as occupied. Points that cannot be unprojected (no
|
|
24
|
+
* projectionMatrix on old recordings, invalid depth/coords) are skipped.
|
|
25
|
+
*
|
|
26
|
+
* Carving and incrementing run as two separate passes over the sample's
|
|
27
|
+
* points: all rays are carved first, then every endpoint is incremented.
|
|
28
|
+
* A single interleaved pass would be order-dependent — a deeper point's
|
|
29
|
+
* carve could erase the endpoint a nearer point added earlier in the same
|
|
30
|
+
* sample. Splitting the passes makes the result deterministic and lets an
|
|
31
|
+
* endpoint observed within a sample survive other rays in that same
|
|
32
|
+
* sample. (Deeper-carves-nearer still applies ACROSS samples: a later
|
|
33
|
+
* sample's ray carves an earlier sample's endpoint as before.)
|
|
34
|
+
*
|
|
35
|
+
* @returns the number of points actually added.
|
|
36
|
+
*/
|
|
37
|
+
addSample(sample) {
|
|
38
|
+
if (!isFiniteTriple(sample.cameraPos)) return 0;
|
|
39
|
+
const unprojector = createDepthUnprojector(sample.cameraPos, sample.cameraRot, sample.projectionMatrix);
|
|
40
|
+
if (!unprojector) return 0;
|
|
41
|
+
const cameraCell = this.cellForPosition(sample.cameraPos);
|
|
42
|
+
const endpoints = [];
|
|
43
|
+
for (const point of sample.points) {
|
|
44
|
+
const world = unprojector.unproject(point);
|
|
45
|
+
if (!world) continue;
|
|
46
|
+
const cell = this.cellForPosition(world);
|
|
47
|
+
if (!cellsEqual(cameraCell, cell)) this.carve(cameraCell, cell);
|
|
48
|
+
endpoints.push({
|
|
49
|
+
cell,
|
|
50
|
+
rgb: point.rgb
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
for (const endpoint of endpoints) this.increment(endpoint.cell, endpoint.rgb);
|
|
54
|
+
return endpoints.length;
|
|
55
|
+
}
|
|
56
|
+
/** Occupied cells observed at least `minObservations` times (default 1). */
|
|
57
|
+
getOccupiedCells(minObservations = 1) {
|
|
58
|
+
const result = [];
|
|
59
|
+
for (const record of this.cells.values()) if (record.count >= minObservations) result.push(record.cell);
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
/** Quantize a raw-WebXR position to its grid cell (round per axis). */
|
|
63
|
+
cellForPosition(pos) {
|
|
64
|
+
return [
|
|
65
|
+
Math.round(pos[0] / this.cellSizeM) + 0,
|
|
66
|
+
Math.round(pos[1] / this.cellSizeM) + 0,
|
|
67
|
+
Math.round(pos[2] / this.cellSizeM) + 0
|
|
68
|
+
];
|
|
69
|
+
}
|
|
70
|
+
/** Center of a cell in raw WebXR space (round-consistent: cell · cellSizeM). */
|
|
71
|
+
getCellCenter(cell) {
|
|
72
|
+
return [
|
|
73
|
+
cell[0] * this.cellSizeM,
|
|
74
|
+
cell[1] * this.cellSizeM,
|
|
75
|
+
cell[2] * this.cellSizeM
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Running-average color of the cell's colored observations (Iter 8), or
|
|
80
|
+
* null when the cell is unknown or was only ever observed without color
|
|
81
|
+
* (rgb option off / pre-Iter-8 recordings) — consumers fall back to
|
|
82
|
+
* height-based coloring. Channels are rounded and clamped to 0–255.
|
|
83
|
+
*/
|
|
84
|
+
getCellColor(cell) {
|
|
85
|
+
const record = this.cells.get(cellKey(cell));
|
|
86
|
+
if (!record || record.colorCount === 0) return null;
|
|
87
|
+
const average = (sum) => Math.min(255, Math.max(0, Math.round(sum / record.colorCount)));
|
|
88
|
+
return [
|
|
89
|
+
average(record.colorSum[0]),
|
|
90
|
+
average(record.colorSum[1]),
|
|
91
|
+
average(record.colorSum[2])
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Walk the grid from `startPos` to `endPos` and return the center of the
|
|
96
|
+
* first cell occupied at least `minObservations` times, or null.
|
|
97
|
+
* Port of Unity's `TryRaycast` (hook for cursor/floor-detection parity).
|
|
98
|
+
*/
|
|
99
|
+
raycast(startPos, endPos, minObservations = 1) {
|
|
100
|
+
if (!isFiniteTriple(startPos) || !isFiniteTriple(endPos)) return null;
|
|
101
|
+
let hit = null;
|
|
102
|
+
bresenham3d(this.cellForPosition(startPos), this.cellForPosition(endPos), (cell) => {
|
|
103
|
+
const record = this.cells.get(cellKey(cell));
|
|
104
|
+
if (record && record.count >= minObservations) {
|
|
105
|
+
hit = cell;
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
});
|
|
110
|
+
return hit ? this.getCellCenter(hit) : null;
|
|
111
|
+
}
|
|
112
|
+
/** Remove all occupied cells (e.g. on store swap / new session). */
|
|
113
|
+
clear() {
|
|
114
|
+
this.cells.clear();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Delete occupied cells along the camera→point ray (the space was seen
|
|
118
|
+
* through, so it must be free), stopping `carveStopCells` dominant-axis
|
|
119
|
+
* steps before the endpoint. The endpoint cell itself is additionally
|
|
120
|
+
* protected so a current observation is never erased (relevant for
|
|
121
|
+
* carveStopCells = 0 and for the unconditional start-cell visit).
|
|
122
|
+
*/
|
|
123
|
+
carve(cameraCell, pointCell) {
|
|
124
|
+
bresenham3d(cameraCell, pointCell, (cell) => {
|
|
125
|
+
if (!cellsEqual(cell, pointCell)) this.cells.delete(cellKey(cell));
|
|
126
|
+
return true;
|
|
127
|
+
}, this.carveStopCells);
|
|
128
|
+
}
|
|
129
|
+
increment(cell, rgb) {
|
|
130
|
+
const key = cellKey(cell);
|
|
131
|
+
let record = this.cells.get(key);
|
|
132
|
+
if (!record) {
|
|
133
|
+
record = {
|
|
134
|
+
cell,
|
|
135
|
+
count: 0,
|
|
136
|
+
colorCount: 0,
|
|
137
|
+
colorSum: [
|
|
138
|
+
0,
|
|
139
|
+
0,
|
|
140
|
+
0
|
|
141
|
+
]
|
|
142
|
+
};
|
|
143
|
+
this.cells.set(key, record);
|
|
144
|
+
}
|
|
145
|
+
record.count++;
|
|
146
|
+
if (rgb && isFiniteTriple(rgb)) {
|
|
147
|
+
record.colorCount++;
|
|
148
|
+
record.colorSum[0] += rgb[0];
|
|
149
|
+
record.colorSum[1] += rgb[1];
|
|
150
|
+
record.colorSum[2] += rgb[2];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
function cellKey(cell) {
|
|
155
|
+
return `${cell[0]},${cell[1]},${cell[2]}`;
|
|
156
|
+
}
|
|
157
|
+
function cellsEqual(a, b) {
|
|
158
|
+
return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
|
|
159
|
+
}
|
|
160
|
+
function isFiniteTriple(v) {
|
|
161
|
+
return Number.isFinite(v[0]) && Number.isFinite(v[1]) && Number.isFinite(v[2]);
|
|
162
|
+
}
|
|
163
|
+
//#endregion
|
|
164
|
+
export { OccupancyGrid };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as getCameraFollower, c as getReplayState, d as updateOrbitTarget, i as getAlignmentLerper, l as initReplayScene, n as ReplaySceneState, o as getCameraMode, r as disposeReplayScene, s as getCss3dManager, t as CameraMode, u as toggleCameraMode } from "../replay-scene-
|
|
1
|
+
import { a as getCameraFollower, c as getReplayState, d as updateOrbitTarget, i as getAlignmentLerper, l as initReplayScene, n as ReplaySceneState, o as getCameraMode, r as disposeReplayScene, s as getCss3dManager, t as CameraMode, u as toggleCameraMode } from "../replay-scene-Bw58VL6p.js";
|
|
2
2
|
export { CameraMode, ReplaySceneState, disposeReplayScene, getAlignmentLerper, getCameraFollower, getCameraMode, getCss3dManager, getReplayState, initReplayScene, toggleCameraMode, updateOrbitTarget };
|
package/dist/ar/replay-scene.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger.js";
|
|
2
|
+
import { C as setArWorldGroup, O as setScene, S as setArPose, r as createSceneHierarchy, w as setCamera } from "../webxr-session-TIaD883f.js";
|
|
2
3
|
import { createCss3dRendererManager } from "../visualization/css3d-renderer-manager.js";
|
|
3
|
-
import { createSceneHierarchy, setArPose, setArWorldGroup, setCamera, setScene } from "./webxr-session.js";
|
|
4
4
|
import { createCameraFollower } from "../visualization/camera-follower.js";
|
|
5
5
|
import { createAlignmentLerper } from "../visualization/alignment-lerper.js";
|
|
6
6
|
import { createGpsCompassCubes } from "../visualization/gps-compass-cubes.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SCENE_NODE } from "../scene-node-names-
|
|
1
|
+
import { t as SCENE_NODE } from "../scene-node-names-Bu0S66H1.js";
|
|
2
2
|
export { SCENE_NODE };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as DepthSample, t as ARPose } from "../ar-types-
|
|
2
|
-
import {
|
|
3
|
-
import { A as setScene, C as resetWebXRState, D as setDepthCaptureCallback, E as setCamera, F as shouldLogCameraAccessDiagnostic, I as startDepthCapture, L as startImageCapture, M as setTrackingLostCallback, N as setTrackingRecoveredCallback, O as setFrameCallback, P as setTrackingStore, R as stopDepthCapture, S as nueQuaternionToWebXR, T as setArWorldGroup, _ as getXrCameraFromPose, a as createSceneHierarchy, b as isXRCameraLike, c as extractResetTransformData, d as getCamera, f as getCurrentArPose, g as getScene, h as getLiveCss3dManager, i as buildSessionOptions, j as setTrackingCallbacks, k as setImageCaptureCallback, l as getArPose, m as getImageCaptureFrameCount, n as TrackingSubscribableStore, o as endARSession, p as getDepthSampleCount, r as applyAlignmentMatrix, s as extractPoseFromViewer, t as SessionFeatureOptions, u as getArWorldGroup, v as initAR, w as setArPose, x as nuePositionToWebXR, y as isWebXRSupported, z as stopImageCapture } from "../webxr-session-
|
|
1
|
+
import { i as DepthSample, t as ARPose } from "../ar-types-Dan1MVTi.js";
|
|
2
|
+
import { n as CapturedImage } from "../image-capture-qAZ5Fh5X.js";
|
|
3
|
+
import { A as setScene, C as resetWebXRState, D as setDepthCaptureCallback, E as setCamera, F as shouldLogCameraAccessDiagnostic, I as startDepthCapture, L as startImageCapture, M as setTrackingLostCallback, N as setTrackingRecoveredCallback, O as setFrameCallback, P as setTrackingStore, R as stopDepthCapture, S as nueQuaternionToWebXR, T as setArWorldGroup, _ as getXrCameraFromPose, a as createSceneHierarchy, b as isXRCameraLike, c as extractResetTransformData, d as getCamera, f as getCurrentArPose, g as getScene, h as getLiveCss3dManager, i as buildSessionOptions, j as setTrackingCallbacks, k as setImageCaptureCallback, l as getArPose, m as getImageCaptureFrameCount, n as TrackingSubscribableStore, o as endARSession, p as getDepthSampleCount, r as applyAlignmentMatrix, s as extractPoseFromViewer, t as SessionFeatureOptions, u as getArWorldGroup, v as initAR, w as setArPose, x as nuePositionToWebXR, y as isWebXRSupported, z as stopImageCapture } from "../webxr-session-GjZ2BIpS.js";
|
|
4
4
|
export { ARPose, CapturedImage, DepthSample, SessionFeatureOptions, TrackingSubscribableStore, applyAlignmentMatrix, buildSessionOptions, createSceneHierarchy, endARSession, extractPoseFromViewer, extractResetTransformData, getArPose, getArWorldGroup, getCamera, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getScene, getXrCameraFromPose, initAR, isWebXRSupported, isXRCameraLike, nuePositionToWebXR, nueQuaternionToWebXR, resetWebXRState, setArPose, setArWorldGroup, setCamera, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setScene, setTrackingCallbacks, setTrackingLostCallback, setTrackingRecoveredCallback, setTrackingStore, shouldLogCameraAccessDiagnostic, startDepthCapture, startImageCapture, stopDepthCapture, stopImageCapture };
|