gps-plus-slam-app-framework 1.3.0 → 1.4.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-B8VQoMDY.d.ts → app-selectors-CrOucL00.d.ts} +1 -1
- package/dist/ar/bresenham3d.d.ts +1 -1
- package/dist/ar/camera-blit-capture.d.ts +2 -2
- package/dist/ar/camera-blit-capture.js +74 -9
- 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-grid-lookup.d.ts +2 -0
- package/dist/ar/depth-grid-lookup.js +43 -0
- package/dist/ar/depth-sampler.d.ts +2 -2
- package/dist/ar/depth-sampler.js +2 -4
- package/dist/ar/depth-unprojection.d.ts +1 -1
- package/dist/ar/enable-gps-ar.d.ts +1 -1
- package/dist/ar/enable-gps-ar.js +26 -1
- package/dist/ar/frame-loop.d.ts +1 -1
- package/dist/ar/image-capture.d.ts +1 -1
- package/dist/ar/index.d.ts +30 -19
- package/dist/ar/index.js +15 -4
- package/dist/ar/occupancy-grid.d.ts +1 -1
- package/dist/ar/occupancy-grid.js +29 -2
- package/dist/ar/planar-pnp.d.ts +2 -0
- package/dist/ar/planar-pnp.js +425 -0
- package/dist/ar/qr-debug-view.d.ts +2 -0
- package/dist/ar/qr-debug-view.js +89 -0
- package/dist/ar/qr-derived-pose.d.ts +2 -0
- package/dist/ar/qr-derived-pose.js +114 -0
- package/dist/ar/qr-detection-controller.d.ts +2 -0
- package/dist/ar/qr-detection-controller.js +2 -0
- package/dist/ar/qr-frontend.d.ts +2 -0
- package/dist/ar/qr-frontend.js +60 -0
- package/dist/ar/qr-pose.d.ts +2 -0
- package/dist/ar/qr-pose.js +267 -0
- package/dist/ar/qr-size-depth-context.d.ts +3 -0
- package/dist/ar/qr-size-depth-context.js +42 -0
- package/dist/ar/qr-size-measurer.d.ts +2 -0
- package/dist/ar/qr-size-measurer.js +2 -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 +1 -1
- package/dist/ar/webxr-session.d.ts +4 -4
- package/dist/ar/webxr-session.js +2 -2
- 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-Dc72Ksiu.js +382 -0
- package/dist/{ar-world-group-alignment-C9lwwIyI.d.ts → ar-world-group-alignment-DDLkgNf_.d.ts} +1 -1
- package/dist/{camera-blit-capture-CnxUDbKx.d.ts → camera-blit-capture-CqWe1G7s.d.ts} +57 -4
- package/dist/concurrency-DqAlKX4j.d.ts +50 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/{create-slam-app-store-BljusOua.d.ts → create-slam-app-store-Ce2FMKCp.d.ts} +5 -5
- package/dist/depth-grid-lookup-vMDrGTk_.d.ts +21 -0
- package/dist/{depth-sampler-Bhanfwla.d.ts → depth-sampler-DwfPYzS7.d.ts} +1 -1
- package/dist/{depth-unprojection-Y6i_mJuT.d.ts → depth-unprojection-CK3b9htH.d.ts} +1 -1
- package/dist/{enable-gps-ar-BfUJOgpW.d.ts → enable-gps-ar-CjZ1nEdu.d.ts} +4 -4
- package/dist/{frame-conversions-BfsafGWR.d.ts → frame-conversions-D_Af8Dt3.d.ts} +1 -1
- package/dist/{fused-path-DJoVu98b.d.ts → fused-path-C0FHe67t.d.ts} +1 -1
- package/dist/geo/h3-proximity.d.ts +2 -2
- package/dist/geo/h3-proximity.js +61 -2
- package/dist/geo/index.d.ts +2 -2
- package/dist/geo/index.js +2 -2
- package/dist/{gps-anchor-dYeCvvp5.d.ts → gps-anchor-C6I9NDHA.d.ts} +1 -1
- package/dist/{gps-ar-pose-sampler-DVb96iOy.d.ts → gps-ar-pose-sampler-DaHg2aPZ.d.ts} +1 -1
- package/dist/{gps-event-coordinator-CWIDOk4U.d.ts → gps-event-coordinator-C7hwHyLA.d.ts} +3 -3
- package/dist/{gps-event-markers-Dc9FT-q1.d.ts → gps-event-markers-Dd0G2bD0.d.ts} +18 -0
- package/dist/{h3-proximity-I1msGPgE.d.ts → h3-proximity-B57C6rYL.d.ts} +39 -1
- package/dist/{image-capture-qAZ5Fh5X.d.ts → image-capture-C2Feywet.d.ts} +1 -1
- package/dist/index-BvLo2poy.d.ts +399 -0
- package/dist/{index-BYYUdf9v.d.ts → index-m_LneUSi.d.ts} +1 -1
- package/dist/index.d.ts +77 -67
- package/dist/index.js +18 -9
- package/dist/{leaflet-map-overlay-6CJC-E1l.d.ts → leaflet-map-overlay-bnb2U1NQ.d.ts} +1 -1
- package/dist/{map-data-CkloBxIl.d.ts → map-data-DdjPiSav.d.ts} +1 -1
- package/dist/{map-overlay-draw-krOKwDAq.d.ts → map-overlay-draw-CPVdAsFq.d.ts} +1 -1
- package/dist/{null-storage-backend-uKQE8tl7.d.ts → null-storage-backend-CuSdYFsM.d.ts} +2 -2
- package/dist/{occupancy-grid-BRNRaPyT.d.ts → occupancy-grid-Bvi2Gw1U.d.ts} +12 -2
- package/dist/{opfs-storage-D5zAn_lx.d.ts → opfs-storage-DMtlt57S.d.ts} +23 -4
- package/dist/{opfs-storage-backend-6aYMUZlJ.d.ts → opfs-storage-backend-CeQAb0SD.d.ts} +3 -3
- package/dist/{persistence-middleware-B9ei4Nhx.d.ts → persistence-middleware-5eearhSV.d.ts} +1 -1
- package/dist/planar-pnp-cjthe7Be.d.ts +67 -0
- package/dist/qr-debug-view-B8gTzjMm.d.ts +29 -0
- package/dist/qr-derived-pose-DinKE600.d.ts +122 -0
- package/dist/qr-detected-slice-Cpv-dg82.d.ts +166 -0
- package/dist/qr-detection-controller-B-tLVd-S.js +119 -0
- package/dist/qr-detection-controller-Cd2Ih4cC.d.ts +48 -0
- package/dist/qr-frontend-DufZp2xS.d.ts +58 -0
- package/dist/qr-pose-Bt2reSw7.d.ts +138 -0
- package/dist/qr-pose-aggregation-CFlmLm6w.d.ts +90 -0
- package/dist/qr-pose-aggregation-DXR9STHs.js +200 -0
- package/dist/qr-size-depth-context-onu36E9s.d.ts +13 -0
- package/dist/qr-size-measurer-D7739ZpB.d.ts +165 -0
- package/dist/qr-size-measurer-DLb33geH.js +596 -0
- package/dist/recording-options-D93kksJU.d.ts +369 -0
- package/dist/{recording-replayer-r0DZ9ALp.d.ts → recording-replayer-CUEK82tM.d.ts} +2 -2
- package/dist/recording-slice-B-uCgGoh.d.ts +55 -0
- package/dist/{replay-engine-XpDa0dy1.d.ts → replay-engine-BSVd7Zzb.d.ts} +7 -4
- package/dist/{replay-scene-Bw58VL6p.d.ts → replay-scene-CPt56pps.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/sensors/permission-checker.js +1 -1
- package/dist/state/app-selectors.d.ts +1 -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 +20 -17
- package/dist/state/index.js +3 -2
- package/dist/state/persistence-middleware.d.ts +1 -1
- package/dist/state/qr-detected-slice.d.ts +4 -0
- package/dist/state/qr-detected-slice.js +311 -0
- package/dist/state/recording-options.d.ts +2 -2
- package/dist/state/recording-options.js +128 -4
- package/dist/state/recording-replayer.d.ts +2 -2
- package/dist/state/recording-slice.d.ts +1 -1
- package/dist/state/recording-slice.js +5 -1
- package/dist/state/replay-engine.d.ts +1 -1
- package/dist/state/replay-engine.js +7 -3
- 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-slice.d.ts +1 -1
- package/dist/{state-BkIfpiyA.js → state-IEw0ZsBu.js} +1 -0
- package/dist/storage/file-system-utils.d.ts +1 -1
- package/dist/storage/index.d.ts +9 -9
- package/dist/storage/index.js +4 -4
- 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-backend.js +3 -3
- package/dist/storage/opfs-storage.d.ts +1 -1
- package/dist/storage/opfs-storage.js +5 -4
- package/dist/storage/storage-backend.d.ts +1 -1
- package/dist/storage/zip-coverage-embed.d.ts +2 -0
- package/dist/storage/zip-coverage-embed.js +88 -0
- package/dist/storage/zip-export.d.ts +2 -2
- package/dist/storage/zip-export.js +37 -59
- package/dist/storage/zip-reader.d.ts +1 -1
- package/dist/{storage-backend-Do6YDpNo.d.ts → storage-backend-CTJHNdMp.d.ts} +1 -1
- package/dist/{store-subscribers-0YWyOLvV.d.ts → store-subscribers-BZP81hjh.d.ts} +2 -2
- package/dist/{subscribe-to-selector-CZ6k1NFP.d.ts → subscribe-to-selector-Bp3sLx8L.d.ts} +1 -1
- package/dist/test-utils/browser-mocks.d.ts +7 -1
- package/dist/test-utils/browser-mocks.js +6 -0
- package/dist/test-utils/zip-round-trip-helpers.d.ts +9 -1
- package/dist/test-utils/zip-round-trip-helpers.js +5 -1
- package/dist/{tracking-slice-CdK8c-8P.d.ts → tracking-slice-DJZ9qeGg.d.ts} +1 -1
- package/dist/types/ar-types.d.ts +1 -1
- package/dist/types/geo-types.d.ts +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/utils/concurrency.d.ts +2 -2
- package/dist/utils/concurrency.js +66 -2
- 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/ar-world-group-alignment.js +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 +40 -5
- package/dist/visualization/hit-test-reticle.d.ts +1 -1
- package/dist/visualization/hit-test-reticle.js +1 -0
- package/dist/visualization/index.d.ts +18 -18
- package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
- package/dist/visualization/leaflet-map-overlay.js +15 -3
- 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-TIaD883f.js → webxr-session-CJF9Nijp.js} +221 -9
- package/dist/{webxr-session-GjZ2BIpS.d.ts → webxr-session-COsOjJwn.d.ts} +76 -8
- package/dist/zip-coverage-embed-tFohI2J4.d.ts +41 -0
- package/dist/{zip-export-G14hkSPG.d.ts → zip-export-DDWXInTR.d.ts} +27 -23
- package/package.json +2 -2
- package/dist/concurrency-CO1FQvs3.d.ts +0 -24
- package/dist/file-system-CwXTNHmB.d.ts +0 -114
- package/dist/recording-options-DJBXuMxV.d.ts +0 -182
- package/dist/recording-slice-89O07ebs.d.ts +0 -36
- package/dist/storage/file-system.d.ts +0 -2
- package/dist/storage/file-system.js +0 -289
- /package/dist/{accuracy-circles-BpwWAs8G.d.ts → accuracy-circles-Pi2YeCrM.d.ts} +0 -0
- /package/dist/{alignment-lerper-Dm9G7JJO.d.ts → alignment-lerper-BUTsQ2yu.d.ts} +0 -0
- /package/dist/{ar-types-Dan1MVTi.d.ts → ar-types-BckI1E-O.d.ts} +0 -0
- /package/dist/{bresenham3d-CFfd7n6B.d.ts → bresenham3d-ByjcmEgM.d.ts} +0 -0
- /package/dist/{camera-follower-C2mwEn7c.d.ts → camera-follower-BTb2Yp12.d.ts} +0 -0
- /package/dist/{capability-checker-CQXJHxXg.d.ts → capability-checker-CXqoJYtb.d.ts} +0 -0
- /package/dist/{capture-failure-tracker-CUeU3L_M.d.ts → capture-failure-tracker-BL5SoG2a.d.ts} +0 -0
- /package/dist/{chromium-camera-access-workaround-Jqbn0apH.d.ts → chromium-camera-access-workaround-BNK189P0.d.ts} +0 -0
- /package/dist/{css3d-renderer-manager-ptu_t3B3.d.ts → css3d-renderer-manager-m-ab19vp.d.ts} +0 -0
- /package/dist/{failure-tracker-Cn8Fo9D4.d.ts → failure-tracker-Cnc_xWUw.d.ts} +0 -0
- /package/dist/{file-system-utils-CXIoL-DM.d.ts → file-system-utils-Bs7lpeVP.d.ts} +0 -0
- /package/dist/{format-file-size-CLCZz3lC.d.ts → format-file-size-BFUWvir1.d.ts} +0 -0
- /package/dist/{frame-loop-CMewS8cY.d.ts → frame-loop-BEO9_q3k.d.ts} +0 -0
- /package/dist/{frustum-visibility-CmI96ESS.d.ts → frustum-visibility-D_RGmH98.d.ts} +0 -0
- /package/dist/{geo-types-SaPnIEUM.d.ts → geo-types-DqiBzPO9.d.ts} +0 -0
- /package/dist/{gps-VuezJWK3.d.ts → gps-C5inWeNV.d.ts} +0 -0
- /package/dist/{gps-compass-cubes-BM1uGiYV.d.ts → gps-compass-cubes-BExxrWJ-.d.ts} +0 -0
- /package/dist/{gps-error-handler-CJl_2MVm.d.ts → gps-error-handler-C2bS69oJ.d.ts} +0 -0
- /package/dist/{hit-test-reticle-BEzEybxZ.d.ts → hit-test-reticle-Dqak9hiR.d.ts} +0 -0
- /package/dist/{index-CF05QV2m.d.ts → index-eaI1Z1KR.d.ts} +0 -0
- /package/dist/{lerp-utils-BpV-0Dtk.d.ts → lerp-utils-kLxMJ2Xj.d.ts} +0 -0
- /package/dist/{list-formatter-RRcBe8Vg.d.ts → list-formatter-ct8txwvR.d.ts} +0 -0
- /package/dist/{logger-BEHXsnnq.d.ts → logger-CzQrCe6C.d.ts} +0 -0
- /package/dist/{map-overlay-bcogY5fK.d.ts → map-overlay-Dci4yvm3.d.ts} +0 -0
- /package/dist/{permission-checker-GpAiSCwd.d.ts → permission-checker-CtPtPQRq.d.ts} +0 -0
- /package/dist/{scene-node-names-Bu0S66H1.d.ts → scene-node-names-CdNeQjOE.d.ts} +0 -0
- /package/dist/{session-disposers-M-oashRH.js → session-disposers-D8wnO-uW.js} +0 -0
- /package/dist/{three-dispose-D950t71B.d.ts → three-dispose-BCZkSJp2.d.ts} +0 -0
- /package/dist/{vis-colors-D6omC64K.d.ts → vis-colors-BZsSLI4i.d.ts} +0 -0
- /package/dist/{webxr-nue-basis-CqKQmZzT.d.ts → webxr-nue-basis-CW1wsbm6.d.ts} +0 -0
- /package/dist/{xr-camera-texture-DBwCaKTd.d.ts → xr-camera-texture-BmrP7iNZ.d.ts} +0 -0
- /package/dist/{xr-error-handler-C0AQRmxs.d.ts → xr-error-handler-BEjRgZjt.d.ts} +0 -0
- /package/dist/{xr-frame-loop-BtYytZJg.d.ts → xr-frame-loop-K8ebdjLw.d.ts} +0 -0
- /package/dist/{zip-reader-DSEXt7K6.d.ts → zip-reader-Q2ue6zlC.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as CombinedRootState, r as SlamAppRootState } from "./create-slam-app-store-
|
|
1
|
+
import { L as CombinedRootState, r as SlamAppRootState } from "./create-slam-app-store-Ce2FMKCp.js";
|
|
2
2
|
import * as _$gps_plus_slam_js0 from "gps-plus-slam-js";
|
|
3
3
|
import { ArImageCapture, GpsPoint, LatLong, Matrix4, Quaternion, Vector3 } from "gps-plus-slam-js";
|
|
4
4
|
import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
|
package/dist/ar/bresenham3d.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as MAX_TRACE_STEPS, r as bresenham3d, t as GridCell } from "../bresenham3d-
|
|
1
|
+
import { n as MAX_TRACE_STEPS, r as bresenham3d, t as GridCell } from "../bresenham3d-ByjcmEgM.js";
|
|
2
2
|
export { GridCell, MAX_TRACE_STEPS, bresenham3d };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { CameraBlitCapture, CameraBlitCaptureConfig, DEFAULT_BLIT_CONFIG, computeCaptureSize };
|
|
1
|
+
import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-CqWe1G7s.js";
|
|
2
|
+
export { CameraBlitCapture, CameraBlitCaptureConfig, DEFAULT_BLIT_CONFIG, computeAspectFitSize, computeCaptureSize };
|
|
@@ -51,6 +51,36 @@ function computeCaptureSize(cameraWidth, cameraHeight, divisor) {
|
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
+
* Compute blit dimensions that PRESERVE the camera aspect ratio with the
|
|
55
|
+
* **longer edge fixed at `maxEdge`**. Unlike {@link computeCaptureSize} (which
|
|
56
|
+
* divides the native resolution by a user divisor), this fits the frame into a
|
|
57
|
+
* fixed pixel budget, so a 4:3 camera becomes e.g. 512×384 — NOT a stretched
|
|
58
|
+
* 512×512. Used by the QR-detection blit (B2) so the detector sees an
|
|
59
|
+
* undistorted code while the readback cost stays bounded by `maxEdge²`.
|
|
60
|
+
*
|
|
61
|
+
* @param cameraWidth - Native camera width in pixels (from XRCamera)
|
|
62
|
+
* @param cameraHeight - Native camera height in pixels (from XRCamera)
|
|
63
|
+
* @param maxEdge - Target length (px) of the longer output edge.
|
|
64
|
+
* @returns Integer dimensions, longer edge == `maxEdge`, aspect preserved
|
|
65
|
+
* (within rounding), each clamped to ≥ 1. When `maxEdge` itself is invalid
|
|
66
|
+
* (< 1 / NaN / Infinity) the longer edge falls back to
|
|
67
|
+
* `DEFAULT_BLIT_CONFIG.width` (still aspect-preserving). When the camera
|
|
68
|
+
* dimensions are invalid (≤ 0 / NaN / Infinity) the aspect is unknown, so it
|
|
69
|
+
* returns a square at the (possibly defaulted) edge.
|
|
70
|
+
*/
|
|
71
|
+
function computeAspectFitSize(cameraWidth, cameraHeight, maxEdge) {
|
|
72
|
+
const safeEdge = maxEdge >= 1 && Number.isFinite(maxEdge) ? Math.floor(maxEdge) : DEFAULT_BLIT_CONFIG.width;
|
|
73
|
+
if (!(cameraWidth > 0) || !Number.isFinite(cameraWidth) || !(cameraHeight > 0) || !Number.isFinite(cameraHeight)) return {
|
|
74
|
+
width: safeEdge,
|
|
75
|
+
height: safeEdge
|
|
76
|
+
};
|
|
77
|
+
const scale = safeEdge / Math.max(cameraWidth, cameraHeight);
|
|
78
|
+
return {
|
|
79
|
+
width: Math.max(1, Math.round(cameraWidth * scale)),
|
|
80
|
+
height: Math.max(1, Math.round(cameraHeight * scale))
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
54
84
|
* Number of sampled pixels to check in isBlackFrame.
|
|
55
85
|
* We sample a subset rather than checking every pixel for speed.
|
|
56
86
|
*/
|
|
@@ -168,6 +198,32 @@ var CameraBlitCapture = class {
|
|
|
168
198
|
}
|
|
169
199
|
}
|
|
170
200
|
/**
|
|
201
|
+
* Capture the camera texture as **top-left-origin** RGBA — the orientation
|
|
202
|
+
* QR detection (and `BarcodeDetector`) expects — returning a FRESH copy that
|
|
203
|
+
* is safe to retain beyond the next capture.
|
|
204
|
+
*
|
|
205
|
+
* This is the efficient replacement for the demo's old JPEG round-trip: blit
|
|
206
|
+
* + readback (shared with {@link captureToBlob} / {@link captureToPixels}),
|
|
207
|
+
* then the same vertical flip the JPEG encoder applies, but with no encode →
|
|
208
|
+
* decode. Unlike {@link captureToPixels} (which returns the reusable internal
|
|
209
|
+
* buffer in WebGL bottom-row-first order), this returns an owned,
|
|
210
|
+
* correctly-oriented `Uint8ClampedArray`.
|
|
211
|
+
*
|
|
212
|
+
* IMPORTANT: Must be called within the XR animation frame callback, while the
|
|
213
|
+
* camera texture is valid.
|
|
214
|
+
*
|
|
215
|
+
* @returns `{ data, width, height }` (top-left RGBA), or null on
|
|
216
|
+
* failure/dispose.
|
|
217
|
+
*/
|
|
218
|
+
captureToRgba(renderer, cameraTexture) {
|
|
219
|
+
if (!this.captureToPixels(renderer, cameraTexture)) return null;
|
|
220
|
+
return {
|
|
221
|
+
data: this.flippedPixelCopy(),
|
|
222
|
+
width: this.width,
|
|
223
|
+
height: this.height
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
171
227
|
* Check if a pixel buffer is entirely black (all zeros).
|
|
172
228
|
* Uses sampling for performance (checks BLACK_CHECK_SAMPLE_COUNT evenly-spaced pixels).
|
|
173
229
|
*
|
|
@@ -197,10 +253,19 @@ var CameraBlitCapture = class {
|
|
|
197
253
|
return this.pixelsToJpegViaCanvas(quality);
|
|
198
254
|
}
|
|
199
255
|
getFlippedImageData() {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
256
|
+
return new ImageData(this.flippedPixelCopy(), this.width, this.height);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Produce a FRESH, top-left-origin RGBA copy of the internal readback buffer.
|
|
260
|
+
* WebGL `readPixels` returns bottom-row-first; this copies (so the internal
|
|
261
|
+
* buffer stays y-flipped for a subsequent capture) and swaps rows. Shared by
|
|
262
|
+
* the JPEG encode path ({@link getFlippedImageData}) and {@link captureToRgba}.
|
|
263
|
+
*/
|
|
264
|
+
flippedPixelCopy() {
|
|
265
|
+
const copy = new Uint8ClampedArray(this.pixelBuffer.length);
|
|
266
|
+
copy.set(this.pixelBuffer);
|
|
267
|
+
this.flipRowsVertically(copy, this.width, this.height);
|
|
268
|
+
return copy;
|
|
204
269
|
}
|
|
205
270
|
async pixelsToJpegViaOffscreenCanvas(quality) {
|
|
206
271
|
const offscreen = new OffscreenCanvas(this.width, this.height);
|
|
@@ -229,11 +294,11 @@ var CameraBlitCapture = class {
|
|
|
229
294
|
});
|
|
230
295
|
}
|
|
231
296
|
/**
|
|
232
|
-
* Flip
|
|
233
|
-
* WebGL readPixels returns bottom-row-first; canvas
|
|
297
|
+
* Flip an RGBA buffer vertically in-place (row swap).
|
|
298
|
+
* WebGL readPixels returns bottom-row-first; canvas / detectors expect
|
|
299
|
+
* top-row-first.
|
|
234
300
|
*/
|
|
235
|
-
|
|
236
|
-
const { data, width, height } = imageData;
|
|
301
|
+
flipRowsVertically(data, width, height) {
|
|
237
302
|
const rowSize = width * 4;
|
|
238
303
|
const tempRow = new Uint8ClampedArray(rowSize);
|
|
239
304
|
for (let y = 0; y < Math.floor(height / 2); y++) {
|
|
@@ -291,4 +356,4 @@ var CameraBlitCapture = class {
|
|
|
291
356
|
}
|
|
292
357
|
};
|
|
293
358
|
//#endregion
|
|
294
|
-
export { CameraBlitCapture, DEFAULT_BLIT_CONFIG, computeCaptureSize };
|
|
359
|
+
export { CameraBlitCapture, DEFAULT_BLIT_CONFIG, computeAspectFitSize, computeCaptureSize };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-
|
|
1
|
+
import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-CXqoJYtb.js";
|
|
2
2
|
export { CapabilityMessageOptions, CapabilitySupport, capabilityMessage, isFullySupported };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-
|
|
1
|
+
import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-BL5SoG2a.js";
|
|
2
2
|
export { CAPTURE_FAILURE_WARNING, CaptureFailureTracker, CaptureFailureTrackerConfig, DEFAULT_CAPTURE_TRACKER_CONFIG, createCaptureFailureTracker };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-
|
|
1
|
+
import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-BNK189P0.js";
|
|
2
2
|
export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, applyChromiumProjectionLayerWorkaround, needsBaseLayerPersistence, parseChromeVersion };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region ../src/ar/depth-grid-lookup.ts
|
|
2
|
+
/** A node's depth if finite and positive, else `null` (a grid hole). */
|
|
3
|
+
function validDepth(points, index) {
|
|
4
|
+
const p = points[index];
|
|
5
|
+
if (!p) return null;
|
|
6
|
+
const d = p.depthM;
|
|
7
|
+
return Number.isFinite(d) && d > 0 ? d : null;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Build a bilinear lookup over a depth-sampler grid.
|
|
11
|
+
*
|
|
12
|
+
* @param points - the grid `DepthPoint`s (row-major, `row·g + col`).
|
|
13
|
+
* @param gridSize - points-per-side; inferred as `round(√points.length)` when
|
|
14
|
+
* omitted (the sampler always emits a full `g²` grid).
|
|
15
|
+
*/
|
|
16
|
+
function createDepthGridLookup(points, gridSize) {
|
|
17
|
+
const g = gridSize ?? Math.round(Math.sqrt(points.length));
|
|
18
|
+
if (g < 2 || points.length < g * g) return { depthAt() {
|
|
19
|
+
for (let i = 0; i < points.length; i++) {
|
|
20
|
+
const d = validDepth(points, i);
|
|
21
|
+
if (d !== null) return d;
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
} };
|
|
25
|
+
return { depthAt(screenX, screenY) {
|
|
26
|
+
const gx = screenX * (g + 1) - 1;
|
|
27
|
+
const gy = screenY * (g + 1) - 1;
|
|
28
|
+
if (gx < 0 || gx > g - 1 || gy < 0 || gy > g - 1) return null;
|
|
29
|
+
const col0 = Math.min(Math.floor(gx), g - 2);
|
|
30
|
+
const row0 = Math.min(Math.floor(gy), g - 2);
|
|
31
|
+
const fx = gx - col0;
|
|
32
|
+
const fy = gy - row0;
|
|
33
|
+
const d00 = validDepth(points, row0 * g + col0);
|
|
34
|
+
const d10 = validDepth(points, row0 * g + col0 + 1);
|
|
35
|
+
const d01 = validDepth(points, (row0 + 1) * g + col0);
|
|
36
|
+
const d11 = validDepth(points, (row0 + 1) * g + col0 + 1);
|
|
37
|
+
if (d00 === null || d10 === null || d01 === null || d11 === null) return null;
|
|
38
|
+
const top = d00 + (d10 - d00) * fx;
|
|
39
|
+
return top + (d01 + (d11 - d01) * fx - top) * fy;
|
|
40
|
+
} };
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { createDepthGridLookup };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { i as DepthSample } from "../ar-types-
|
|
2
|
-
import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-
|
|
1
|
+
import { i as DepthSample } from "../ar-types-BckI1E-O.js";
|
|
2
|
+
import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-DwfPYzS7.js";
|
|
3
3
|
export { DepthInfo, DepthSample, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, wrapXRDepthInfo };
|
package/dist/ar/depth-sampler.js
CHANGED
|
@@ -56,10 +56,8 @@ var DepthSampler = class {
|
|
|
56
56
|
unavailableCallbackFired = false;
|
|
57
57
|
constructor(callbacks, config) {
|
|
58
58
|
this.callbacks = callbacks;
|
|
59
|
-
this.config = {
|
|
60
|
-
|
|
61
|
-
...config
|
|
62
|
-
};
|
|
59
|
+
this.config = { ...DEFAULT_CONFIG };
|
|
60
|
+
if (config) this.updateConfig(config);
|
|
63
61
|
}
|
|
64
62
|
/**
|
|
65
63
|
* Start depth sampling.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-
|
|
1
|
+
import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-CK3b9htH.js";
|
|
2
2
|
export { DepthUnprojector, createDepthUnprojector, unprojectDepthPoint };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-
|
|
1
|
+
import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-CjZ1nEdu.js";
|
|
2
2
|
export { EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, createEnableGpsArController };
|
package/dist/ar/enable-gps-ar.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger.js";
|
|
2
|
+
import { a as endARSession, b as isWebXRSupported, y as initAR } from "../webxr-session-CJF9Nijp.js";
|
|
2
3
|
import { requestGeolocationPermission, requestOrientationPermission, requestWebXRWithDepthPermission } from "../sensors/permission-checker.js";
|
|
3
4
|
import { startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch } from "../sensors/gps.js";
|
|
4
|
-
import { _ as isWebXRSupported, g as initAR, i as endARSession } from "../webxr-session-TIaD883f.js";
|
|
5
5
|
//#region ../src/ar/enable-gps-ar.ts
|
|
6
6
|
const log = createLogger("EnableGpsAr");
|
|
7
7
|
const defaultDeps = {
|
|
@@ -74,10 +74,12 @@ function createEnableGpsArController(deps = {}) {
|
|
|
74
74
|
error: "AR is already starting, running or stopping."
|
|
75
75
|
};
|
|
76
76
|
setState({ status: "starting" });
|
|
77
|
+
let sessionStarted = false;
|
|
77
78
|
try {
|
|
78
79
|
const permissionError = await requestPermissions(config);
|
|
79
80
|
if (permissionError !== null) return fail(permissionError);
|
|
80
81
|
await resolved.initAR(config.container, config.isolationOptions, { requestHitTest: config.requestHitTest });
|
|
82
|
+
sessionStarted = true;
|
|
81
83
|
if (config.onGpsPosition) {
|
|
82
84
|
resolved.startGpsWatch(config.onGpsPosition);
|
|
83
85
|
gpsWatchActive = true;
|
|
@@ -89,6 +91,29 @@ function createEnableGpsArController(deps = {}) {
|
|
|
89
91
|
setState({ status: "running" });
|
|
90
92
|
return { ok: true };
|
|
91
93
|
} catch (err) {
|
|
94
|
+
if (sessionStarted) {
|
|
95
|
+
if (gpsWatchActive) {
|
|
96
|
+
try {
|
|
97
|
+
resolved.stopGpsWatch();
|
|
98
|
+
} catch (cleanupErr) {
|
|
99
|
+
log.error("stopGpsWatch during enable() cleanup threw:", cleanupErr);
|
|
100
|
+
}
|
|
101
|
+
gpsWatchActive = false;
|
|
102
|
+
}
|
|
103
|
+
if (orientationWatchActive) {
|
|
104
|
+
try {
|
|
105
|
+
resolved.stopOrientationWatch();
|
|
106
|
+
} catch (cleanupErr) {
|
|
107
|
+
log.error("stopOrientationWatch during enable() cleanup threw:", cleanupErr);
|
|
108
|
+
}
|
|
109
|
+
orientationWatchActive = false;
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
await resolved.endARSession();
|
|
113
|
+
} catch (cleanupErr) {
|
|
114
|
+
log.error("Cleanup after enable() failure threw; continuing:", cleanupErr);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
92
117
|
return fail(err instanceof Error ? err.message : String(err));
|
|
93
118
|
}
|
|
94
119
|
}
|
package/dist/ar/frame-loop.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as runFrameUpdates, n as clearFrameUpdates, r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-
|
|
1
|
+
import { i as runFrameUpdates, n as clearFrameUpdates, r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-BEO9_q3k.js";
|
|
2
2
|
export { FrameUpdate, clearFrameUpdates, registerFrameUpdate, runFrameUpdates };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ImageCaptureConfig, i as ImageCaptureCallbacks, n as CapturedImage, o as ImageCaptureManager, r as DEFAULT_CAPTURE_CONFIG, s as MIN_VALID_IMAGE_BYTES, t as CapturedFrame } from "../image-capture-
|
|
1
|
+
import { a as ImageCaptureConfig, i as ImageCaptureCallbacks, n as CapturedImage, o as ImageCaptureManager, r as DEFAULT_CAPTURE_CONFIG, s as MIN_VALID_IMAGE_BYTES, t as CapturedFrame } from "../image-capture-C2Feywet.js";
|
|
2
2
|
export { CapturedFrame, CapturedImage, DEFAULT_CAPTURE_CONFIG, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, MIN_VALID_IMAGE_BYTES };
|
package/dist/ar/index.d.ts
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
|
-
import { r as bresenham3d, t as GridCell } from "../bresenham3d-
|
|
2
|
-
import {
|
|
3
|
-
import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-
|
|
4
|
-
import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-
|
|
5
|
-
import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-
|
|
6
|
-
import {
|
|
7
|
-
import { n as
|
|
8
|
-
import {
|
|
9
|
-
import { i as
|
|
10
|
-
import {
|
|
11
|
-
import { a as
|
|
12
|
-
import { r as
|
|
13
|
-
import {
|
|
14
|
-
import { i as
|
|
15
|
-
import {
|
|
16
|
-
import { t as
|
|
17
|
-
import { t as
|
|
18
|
-
import { n as
|
|
19
|
-
|
|
1
|
+
import { r as bresenham3d, t as GridCell } from "../bresenham3d-ByjcmEgM.js";
|
|
2
|
+
import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-CqWe1G7s.js";
|
|
3
|
+
import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-CXqoJYtb.js";
|
|
4
|
+
import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-BL5SoG2a.js";
|
|
5
|
+
import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-BNK189P0.js";
|
|
6
|
+
import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-vMDrGTk_.js";
|
|
7
|
+
import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-DwfPYzS7.js";
|
|
8
|
+
import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-CK3b9htH.js";
|
|
9
|
+
import { a as ImageCaptureConfig, i as ImageCaptureCallbacks, n as CapturedImage, o as ImageCaptureManager, r as DEFAULT_CAPTURE_CONFIG, s as MIN_VALID_IMAGE_BYTES } from "../image-capture-C2Feywet.js";
|
|
10
|
+
import { _ as solveQrPose, a as QrPoseSolution, c as SolveQrPoseInput, d as intrinsicsFromProjection, f as invertPose, g as signedQuadArea, h as reprojectionErrorPx, i as Pose, l as buildObjectPoints, m as qrInCameraFromOpenCv, n as OpenCvPnpResult, o as QuadValidation, p as projectViewPoint, r as Point2, s as SolvePnpSquare, t as CameraIntrinsics, u as composePose, v as transformPoint, y as validateQuad } from "../qr-pose-Bt2reSw7.js";
|
|
11
|
+
import { a as QrFrontEnd, c as createBarcodeDetectorFrontEnd, i as QrDetection, n as BarcodeDetectorLike, o as RgbaImage, r as DetectedBarcodeLike, s as ToImageBitmapSource, t as BarcodeDetectorFrontEnd } from "../qr-frontend-DufZp2xS.js";
|
|
12
|
+
import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "../xr-camera-texture-BmrP7iNZ.js";
|
|
13
|
+
import { G as stopDepthCapture, H as startDepthCapture, I as setTrackingCallbacks, K as stopImageCapture, L as setTrackingLostCallback, M as setDepthCaptureCallback, N as setFrameCallback, P as setImageCaptureCallback, S as initAR, U as startImageCapture, V as startCameraFrameCapture, W as stopCameraFrameCapture, _ as getDepthSampleCount, b as getScene, c as endARSession, f as getArWorldGroup, g as getCurrentArPose, h as getCameraFrameCount, j as setCameraFrameCallback, p as getCamera, r as SessionFeatureOptions, t as CameraFrameCaptureConfig, v as getImageCaptureFrameCount, y as getLiveCss3dManager, z as setTrackingStore } from "../webxr-session-COsOjJwn.js";
|
|
14
|
+
import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-CjZ1nEdu.js";
|
|
15
|
+
import { r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-BEO9_q3k.js";
|
|
16
|
+
import { c as QrSizeAccumulatorOptions, d as QrSizeStatus, f as createQrSizeAccumulator, i as QrSizeMeasurer, l as QrSizeEstimate, n as QrSizeDepthContext, o as createQrSizeMeasurer, p as estimateQrSizeFromDepth, r as QrSizeMeasurement, s as QrSizeAccumulator, t as ImageSize, u as QrSizeObservation } from "../qr-size-measurer-D7739ZpB.js";
|
|
17
|
+
import { t as createQrSizeDepthContext } from "../qr-size-depth-context-onu36E9s.js";
|
|
18
|
+
import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../qr-derived-pose-DinKE600.js";
|
|
19
|
+
import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-B8gTzjMm.js";
|
|
20
|
+
import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../qr-detection-controller-Cd2Ih4cC.js";
|
|
21
|
+
import { a as QrPoseStability, c as aggregateQrPose, i as DEFAULT_ROTATION_INLIER_ANGLE_DEG, l as averageRotation, n as AverageRotationOptions, o as QrPoseStabilityOptions, r as AverageRotationResult, s as QrPoseStabilityStatus, t as AggregateQrPoseResult, u as evaluateQrPoseStability } from "../qr-pose-aggregation-CFlmLm6w.js";
|
|
22
|
+
import { A as QrGpsVoteInput, C as QrLevel, D as Enu, E as parseQrLevel, M as localPlaneToEnu, N as offsetGeo, O as METERS_PER_DEG_LAT, S as FetchQrLevelOptions, T as fetchQrLevel, _ as QrTrackingController, a as checkQrPlausibility, b as createQrTrackingController, c as QrDetectionScheduler, d as createQrDetectionScheduler, f as CameraFrameSource, g as QrSolvePoseInput, h as QrDetectionEvent, i as QrPlausibilityVerdict, j as buildQrGpsVotes, k as QrGeoPose, l as QrDetectionSchedulerConfig, m as CameraFrameSourceConfig, n as QrPlausibility, o as DetectionScheduler, p as CameraFrameSourceCallbacks, r as QrPlausibilityOptions, s as DetectionSchedulerConfig, t as OccupancySurface, u as createDetectionScheduler, v as QrTrackingControllerConfig, w as QrLevelValidationError, x as FetchLike, y as QrTrackingStatus } from "../index-BvLo2poy.js";
|
|
23
|
+
import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../planar-pnp-cjthe7Be.js";
|
|
24
|
+
import { n as OccupancyGridOptions, t as OccupancyGrid } from "../occupancy-grid-Bvi2Gw1U.js";
|
|
25
|
+
import { i as registerXrFrameUpdate, n as XrFrameUpdate, t as XrFrameContext } from "../xr-frame-loop-K8ebdjLw.js";
|
|
26
|
+
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, t as CameraMode, u as toggleCameraMode } from "../replay-scene-CPt56pps.js";
|
|
27
|
+
import { t as SCENE_NODE } from "../scene-node-names-CdNeQjOE.js";
|
|
28
|
+
import { t as WEBXR_TO_NUE } from "../webxr-nue-basis-CW1wsbm6.js";
|
|
29
|
+
import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "../xr-error-handler-BEjRgZjt.js";
|
|
30
|
+
export { AggregateQrPoseResult, AverageRotationOptions, AverageRotationResult, BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BarcodeDetectorFrontEnd, BarcodeDetectorLike, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraBlitCaptureConfig, CameraFrameCaptureConfig, CameraFrameSource, CameraFrameSourceCallbacks, CameraFrameSourceConfig, CameraIntrinsics, CameraMode, CameraTextureResult, CapabilityMessageOptions, CapabilitySupport, CaptureFailureTracker, CaptureFailureTrackerConfig, CapturedImage, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DepthGridLookup, DepthInfo, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, DepthUnprojector, DeriveQrPoseDeps, DerivedQrPlacement, DetectedBarcodeLike, DetectionScheduler, DetectionSchedulerConfig, EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, Enu, FetchLike, FetchQrLevelOptions, FrameUpdate, GridCell, Homography, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, ImageSize, IncrementalQrPlacement, METERS_PER_DEG_LAT, MIN_VALID_IMAGE_BYTES, Mat3, OccupancyGrid, OccupancyGridOptions, OccupancySurface, OpenCvPnpResult, PlanarPnpSquare, Point2, Pose, PoseCandidate, QrDebugView, QrDetection, QrDetectionController, QrDetectionControllerDeps, QrDetectionEvent, QrDetectionScheduler, QrDetectionSchedulerConfig, QrFrontEnd, QrGeoPose, QrGpsVoteInput, QrLevel, QrLevelValidationError, QrPlausibility, QrPlausibilityOptions, QrPlausibilityVerdict, QrPoseSolution, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrScanStatus, QrSizeAccumulator, QrSizeAccumulatorOptions, QrSizeDepthContext, QrSizeEstimate, QrSizeMeasurement, QrSizeMeasurer, QrSizeObservation, QrSizeStatus, QrSolvePoseInput, QrTrackingController, QrTrackingControllerConfig, QrTrackingStatus, QuadValidation, RawObservationSink, RawQrObservation, RendererLike, ReplaySceneState, RgbaImage, SCENE_NODE, SessionFeatureOptions, SolvePnpSquare, SolveQrPoseInput, ToImageBitmapSource, WEBXR_TO_NUE, XRCameraLike, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, XrFrameContext, XrFrameUpdate, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getReplayState, getScene, getXrErrorMessage, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rotationToRodrigues, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateQuad, wrapXRDepthInfo };
|
package/dist/ar/index.js
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
|
-
import { CameraBlitCapture, DEFAULT_BLIT_CONFIG, computeCaptureSize } from "./camera-blit-capture.js";
|
|
1
|
+
import { CameraBlitCapture, DEFAULT_BLIT_CONFIG, computeAspectFitSize, computeCaptureSize } from "./camera-blit-capture.js";
|
|
2
2
|
import { capabilityMessage, isFullySupported } from "./capability-checker.js";
|
|
3
3
|
import { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, applyChromiumProjectionLayerWorkaround, needsBaseLayerPersistence, parseChromeVersion } from "./chromium-camera-access-workaround.js";
|
|
4
4
|
import { CAPTURE_FAILURE_WARNING, DEFAULT_CAPTURE_TRACKER_CONFIG, createCaptureFailureTracker } from "./capture-failure-tracker.js";
|
|
5
5
|
import { DepthSampler, wrapXRDepthInfo } from "./depth-sampler.js";
|
|
6
6
|
import { createDepthUnprojector, unprojectDepthPoint } from "./depth-unprojection.js";
|
|
7
|
+
import { createDepthGridLookup } from "./depth-grid-lookup.js";
|
|
8
|
+
import { n as createQrSizeAccumulator, r as estimateQrSizeFromDepth, t as createQrSizeMeasurer } from "../qr-size-measurer-DLb33geH.js";
|
|
9
|
+
import { createQrSizeDepthContext } from "./qr-size-depth-context.js";
|
|
10
|
+
import { buildObjectPoints, composePose, intrinsicsFromProjection, invertPose, projectViewPoint, qrInCameraFromOpenCv, reprojectionErrorPx, signedQuadArea, solveQrPose, transformPoint, validateQuad } from "./qr-pose.js";
|
|
11
|
+
import { createIncrementalQrPlacement, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, solveQrPoseFromObservation } from "./qr-derived-pose.js";
|
|
12
|
+
import { WEBXR_TO_NUE } from "./webxr-nue-basis.js";
|
|
13
|
+
import { createQrDebugView } from "./qr-debug-view.js";
|
|
14
|
+
import { n as createDetectionScheduler, r as createQrDetectionScheduler, t as createQrDetectionController } from "../qr-detection-controller-B-tLVd-S.js";
|
|
15
|
+
import { i as evaluateQrPoseStability, n as aggregateQrPose, r as averageRotation, t as DEFAULT_ROTATION_INLIER_ANGLE_DEG } from "../qr-pose-aggregation-DXR9STHs.js";
|
|
16
|
+
import { a as localPlaneToEnu, c as fetchQrLevel, i as buildQrGpsVotes, l as parseQrLevel, n as createQrTrackingController, o as offsetGeo, r as METERS_PER_DEG_LAT, s as QrLevelValidationError, t as checkQrPlausibility } from "../ar-Dc72Ksiu.js";
|
|
17
|
+
import { BarcodeDetectorFrontEnd, createBarcodeDetectorFrontEnd } from "./qr-frontend.js";
|
|
18
|
+
import { A as setFrameCallback, B as startImageCapture, H as stopDepthCapture, I as setTrackingStore, N as setTrackingCallbacks, O as setCameraFrameCallback, P as setTrackingLostCallback, R as startCameraFrameCapture, U as stopImageCapture, V as stopCameraFrameCapture, W as CameraFrameSource, _ as getScene, a as endARSession, f as getCameraFrameCount, g as getLiveCss3dManager, h as getImageCaptureFrameCount, j as setImageCaptureCallback, k as setDepthCaptureCallback, l as getArWorldGroup, m as getDepthSampleCount, p as getCurrentArPose, u as getCamera, y as initAR, z as startDepthCapture } from "../webxr-session-CJF9Nijp.js";
|
|
19
|
+
import { PlanarPnpSquare, homographyFromCorrespondences, ippePoseCandidates, nearestRotation3x3, rotationToRodrigues, solveLinear } from "./planar-pnp.js";
|
|
7
20
|
import { bresenham3d } from "./bresenham3d.js";
|
|
8
21
|
import { OccupancyGrid } from "./occupancy-grid.js";
|
|
9
22
|
import { registerFrameUpdate } from "./frame-loop.js";
|
|
10
23
|
import { registerXrFrameUpdate } from "./xr-frame-loop.js";
|
|
11
|
-
import { WEBXR_TO_NUE } from "./webxr-nue-basis.js";
|
|
12
24
|
import { DEFAULT_CAPTURE_CONFIG, ImageCaptureManager, MIN_VALID_IMAGE_BYTES } from "./image-capture.js";
|
|
13
|
-
import { A as setTrackingLostCallback, D as setImageCaptureCallback, E as setFrameCallback, F as startImageCapture, I as stopDepthCapture, L as stopImageCapture, M as setTrackingStore, P as startDepthCapture, T as setDepthCaptureCallback, c as getArWorldGroup, d as getDepthSampleCount, f as getImageCaptureFrameCount, g as initAR, i as endARSession, k as setTrackingCallbacks, l as getCamera, m as getScene, p as getLiveCss3dManager, u as getCurrentArPose } from "../webxr-session-TIaD883f.js";
|
|
14
25
|
import { acquireCameraTexture } from "./xr-camera-texture.js";
|
|
15
26
|
import { SCENE_NODE } from "./scene-node-names.js";
|
|
16
27
|
import { createEnableGpsArController } from "./enable-gps-ar.js";
|
|
17
28
|
import { disposeReplayScene, getAlignmentLerper, getCameraFollower, getCameraMode, getReplayState, initReplayScene, toggleCameraMode, updateOrbitTarget } from "./replay-scene.js";
|
|
18
29
|
import { XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, getXrErrorMessage } from "./xr-error-handler.js";
|
|
19
|
-
export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, CAPTURE_FAILURE_WARNING, CameraBlitCapture, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DepthSampler, ImageCaptureManager, MIN_VALID_IMAGE_BYTES, OccupancyGrid, SCENE_NODE, WEBXR_TO_NUE, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, acquireCameraTexture, applyChromiumProjectionLayerWorkaround, bresenham3d, capabilityMessage, computeCaptureSize, createCaptureFailureTracker, createDepthUnprojector, createEnableGpsArController, disposeReplayScene, endARSession, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraMode, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getReplayState, getScene, getXrErrorMessage, initAR, initReplayScene, isFullySupported, needsBaseLayerPersistence, parseChromeVersion, registerFrameUpdate, registerXrFrameUpdate, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, startDepthCapture, startImageCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, unprojectDepthPoint, updateOrbitTarget, wrapXRDepthInfo };
|
|
30
|
+
export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BarcodeDetectorFrontEnd, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraFrameSource, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DepthSampler, ImageCaptureManager, METERS_PER_DEG_LAT, MIN_VALID_IMAGE_BYTES, OccupancyGrid, PlanarPnpSquare, QrLevelValidationError, SCENE_NODE, WEBXR_TO_NUE, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getReplayState, getScene, getXrErrorMessage, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rotationToRodrigues, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateQuad, wrapXRDepthInfo };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as OccupancyGridOptions, t as OccupancyGrid } from "../occupancy-grid-
|
|
1
|
+
import { n as OccupancyGridOptions, t as OccupancyGrid } from "../occupancy-grid-Bvi2Gw1U.js";
|
|
2
2
|
export { OccupancyGrid, OccupancyGridOptions };
|
|
@@ -47,10 +47,11 @@ var OccupancyGrid = class {
|
|
|
47
47
|
if (!cellsEqual(cameraCell, cell)) this.carve(cameraCell, cell);
|
|
48
48
|
endpoints.push({
|
|
49
49
|
cell,
|
|
50
|
+
world,
|
|
50
51
|
rgb: point.rgb
|
|
51
52
|
});
|
|
52
53
|
}
|
|
53
|
-
for (const endpoint of endpoints) this.increment(endpoint.cell, endpoint.rgb);
|
|
54
|
+
for (const endpoint of endpoints) this.increment(endpoint.cell, endpoint.world, endpoint.rgb);
|
|
54
55
|
return endpoints.length;
|
|
55
56
|
}
|
|
56
57
|
/** Occupied cells observed at least `minObservations` times (default 1). */
|
|
@@ -76,6 +77,24 @@ var OccupancyGrid = class {
|
|
|
76
77
|
];
|
|
77
78
|
}
|
|
78
79
|
/**
|
|
80
|
+
* Running-average of the EXACT unprojected surface points observed in this
|
|
81
|
+
* cell (raw WebXR space), or null for an unknown cell. Unlike
|
|
82
|
+
* {@link getCellCenter} (the geometric 15 cm-lattice center) this hugs the
|
|
83
|
+
* real measured surface and noise-averages across viewpoints — used by the
|
|
84
|
+
* COLMAP `points3D` export and the debug cubes (follow-up Item A). Being a
|
|
85
|
+
* centroid of points that fell in the cell, it always lies within
|
|
86
|
+
* `cellSizeM/2` of the cell center per axis.
|
|
87
|
+
*/
|
|
88
|
+
getCellPoint(cell) {
|
|
89
|
+
const record = this.cells.get(cellKey(cell));
|
|
90
|
+
if (!record || record.count === 0) return null;
|
|
91
|
+
return [
|
|
92
|
+
record.posSum[0] / record.count,
|
|
93
|
+
record.posSum[1] / record.count,
|
|
94
|
+
record.posSum[2] / record.count
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
79
98
|
* Running-average color of the cell's colored observations (Iter 8), or
|
|
80
99
|
* null when the cell is unknown or was only ever observed without color
|
|
81
100
|
* (rgb option off / pre-Iter-8 recordings) — consumers fall back to
|
|
@@ -126,13 +145,18 @@ var OccupancyGrid = class {
|
|
|
126
145
|
return true;
|
|
127
146
|
}, this.carveStopCells);
|
|
128
147
|
}
|
|
129
|
-
increment(cell, rgb) {
|
|
148
|
+
increment(cell, world, rgb) {
|
|
130
149
|
const key = cellKey(cell);
|
|
131
150
|
let record = this.cells.get(key);
|
|
132
151
|
if (!record) {
|
|
133
152
|
record = {
|
|
134
153
|
cell,
|
|
135
154
|
count: 0,
|
|
155
|
+
posSum: [
|
|
156
|
+
0,
|
|
157
|
+
0,
|
|
158
|
+
0
|
|
159
|
+
],
|
|
136
160
|
colorCount: 0,
|
|
137
161
|
colorSum: [
|
|
138
162
|
0,
|
|
@@ -143,6 +167,9 @@ var OccupancyGrid = class {
|
|
|
143
167
|
this.cells.set(key, record);
|
|
144
168
|
}
|
|
145
169
|
record.count++;
|
|
170
|
+
record.posSum[0] += world[0];
|
|
171
|
+
record.posSum[1] += world[1];
|
|
172
|
+
record.posSum[2] += world[2];
|
|
146
173
|
if (rgb && isFiniteTriple(rgb)) {
|
|
147
174
|
record.colorCount++;
|
|
148
175
|
record.colorSum[0] += rgb[0];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../planar-pnp-cjthe7Be.js";
|
|
2
|
+
export { Homography, Mat3, PlanarPnpSquare, PoseCandidate, homographyFromCorrespondences, ippePoseCandidates, nearestRotation3x3, rotationToRodrigues, solveLinear };
|