gps-plus-slam-app-framework 1.4.0 → 1.7.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/absolute-orientation-CAEh840t.d.ts +54 -0
- package/dist/{app-selectors-CrOucL00.d.ts → app-selectors-ikTUQZpe.d.ts} +1 -1
- package/dist/ar/bresenham3d.d.ts +1 -1
- package/dist/ar/camera-blit-capture.d.ts +1 -1
- 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 +1 -1
- package/dist/ar/depth-sampler.d.ts +2 -2
- 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 +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 +1 -154
- package/dist/ar/image-quality.d.ts +2 -0
- package/dist/ar/image-quality.js +168 -0
- package/dist/ar/index.d.ts +31 -30
- package/dist/ar/index.js +6 -5
- package/dist/ar/occupancy-grid.d.ts +1 -1
- package/dist/ar/planar-pnp.d.ts +1 -1
- package/dist/ar/qr-debug-view.d.ts +1 -1
- package/dist/ar/qr-derived-pose.d.ts +1 -1
- package/dist/ar/qr-detection-controller.d.ts +1 -1
- package/dist/ar/qr-frontend.d.ts +1 -1
- package/dist/ar/qr-pose.d.ts +1 -1
- package/dist/ar/qr-size-depth-context.d.ts +2 -2
- package/dist/ar/qr-size-measurer.d.ts +1 -1
- 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 → ar-MFpFlV7j.js} +3 -3
- package/dist/{ar-world-group-alignment-DDLkgNf_.d.ts → ar-world-group-alignment-69fgnB39.d.ts} +1 -1
- package/dist/capture-motion-gate-0Yl2NpQG.d.ts +24 -0
- package/dist/capture-motion-gate-4EscNZCw.js +94 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/create-slam-app-store-DkCHOpvb.js +149 -0
- package/dist/{create-slam-app-store-Ce2FMKCp.d.ts → create-slam-app-store-n_VF63D5.d.ts} +50 -40
- package/dist/{depth-grid-lookup-vMDrGTk_.d.ts → depth-grid-lookup-DQ-IYhO3.d.ts} +1 -1
- package/dist/{depth-sampler-DwfPYzS7.d.ts → depth-sampler-asc8exHt.d.ts} +1 -1
- package/dist/{depth-unprojection-CK3b9htH.d.ts → depth-unprojection-DjsbJW9L.d.ts} +1 -1
- package/dist/{enable-gps-ar-CjZ1nEdu.d.ts → enable-gps-ar-DkNhFv4Y.d.ts} +4 -4
- package/dist/{frame-conversions-D_Af8Dt3.d.ts → frame-conversions-DObhj8Wf.d.ts} +1 -1
- package/dist/{fused-path-C0FHe67t.d.ts → fused-path-v6eOmLl3.d.ts} +1 -1
- package/dist/geo/h3-proximity.d.ts +1 -1
- package/dist/geo/index.d.ts +1 -1
- package/dist/geodesic-angle-BTldfFgs.js +39 -0
- package/dist/{gps-anchor-C6I9NDHA.d.ts → gps-anchor-BeFO2RYa.d.ts} +1 -1
- package/dist/{gps-ar-pose-sampler-DaHg2aPZ.d.ts → gps-ar-pose-sampler-DHMZmYAc.d.ts} +1 -1
- package/dist/{gps-event-coordinator-C7hwHyLA.d.ts → gps-event-coordinator-CjWW636x.d.ts} +21 -11
- package/dist/image-capture-B2-b6tKK.js +374 -0
- package/dist/{image-capture-C2Feywet.d.ts → image-capture-CNZDrQXG.d.ts} +103 -3
- package/dist/image-quality-smCBoFj1.d.ts +158 -0
- package/dist/index-BAPokxMb.d.ts +22 -0
- package/dist/{index-m_LneUSi.d.ts → index-BODDUTvD.d.ts} +1 -1
- package/dist/{index-BvLo2poy.d.ts → index-BneSj4_5.d.ts} +3 -3
- package/dist/index-_Rhgoqkh.d.ts +2 -0
- package/dist/index.d.ts +80 -77
- package/dist/index.js +11 -8
- package/dist/{leaflet-map-overlay-bnb2U1NQ.d.ts → leaflet-map-overlay-CmIyiE8n.d.ts} +1 -1
- package/dist/{map-data-DdjPiSav.d.ts → map-data-B4oEehUh.d.ts} +1 -1
- package/dist/{map-overlay-draw-CPVdAsFq.d.ts → map-overlay-draw-ymz1s7fG.d.ts} +1 -1
- package/dist/{null-storage-backend-CuSdYFsM.d.ts → null-storage-backend-B9rtyDfG.d.ts} +2 -2
- package/dist/{occupancy-grid-Bvi2Gw1U.d.ts → occupancy-grid-DnOc-6PU.d.ts} +2 -2
- package/dist/{opfs-storage-backend-CeQAb0SD.d.ts → opfs-storage-backend-JJiUJo-3.d.ts} +2 -2
- package/dist/{persistence-middleware-5eearhSV.d.ts → persistence-middleware-DAPTTwB2.d.ts} +1 -1
- package/dist/{planar-pnp-cjthe7Be.d.ts → planar-pnp-my9bqULS.d.ts} +1 -1
- package/dist/{qr-debug-view-B8gTzjMm.d.ts → qr-debug-view-Brl73HGO.d.ts} +1 -1
- package/dist/{qr-derived-pose-DinKE600.d.ts → qr-derived-pose-CmxTP2m4.d.ts} +2 -2
- package/dist/{qr-detected-slice-Cpv-dg82.d.ts → qr-detected-slice-VQssZmQJ.d.ts} +4 -4
- package/dist/{qr-detection-controller-Cd2Ih4cC.d.ts → qr-detection-controller-CDurHv8E.d.ts} +3 -3
- package/dist/{qr-frontend-DufZp2xS.d.ts → qr-frontend--fFX25mV.d.ts} +1 -1
- package/dist/{qr-pose-aggregation-CFlmLm6w.d.ts → qr-pose-aggregation-B7tWJq7j.d.ts} +1 -1
- package/dist/{qr-pose-aggregation-DXR9STHs.js → qr-pose-aggregation-DBiaLW0O.js} +1 -10
- package/dist/{qr-size-depth-context-onu36E9s.d.ts → qr-size-depth-context-CeAG53fy.d.ts} +2 -2
- package/dist/{qr-size-measurer-D7739ZpB.d.ts → qr-size-measurer-DQdAsid1.d.ts} +3 -3
- package/dist/{recording-options-D93kksJU.d.ts → recording-options-BPCpMHLK.d.ts} +154 -9
- package/dist/{recording-replayer-CUEK82tM.d.ts → recording-replayer-DQKpAGyQ.d.ts} +2 -2
- package/dist/{recording-slice-B-uCgGoh.d.ts → recording-slice-DaxHZvNu.d.ts} +2 -2
- package/dist/{replay-engine-BSVd7Zzb.d.ts → replay-engine-CmKh_4wf.d.ts} +1 -1
- package/dist/{replay-scene-CPt56pps.d.ts → replay-scene-DBlDrV_x.d.ts} +3 -3
- package/dist/sensors/absolute-orientation.d.ts +2 -0
- package/dist/sensors/absolute-orientation.js +145 -0
- package/dist/sensors/gps-error-handler.d.ts +1 -1
- package/dist/sensors/gps.d.ts +1 -1
- package/dist/sensors/index.d.ts +5 -4
- package/dist/sensors/index.js +2 -1
- package/dist/sensors/permission-checker.d.ts +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/create-slam-app-store.js +1 -74
- package/dist/state/gps-ar-pose-sampler.d.ts +3 -3
- package/dist/state/gps-event-coordinator.d.ts +2 -2
- package/dist/state/gps-event-coordinator.js +27 -17
- package/dist/state/index.d.ts +20 -20
- package/dist/state/index.js +4 -4
- package/dist/state/persistence-middleware.d.ts +1 -1
- package/dist/state/persistence-middleware.js +30 -19
- package/dist/state/qr-detected-slice.d.ts +3 -3
- package/dist/state/qr-detected-slice.js +1 -1
- package/dist/state/recording-options.d.ts +2 -2
- package/dist/state/recording-options.js +155 -13
- package/dist/state/recording-replayer.d.ts +2 -2
- package/dist/state/recording-replayer.js +1 -1
- package/dist/state/recording-slice.d.ts +1 -1
- 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 +2 -2
- package/dist/state/tracking-quality.js +40 -128
- package/dist/state/tracking-slice.d.ts +1 -1
- package/dist/{state-IEw0ZsBu.js → state-E51QT_-j.js} +1 -1
- package/dist/storage/file-system-utils.d.ts +1 -1
- 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/storage-backend.d.ts +1 -1
- package/dist/storage/zip-coverage-embed.d.ts +1 -1
- package/dist/storage/zip-export.d.ts +1 -1
- package/dist/storage/zip-reader.d.ts +1 -1
- package/dist/{storage-backend-CTJHNdMp.d.ts → storage-backend-BdVLD0dU.d.ts} +1 -1
- package/dist/{store-subscribers-BZP81hjh.d.ts → store-subscribers-CA6AJH_8.d.ts} +2 -2
- package/dist/{subscribe-to-selector-Bp3sLx8L.d.ts → subscribe-to-selector-B6EUmQ3I.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/{tracking-slice-DJZ9qeGg.d.ts → tracking-slice-BuAZxXZ5.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 +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 +8 -7
- package/dist/utils/index.js +2 -1
- 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 +1 -1
- package/dist/visualization/hit-test-reticle.d.ts +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-CJF9Nijp.js → webxr-session-DG-eNfny.js} +25 -4
- package/dist/{webxr-session-COsOjJwn.d.ts → webxr-session-Do5L6G3B.d.ts} +19 -9
- package/package.json +2 -2
- package/dist/index-eaI1Z1KR.d.ts +0 -2
- /package/dist/{accuracy-circles-Pi2YeCrM.d.ts → accuracy-circles-BtqOP_v1.d.ts} +0 -0
- /package/dist/{alignment-lerper-BUTsQ2yu.d.ts → alignment-lerper-Bil6vbVw.d.ts} +0 -0
- /package/dist/{ar-types-BckI1E-O.d.ts → ar-types-BFX2r1wk.d.ts} +0 -0
- /package/dist/{bresenham3d-ByjcmEgM.d.ts → bresenham3d-CU1Gv2W4.d.ts} +0 -0
- /package/dist/{camera-blit-capture-CqWe1G7s.d.ts → camera-blit-capture-NKT9H5-e.d.ts} +0 -0
- /package/dist/{camera-follower-BTb2Yp12.d.ts → camera-follower-CqJJ7zRj.d.ts} +0 -0
- /package/dist/{capability-checker-CXqoJYtb.d.ts → capability-checker-DUQLg6gq.d.ts} +0 -0
- /package/dist/{capture-failure-tracker-BL5SoG2a.d.ts → capture-failure-tracker-gsm8q7yi.d.ts} +0 -0
- /package/dist/{chromium-camera-access-workaround-BNK189P0.d.ts → chromium-camera-access-workaround-D4K2uwwQ.d.ts} +0 -0
- /package/dist/{concurrency-DqAlKX4j.d.ts → concurrency-By0oOTZt.d.ts} +0 -0
- /package/dist/{css3d-renderer-manager-m-ab19vp.d.ts → css3d-renderer-manager-B3kGNtcn.d.ts} +0 -0
- /package/dist/{failure-tracker-Cnc_xWUw.d.ts → failure-tracker-BO7M7jF_.d.ts} +0 -0
- /package/dist/{file-system-utils-Bs7lpeVP.d.ts → file-system-utils-DOajnMm-.d.ts} +0 -0
- /package/dist/{format-file-size-BFUWvir1.d.ts → format-file-size-Dc98ulzB.d.ts} +0 -0
- /package/dist/{frame-loop-BEO9_q3k.d.ts → frame-loop-CpVjQ1dH.d.ts} +0 -0
- /package/dist/{frustum-visibility-D_RGmH98.d.ts → frustum-visibility-CeoCZchO.d.ts} +0 -0
- /package/dist/{geo-types-DqiBzPO9.d.ts → geo-types-3Ip1NzVR.d.ts} +0 -0
- /package/dist/{gps-C5inWeNV.d.ts → gps-BBO3hKfT.d.ts} +0 -0
- /package/dist/{gps-compass-cubes-BExxrWJ-.d.ts → gps-compass-cubes-DSN87L8p.d.ts} +0 -0
- /package/dist/{gps-error-handler-C2bS69oJ.d.ts → gps-error-handler-BbPsfw-_.d.ts} +0 -0
- /package/dist/{gps-event-markers-Dd0G2bD0.d.ts → gps-event-markers-Cz9RMA2k.d.ts} +0 -0
- /package/dist/{h3-proximity-B57C6rYL.d.ts → h3-proximity-C-j0pw1j.d.ts} +0 -0
- /package/dist/{hit-test-reticle-Dqak9hiR.d.ts → hit-test-reticle-DV-2TpB9.d.ts} +0 -0
- /package/dist/{lerp-utils-kLxMJ2Xj.d.ts → lerp-utils-BLmHhkVe.d.ts} +0 -0
- /package/dist/{list-formatter-ct8txwvR.d.ts → list-formatter-KNMS0ay2.d.ts} +0 -0
- /package/dist/{logger-CzQrCe6C.d.ts → logger-CLnPrHiD.d.ts} +0 -0
- /package/dist/{map-overlay-Dci4yvm3.d.ts → map-overlay-Dh2B97MP.d.ts} +0 -0
- /package/dist/{opfs-storage-DMtlt57S.d.ts → opfs-storage-3VZh-qH6.d.ts} +0 -0
- /package/dist/{permission-checker-CtPtPQRq.d.ts → permission-checker-CDuI8BwC.d.ts} +0 -0
- /package/dist/{qr-pose-Bt2reSw7.d.ts → qr-pose-D2rfu5DA.d.ts} +0 -0
- /package/dist/{scene-node-names-CdNeQjOE.d.ts → scene-node-names-BiShOQDB.d.ts} +0 -0
- /package/dist/{session-disposers-D8wnO-uW.js → session-disposers-zv9OGXPB.js} +0 -0
- /package/dist/{three-dispose-BCZkSJp2.d.ts → three-dispose-Bt1k7WKh.d.ts} +0 -0
- /package/dist/{vis-colors-BZsSLI4i.d.ts → vis-colors-Obw2pLqT.d.ts} +0 -0
- /package/dist/{webxr-nue-basis-CW1wsbm6.d.ts → webxr-nue-basis-3nfjDJJp.d.ts} +0 -0
- /package/dist/{xr-camera-texture-BmrP7iNZ.d.ts → xr-camera-texture-Cva1q3Qj.d.ts} +0 -0
- /package/dist/{xr-error-handler-BEjRgZjt.d.ts → xr-error-handler-CtvHpjfm.d.ts} +0 -0
- /package/dist/{xr-frame-loop-K8ebdjLw.d.ts → xr-frame-loop-DIYtRcUa.d.ts} +0 -0
- /package/dist/{zip-coverage-embed-tFohI2J4.d.ts → zip-coverage-embed-DCAREVmw.d.ts} +0 -0
- /package/dist/{zip-export-DDWXInTR.d.ts → zip-export-ol0S_Ofd.d.ts} +0 -0
- /package/dist/{zip-reader-Q2ue6zlC.d.ts → zip-reader-D9iPQwdQ.d.ts} +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//#region ../src/sensors/absolute-orientation.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* AbsoluteOrientationSensor capture (Generic Sensor API).
|
|
4
|
+
*
|
|
5
|
+
* Phase 1 of the AbsoluteOrientationSensor plan
|
|
6
|
+
* (GpsPlusSlamJs_Docs/docs/2026-06-25-absolute-orientation-sensor-plan.md §5.1):
|
|
7
|
+
* passive instrumentation that fuses accelerometer + gyroscope + magnetometer
|
|
8
|
+
* into an Earth-referenced (ENU) quaternion, captured per GPS event as an
|
|
9
|
+
* independent north reference. No production behaviour change.
|
|
10
|
+
*
|
|
11
|
+
* Platform: Chrome Android only. Safari / Firefox / desktop / iOS lack the
|
|
12
|
+
* sensor → this module degrades to a clean, reported no-op.
|
|
13
|
+
*
|
|
14
|
+
* The raw `'device'` reference frame is recorded together with the screen angle
|
|
15
|
+
* so either the device- or screen-compensated form can be reconstructed offline
|
|
16
|
+
* (plan §8 Q1).
|
|
17
|
+
*/
|
|
18
|
+
/** A single absolute-orientation reading, snapshotted into the GPS event payload. */
|
|
19
|
+
interface AbsoluteOrientationReading {
|
|
20
|
+
/** [x,y,z,w] quaternion mapping device-frame → Earth ENU (+X East, +Y North, +Z Up). */
|
|
21
|
+
quaternion: [number, number, number, number];
|
|
22
|
+
/** Reference frame the quaternion is expressed in. We record raw 'device'. */
|
|
23
|
+
referenceFrame: 'device' | 'screen';
|
|
24
|
+
/** screen.orientation.angle at sample time — needed to reconstruct the 'device' frame. */
|
|
25
|
+
screenAngleDeg: number;
|
|
26
|
+
/** Capture time (epoch ms) — pairs with the GPS event; lets warm-up be detected offline. */
|
|
27
|
+
timestamp: number;
|
|
28
|
+
}
|
|
29
|
+
/** Lifecycle status surfaced to the caller (HUD/observability). */
|
|
30
|
+
type AbsoluteOrientationStatus = {
|
|
31
|
+
state: 'active';
|
|
32
|
+
} | {
|
|
33
|
+
state: 'unavailable';
|
|
34
|
+
reason: string;
|
|
35
|
+
} | {
|
|
36
|
+
state: 'error';
|
|
37
|
+
reason: string;
|
|
38
|
+
};
|
|
39
|
+
/** True when the sensor can plausibly run here (secure context + API present). */
|
|
40
|
+
declare function isAbsoluteOrientationAvailable(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Start capturing absolute orientation. Idempotent (stops any prior watch first).
|
|
43
|
+
*
|
|
44
|
+
* On platforms without the sensor — or when permissions are denied — it reports
|
|
45
|
+
* `unavailable`/`error` via `onStatus` and stays a no-op; the recorder keeps
|
|
46
|
+
* working unchanged. Never throws.
|
|
47
|
+
*/
|
|
48
|
+
declare function startAbsoluteOrientationWatch(onStatus?: (status: AbsoluteOrientationStatus) => void): Promise<void>;
|
|
49
|
+
/** Latest reading, or null when unavailable/not-yet-warmed-up. Mirrors getLastDeviceOrientation. */
|
|
50
|
+
declare function getLatestAbsoluteOrientation(): AbsoluteOrientationReading | null;
|
|
51
|
+
/** Stop the watch and clear cached state. Idempotent. */
|
|
52
|
+
declare function stopAbsoluteOrientationWatch(): void;
|
|
53
|
+
//#endregion
|
|
54
|
+
export { startAbsoluteOrientationWatch as a, isAbsoluteOrientationAvailable as i, AbsoluteOrientationStatus as n, stopAbsoluteOrientationWatch as o, getLatestAbsoluteOrientation as r, AbsoluteOrientationReading as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { N as CombinedRootState, r as SlamAppRootState } from "./create-slam-app-store-n_VF63D5.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-CU1Gv2W4.js";
|
|
2
2
|
export { GridCell, MAX_TRACE_STEPS, bresenham3d };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-
|
|
1
|
+
import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-NKT9H5-e.js";
|
|
2
2
|
export { CameraBlitCapture, CameraBlitCaptureConfig, 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-DUQLg6gq.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-gsm8q7yi.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-D4K2uwwQ.js";
|
|
2
2
|
export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, applyChromiumProjectionLayerWorkaround, needsBaseLayerPersistence, parseChromeVersion };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-
|
|
1
|
+
import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-DQ-IYhO3.js";
|
|
2
2
|
export { DepthGridLookup, 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-BFX2r1wk.js";
|
|
2
|
+
import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-asc8exHt.js";
|
|
3
3
|
export { DepthInfo, DepthSample, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, wrapXRDepthInfo };
|
|
@@ -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-DjsbJW9L.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-DkNhFv4Y.js";
|
|
2
2
|
export { EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, createEnableGpsArController };
|
package/dist/ar/enable-gps-ar.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger.js";
|
|
2
|
-
import { a as endARSession, b as isWebXRSupported, y as initAR } from "../webxr-session-
|
|
2
|
+
import { a as endARSession, b as isWebXRSupported, y as initAR } from "../webxr-session-DG-eNfny.js";
|
|
3
3
|
import { requestGeolocationPermission, requestOrientationPermission, requestWebXRWithDepthPermission } from "../sensors/permission-checker.js";
|
|
4
4
|
import { startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch } from "../sensors/gps.js";
|
|
5
5
|
//#region ../src/ar/enable-gps-ar.ts
|
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-CpVjQ1dH.js";
|
|
2
2
|
export { FrameUpdate, clearFrameUpdates, registerFrameUpdate, runFrameUpdates };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
export { CapturedFrame, CapturedImage, DEFAULT_CAPTURE_CONFIG, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, MIN_VALID_IMAGE_BYTES };
|
|
1
|
+
import { a as ImageCaptureCallbacks, c as MIN_VALID_IMAGE_BYTES, i as FrameQualityVerdict, n as CapturedImage, o as ImageCaptureConfig, r as DEFAULT_CAPTURE_CONFIG, s as ImageCaptureManager, t as CapturedFrame } from "../image-capture-CNZDrQXG.js";
|
|
2
|
+
export { CapturedFrame, CapturedImage, DEFAULT_CAPTURE_CONFIG, FrameQualityVerdict, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, MIN_VALID_IMAGE_BYTES };
|
package/dist/ar/image-capture.js
CHANGED
|
@@ -1,155 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region ../src/ar/image-capture.ts
|
|
3
|
-
/**
|
|
4
|
-
* Image Capture Module
|
|
5
|
-
*
|
|
6
|
-
* Captures periodic JPEG screenshots from the WebGL canvas during AR recording.
|
|
7
|
-
* Uses async toBlob() for better performance (non-blocking).
|
|
8
|
-
*
|
|
9
|
-
* Includes validation to detect suspiciously small images (likely black/empty)
|
|
10
|
-
* which can occur on mobile devices when the WebGL context hasn't composited yet.
|
|
11
|
-
*/
|
|
12
|
-
const log = createLogger("ImageCapture");
|
|
13
|
-
/**
|
|
14
|
-
* Minimum expected blob size in bytes for a valid JPEG image.
|
|
15
|
-
* A black/empty 1920x1080 JPEG still compresses to ~2-3KB due to headers.
|
|
16
|
-
* A real camera frame at 0.7 quality should be 50KB+.
|
|
17
|
-
* We use a conservative threshold to catch obviously broken captures.
|
|
18
|
-
*/
|
|
19
|
-
const MIN_VALID_IMAGE_BYTES = 5e3;
|
|
20
|
-
/**
|
|
21
|
-
* Default capture configuration
|
|
22
|
-
*/
|
|
23
|
-
const DEFAULT_CAPTURE_CONFIG = {
|
|
24
|
-
intervalMs: 2e3,
|
|
25
|
-
quality: .7,
|
|
26
|
-
captureTimeoutMs: 5e3,
|
|
27
|
-
resolutionDivisor: 1
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Manages periodic image capture from a canvas.
|
|
31
|
-
*
|
|
32
|
-
* Usage:
|
|
33
|
-
* 1. Create with canvas and callbacks
|
|
34
|
-
* 2. Call start() when recording begins
|
|
35
|
-
* 3. Call onFrame(time) each XR frame
|
|
36
|
-
* 4. Call stop() when recording ends
|
|
37
|
-
*/
|
|
38
|
-
var ImageCaptureManager = class {
|
|
39
|
-
canvas;
|
|
40
|
-
callbacks;
|
|
41
|
-
config;
|
|
42
|
-
capturing = false;
|
|
43
|
-
lastCaptureTime = 0;
|
|
44
|
-
frameCount = 0;
|
|
45
|
-
captureInProgress = false;
|
|
46
|
-
captureTimeoutId = null;
|
|
47
|
-
constructor(canvas, callbacks, config = DEFAULT_CAPTURE_CONFIG) {
|
|
48
|
-
this.canvas = canvas;
|
|
49
|
-
this.callbacks = callbacks;
|
|
50
|
-
this.config = config;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Start capturing images.
|
|
54
|
-
* Resets frame counter and last capture time.
|
|
55
|
-
*/
|
|
56
|
-
start() {
|
|
57
|
-
this.capturing = true;
|
|
58
|
-
this.lastCaptureTime = 0;
|
|
59
|
-
this.frameCount = 0;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Stop capturing images.
|
|
63
|
-
* Clears any pending safety timeout and resets in-flight capture state.
|
|
64
|
-
*/
|
|
65
|
-
stop() {
|
|
66
|
-
this.capturing = false;
|
|
67
|
-
this.clearCaptureTimeout();
|
|
68
|
-
this.captureInProgress = false;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Check if capture manager is active.
|
|
72
|
-
*/
|
|
73
|
-
isCapturing() {
|
|
74
|
-
return this.capturing;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Get the current frame count.
|
|
78
|
-
*/
|
|
79
|
-
getFrameCount() {
|
|
80
|
-
return this.frameCount;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Called each XR frame to check if a capture is needed.
|
|
84
|
-
*
|
|
85
|
-
* @param time - Frame timestamp in milliseconds (from requestAnimationFrame)
|
|
86
|
-
*/
|
|
87
|
-
onFrame(time) {
|
|
88
|
-
if (!this.capturing) return;
|
|
89
|
-
if (this.captureInProgress) return;
|
|
90
|
-
const elapsed = time - this.lastCaptureTime;
|
|
91
|
-
if (this.lastCaptureTime > 0 && elapsed < this.config.intervalMs) return;
|
|
92
|
-
const pose = this.callbacks.getCurrentPose();
|
|
93
|
-
if (!pose) return;
|
|
94
|
-
this.captureInProgress = true;
|
|
95
|
-
this.lastCaptureTime = time;
|
|
96
|
-
const timestamp = performance.timeOrigin + time;
|
|
97
|
-
const screenRotation = this.callbacks.getScreenRotation();
|
|
98
|
-
const frameIndex = ++this.frameCount;
|
|
99
|
-
this.captureTimeoutId = setTimeout(() => {
|
|
100
|
-
if (this.captureInProgress) {
|
|
101
|
-
log.error(`Capture timeout after ${this.config.captureTimeoutMs}ms — force-resetting captureInProgress`);
|
|
102
|
-
this.captureInProgress = false;
|
|
103
|
-
this.captureTimeoutId = null;
|
|
104
|
-
}
|
|
105
|
-
}, this.config.captureTimeoutMs);
|
|
106
|
-
if (this.callbacks.captureFrame) this.callbacks.captureFrame(this.config.quality).then((frame) => {
|
|
107
|
-
this.handleCapturedBlob(frame?.blob ?? null, frame?.width, frame?.height, timestamp, frameIndex, pose, screenRotation);
|
|
108
|
-
}).catch(() => {
|
|
109
|
-
this.clearCaptureTimeout();
|
|
110
|
-
this.captureInProgress = false;
|
|
111
|
-
this.callbacks.onCaptureFailed?.();
|
|
112
|
-
});
|
|
113
|
-
else this.canvas.toBlob((blob) => {
|
|
114
|
-
this.handleCapturedBlob(blob, this.canvas.width, this.canvas.height, timestamp, frameIndex, pose, screenRotation);
|
|
115
|
-
}, "image/jpeg", this.config.quality);
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Clear the safety timeout for captureInProgress.
|
|
119
|
-
* Called when capture completes (success or failure) before the timeout fires.
|
|
120
|
-
*/
|
|
121
|
-
clearCaptureTimeout() {
|
|
122
|
-
if (this.captureTimeoutId !== null) {
|
|
123
|
-
clearTimeout(this.captureTimeoutId);
|
|
124
|
-
this.captureTimeoutId = null;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Common handler for captured blobs (from either canvas.toBlob or captureFrame).
|
|
129
|
-
* Handles null blobs, suspicious image detection, and dispatching onCaptured.
|
|
130
|
-
*/
|
|
131
|
-
handleCapturedBlob(blob, width, height, timestamp, frameIndex, pose, screenRotation) {
|
|
132
|
-
this.clearCaptureTimeout();
|
|
133
|
-
this.captureInProgress = false;
|
|
134
|
-
if (!blob) {
|
|
135
|
-
this.callbacks.onCaptureFailed?.();
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
if (blob.size < 5e3) {
|
|
139
|
-
log.error(`Suspicious image at frame ${frameIndex}: blob size ${blob.size} bytes is below minimum ${MIN_VALID_IMAGE_BYTES} bytes. Image may be black/empty.`);
|
|
140
|
-
this.callbacks.onSuspiciousImage?.(blob.size, frameIndex);
|
|
141
|
-
}
|
|
142
|
-
this.callbacks.onCaptured({
|
|
143
|
-
blob,
|
|
144
|
-
timestamp,
|
|
145
|
-
frameIndex,
|
|
146
|
-
position: pose.position,
|
|
147
|
-
rotation: pose.orientation,
|
|
148
|
-
screenRotation,
|
|
149
|
-
...width && width > 0 ? { width } : {},
|
|
150
|
-
...height && height > 0 ? { height } : {}
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
//#endregion
|
|
1
|
+
import { n as ImageCaptureManager, r as MIN_VALID_IMAGE_BYTES, t as DEFAULT_CAPTURE_CONFIG } from "../image-capture-B2-b6tKK.js";
|
|
155
2
|
export { DEFAULT_CAPTURE_CONFIG, ImageCaptureManager, MIN_VALID_IMAGE_BYTES };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as QualityFilterConfig, c as meanLuminance, i as ImageQualityGate, l as rgbaToGrayscale, n as DEFAULT_SHARPNESS_HISTORY_SIZE, o as QualityRejectReason, r as DEFAULT_SHARPNESS_MIN_SAMPLES, s as QualityVerdict, t as DEFAULT_QUALITY_FILTER, u as sharpnessScore } from "../image-quality-smCBoFj1.js";
|
|
2
|
+
export { DEFAULT_QUALITY_FILTER, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, ImageQualityGate, QualityFilterConfig, QualityRejectReason, QualityVerdict, meanLuminance, rgbaToGrayscale, sharpnessScore };
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
//#region ../src/ar/image-quality.ts
|
|
2
|
+
/**
|
|
3
|
+
* Default image-quality configuration. **Disabled by default** (plan §10): the
|
|
4
|
+
* relative blur threshold is unvalidated, and a mis-tuned gate silently dropping
|
|
5
|
+
* good frames for every consumer app is worse than the motion gate's low-risk
|
|
6
|
+
* default-on. Flip to `true` once the thresholds are field-tuned. The numeric
|
|
7
|
+
* values are PLACEHOLDERS pending on-device tuning (record measured values in
|
|
8
|
+
* implementation-progress.md). `maxWaitMs` of 4000 ms is 2× the default 2000 ms
|
|
9
|
+
* image interval.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_QUALITY_FILTER = {
|
|
12
|
+
enabled: false,
|
|
13
|
+
blurRelativeThreshold: .5,
|
|
14
|
+
minMeanLuminance: 10,
|
|
15
|
+
maxWaitMs: 4e3
|
|
16
|
+
};
|
|
17
|
+
/** Default number of recent (non-black) sharpness scores the gate keeps. */
|
|
18
|
+
const DEFAULT_SHARPNESS_HISTORY_SIZE = 15;
|
|
19
|
+
/**
|
|
20
|
+
* Default minimum samples before the relative blur check engages. Below this the
|
|
21
|
+
* gate is in "cold start" and accepts every non-black frame — the same
|
|
22
|
+
* "no baseline yet ⇒ don't block" principle the motion gate uses for an empty
|
|
23
|
+
* window.
|
|
24
|
+
*/
|
|
25
|
+
const DEFAULT_SHARPNESS_MIN_SAMPLES = 3;
|
|
26
|
+
/**
|
|
27
|
+
* Compute the **variance of the Laplacian** of a single-channel grayscale image
|
|
28
|
+
* — the standard focus measure (higher ⇒ sharper / more in-focus).
|
|
29
|
+
*
|
|
30
|
+
* The discrete Laplacian per interior pixel is
|
|
31
|
+
* `up + down + left + right − 4·centre` (the 4-neighbour kernel); the score is
|
|
32
|
+
* the variance of that response over all interior pixels. A flat/constant image
|
|
33
|
+
* yields 0; a focused, textured image yields a large value.
|
|
34
|
+
*
|
|
35
|
+
* Defensive: returns `0` (rather than throwing or `NaN`) for any input that has
|
|
36
|
+
* no interior pixels — non-integer or `< 3` dimensions, or a buffer shorter than
|
|
37
|
+
* `width · height`. A tiny negative variance from floating-point cancellation is
|
|
38
|
+
* clamped to 0.
|
|
39
|
+
*
|
|
40
|
+
* @param gray Row-major single-channel intensities, length ≥ `width · height`.
|
|
41
|
+
* @param width Image width in pixels.
|
|
42
|
+
* @param height Image height in pixels.
|
|
43
|
+
*/
|
|
44
|
+
function sharpnessScore(gray, width, height) {
|
|
45
|
+
if (!Number.isInteger(width) || !Number.isInteger(height)) return 0;
|
|
46
|
+
if (width < 3 || height < 3) return 0;
|
|
47
|
+
if (gray.length < width * height) return 0;
|
|
48
|
+
let sum = 0;
|
|
49
|
+
let sumSq = 0;
|
|
50
|
+
let count = 0;
|
|
51
|
+
for (let y = 1; y < height - 1; y++) {
|
|
52
|
+
const row = y * width;
|
|
53
|
+
for (let x = 1; x < width - 1; x++) {
|
|
54
|
+
const i = row + x;
|
|
55
|
+
const laplacian = gray[i - 1] + gray[i + 1] + gray[i - width] + gray[i + width] - 4 * gray[i];
|
|
56
|
+
sum += laplacian;
|
|
57
|
+
sumSq += laplacian * laplacian;
|
|
58
|
+
count++;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (count === 0) return 0;
|
|
62
|
+
const mean = sum / count;
|
|
63
|
+
const variance = sumSq / count - mean * mean;
|
|
64
|
+
return variance > 0 ? variance : 0;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Convert an RGBA buffer to a single-channel grayscale (Rec. 601 luma) buffer,
|
|
68
|
+
* the input {@link sharpnessScore} expects. Pure; ignores the alpha channel. A
|
|
69
|
+
* partial trailing pixel (length not a multiple of 4) is ignored.
|
|
70
|
+
*/
|
|
71
|
+
function rgbaToGrayscale(rgba) {
|
|
72
|
+
const pixels = Math.floor(rgba.length / 4);
|
|
73
|
+
const out = new Uint8ClampedArray(pixels);
|
|
74
|
+
for (let p = 0; p < pixels; p++) {
|
|
75
|
+
const o = p * 4;
|
|
76
|
+
out[p] = .299 * rgba[o] + .587 * rgba[o + 1] + .114 * rgba[o + 2];
|
|
77
|
+
}
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Mean Rec. 601 luma (`0.299R + 0.587G + 0.114B`) over an RGBA buffer, on a
|
|
82
|
+
* 0–255 scale. Near-zero ⇒ black/empty frame. Alpha is ignored. Returns `0` for
|
|
83
|
+
* an empty buffer.
|
|
84
|
+
*/
|
|
85
|
+
function meanLuminance(rgba) {
|
|
86
|
+
const pixels = Math.floor(rgba.length / 4);
|
|
87
|
+
if (pixels === 0) return 0;
|
|
88
|
+
let sum = 0;
|
|
89
|
+
for (let p = 0; p < pixels; p++) {
|
|
90
|
+
const o = p * 4;
|
|
91
|
+
sum += .299 * rgba[o] + .587 * rgba[o + 1] + .114 * rgba[o + 2];
|
|
92
|
+
}
|
|
93
|
+
return sum / pixels;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Lower-middle median (matches the project's other `medianOf` helpers, e.g.
|
|
97
|
+
* `qr-pose-aggregation.ts`). Caller guarantees a non-empty array.
|
|
98
|
+
*/
|
|
99
|
+
function medianOf(values) {
|
|
100
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
101
|
+
return sorted[Math.floor((sorted.length - 1) / 2)];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The self-calibrating blur+blackness verdict, with the rolling sharpness
|
|
105
|
+
* history that makes the blur check scene-relative (§5). Stateful but pure (no
|
|
106
|
+
* DOM/worker): one instance per recording session, fed each analysed frame's
|
|
107
|
+
* metrics.
|
|
108
|
+
*
|
|
109
|
+
* Policy per frame ({@link evaluate}):
|
|
110
|
+
* 1. **Blackness — absolute.** `meanLuminance < config.minMeanLuminance` ⇒
|
|
111
|
+
* reject `'black'`. The score is NOT recorded (a black frame's ~0 sharpness
|
|
112
|
+
* must not drag the median down and disarm the blur check).
|
|
113
|
+
* 2. **Blur — relative.** Once at least `minSamples` non-black frames have been
|
|
114
|
+
* seen, reject `'blurry'` when `sharpness < blurRelativeThreshold · median`.
|
|
115
|
+
* Before that (cold start) every non-black frame is accepted.
|
|
116
|
+
* 3. The non-black frame's sharpness is recorded into the rolling window
|
|
117
|
+
* (capped at `historySize`) so the median tracks the scene's texture level —
|
|
118
|
+
* including a genuinely softening scene, which gradually lowers the bar (the
|
|
119
|
+
* §10 "retry storm" regime where the fallback then guarantees progress).
|
|
120
|
+
*/
|
|
121
|
+
var ImageQualityGate = class {
|
|
122
|
+
history = [];
|
|
123
|
+
historySize;
|
|
124
|
+
minSamples;
|
|
125
|
+
constructor(historySize = 15, minSamples = 3) {
|
|
126
|
+
this.historySize = Number.isFinite(historySize) && historySize >= 1 ? Math.floor(historySize) : 15;
|
|
127
|
+
this.minSamples = Number.isFinite(minSamples) && minSamples >= 1 ? Math.floor(minSamples) : 3;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Judge one frame from its precomputed metrics + the current config, updating
|
|
131
|
+
* the rolling history. See the class doc for the policy.
|
|
132
|
+
*/
|
|
133
|
+
evaluate(sharpness, meanLum, config) {
|
|
134
|
+
if (meanLum < config.minMeanLuminance) return {
|
|
135
|
+
accept: false,
|
|
136
|
+
reason: "black",
|
|
137
|
+
sharpness,
|
|
138
|
+
meanLuminance: meanLum
|
|
139
|
+
};
|
|
140
|
+
let blurry = false;
|
|
141
|
+
if (this.history.length >= this.minSamples) {
|
|
142
|
+
if (sharpness < config.blurRelativeThreshold * medianOf(this.history)) blurry = true;
|
|
143
|
+
}
|
|
144
|
+
this.history.push(sharpness);
|
|
145
|
+
if (this.history.length > this.historySize) this.history.shift();
|
|
146
|
+
return blurry ? {
|
|
147
|
+
accept: false,
|
|
148
|
+
reason: "blurry",
|
|
149
|
+
sharpness,
|
|
150
|
+
meanLuminance: meanLum
|
|
151
|
+
} : {
|
|
152
|
+
accept: true,
|
|
153
|
+
reason: null,
|
|
154
|
+
sharpness,
|
|
155
|
+
meanLuminance: meanLum
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/** Number of (non-black) sharpness samples currently retained. */
|
|
159
|
+
historyLength() {
|
|
160
|
+
return this.history.length;
|
|
161
|
+
}
|
|
162
|
+
/** Clear the rolling history (e.g. on a new recording session). */
|
|
163
|
+
reset() {
|
|
164
|
+
this.history.length = 0;
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
//#endregion
|
|
168
|
+
export { DEFAULT_QUALITY_FILTER, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, ImageQualityGate, meanLuminance, rgbaToGrayscale, sharpnessScore };
|
package/dist/ar/index.d.ts
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
import { r as bresenham3d, t as GridCell } from "../bresenham3d-
|
|
2
|
-
import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-
|
|
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 { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-
|
|
7
|
-
import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-
|
|
8
|
-
import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-
|
|
9
|
-
import { a as
|
|
10
|
-
import {
|
|
11
|
-
import { a as
|
|
12
|
-
import { i as
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { r as
|
|
16
|
-
import {
|
|
17
|
-
import { t as
|
|
18
|
-
import {
|
|
19
|
-
import { n as
|
|
20
|
-
import {
|
|
21
|
-
import { a as
|
|
22
|
-
import {
|
|
23
|
-
import { a as
|
|
24
|
-
import { n as
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import { t as
|
|
28
|
-
import { t as
|
|
29
|
-
import {
|
|
30
|
-
|
|
1
|
+
import { r as bresenham3d, t as GridCell } from "../bresenham3d-CU1Gv2W4.js";
|
|
2
|
+
import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-NKT9H5-e.js";
|
|
3
|
+
import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-DUQLg6gq.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-gsm8q7yi.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-D4K2uwwQ.js";
|
|
6
|
+
import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-DQ-IYhO3.js";
|
|
7
|
+
import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-asc8exHt.js";
|
|
8
|
+
import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-DjsbJW9L.js";
|
|
9
|
+
import { a as QualityFilterConfig, c as meanLuminance, i as ImageQualityGate, l as rgbaToGrayscale, n as DEFAULT_SHARPNESS_HISTORY_SIZE, o as QualityRejectReason, r as DEFAULT_SHARPNESS_MIN_SAMPLES, s as QualityVerdict, t as DEFAULT_QUALITY_FILTER, u as sharpnessScore } from "../image-quality-smCBoFj1.js";
|
|
10
|
+
import { a as ImageCaptureCallbacks, c as MIN_VALID_IMAGE_BYTES, i as FrameQualityVerdict, n as CapturedImage, o as ImageCaptureConfig, r as DEFAULT_CAPTURE_CONFIG, s as ImageCaptureManager, t as CapturedFrame } from "../image-capture-CNZDrQXG.js";
|
|
11
|
+
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-D2rfu5DA.js";
|
|
12
|
+
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--fFX25mV.js";
|
|
13
|
+
import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "../xr-camera-texture-Cva1q3Qj.js";
|
|
14
|
+
import { B as setTrackingStore, F as setImageQualityAnalyzer, G as stopCameraFrameCapture, H as startCameraFrameCapture, K as stopDepthCapture, L as setTrackingCallbacks, M as setDepthCaptureCallback, N as setFrameCallback, P as setImageCaptureCallback, R as setTrackingLostCallback, S as initAR, U as startDepthCapture, W as startImageCapture, _ as getDepthSampleCount, b as getScene, c as endARSession, f as getArWorldGroup, g as getCurrentArPose, h as getCameraFrameCount, j as setCameraFrameCallback, p as getCamera, q as stopImageCapture, r as SessionFeatureOptions, t as CameraFrameCaptureConfig, v as getImageCaptureFrameCount, y as getLiveCss3dManager } from "../webxr-session-Do5L6G3B.js";
|
|
15
|
+
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-DkNhFv4Y.js";
|
|
16
|
+
import { r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-CpVjQ1dH.js";
|
|
17
|
+
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-DQdAsid1.js";
|
|
18
|
+
import { t as createQrSizeDepthContext } from "../qr-size-depth-context-CeAG53fy.js";
|
|
19
|
+
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-CmxTP2m4.js";
|
|
20
|
+
import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-Brl73HGO.js";
|
|
21
|
+
import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../qr-detection-controller-CDurHv8E.js";
|
|
22
|
+
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-B7tWJq7j.js";
|
|
23
|
+
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-BneSj4_5.js";
|
|
24
|
+
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-my9bqULS.js";
|
|
25
|
+
import { n as OccupancyGridOptions, t as OccupancyGrid } from "../occupancy-grid-DnOc-6PU.js";
|
|
26
|
+
import { i as registerXrFrameUpdate, n as XrFrameUpdate, t as XrFrameContext } from "../xr-frame-loop-DIYtRcUa.js";
|
|
27
|
+
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-DBlDrV_x.js";
|
|
28
|
+
import { t as SCENE_NODE } from "../scene-node-names-BiShOQDB.js";
|
|
29
|
+
import { t as WEBXR_TO_NUE } from "../webxr-nue-basis-3nfjDJJp.js";
|
|
30
|
+
import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "../xr-error-handler-CtvHpjfm.js";
|
|
31
|
+
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, CapturedFrame, CapturedImage, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_QUALITY_FILTER, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, DepthGridLookup, DepthInfo, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, DepthUnprojector, DeriveQrPoseDeps, DerivedQrPlacement, DetectedBarcodeLike, DetectionScheduler, DetectionSchedulerConfig, EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, Enu, FetchLike, FetchQrLevelOptions, FrameQualityVerdict, FrameUpdate, GridCell, Homography, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, ImageQualityGate, 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, QualityFilterConfig, QualityRejectReason, QualityVerdict, 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, meanLuminance, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rgbaToGrayscale, rotationToRodrigues, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setImageQualityAnalyzer, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, sharpnessScore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateQuad, wrapXRDepthInfo };
|
package/dist/ar/index.js
CHANGED
|
@@ -12,19 +12,20 @@ import { createIncrementalQrPlacement, deriveQrPlacement, deriveQrSizeM, deriveS
|
|
|
12
12
|
import { WEBXR_TO_NUE } from "./webxr-nue-basis.js";
|
|
13
13
|
import { createQrDebugView } from "./qr-debug-view.js";
|
|
14
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-
|
|
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-
|
|
15
|
+
import { i as evaluateQrPoseStability, n as aggregateQrPose, r as averageRotation, t as DEFAULT_ROTATION_INLIER_ANGLE_DEG } from "../qr-pose-aggregation-DBiaLW0O.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-MFpFlV7j.js";
|
|
17
17
|
import { BarcodeDetectorFrontEnd, createBarcodeDetectorFrontEnd } from "./qr-frontend.js";
|
|
18
|
-
import { A as setFrameCallback, B as
|
|
18
|
+
import { A as setFrameCallback, B as startDepthCapture, F as setTrackingLostCallback, G as CameraFrameSource, H as stopCameraFrameCapture, L as setTrackingStore, M as setImageQualityAnalyzer, O as setCameraFrameCallback, P as setTrackingCallbacks, U as stopDepthCapture, V as startImageCapture, W as stopImageCapture, _ 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 startCameraFrameCapture } from "../webxr-session-DG-eNfny.js";
|
|
19
19
|
import { PlanarPnpSquare, homographyFromCorrespondences, ippePoseCandidates, nearestRotation3x3, rotationToRodrigues, solveLinear } from "./planar-pnp.js";
|
|
20
20
|
import { bresenham3d } from "./bresenham3d.js";
|
|
21
21
|
import { OccupancyGrid } from "./occupancy-grid.js";
|
|
22
22
|
import { registerFrameUpdate } from "./frame-loop.js";
|
|
23
23
|
import { registerXrFrameUpdate } from "./xr-frame-loop.js";
|
|
24
|
-
import {
|
|
24
|
+
import { n as ImageCaptureManager, r as MIN_VALID_IMAGE_BYTES, t as DEFAULT_CAPTURE_CONFIG } from "../image-capture-B2-b6tKK.js";
|
|
25
|
+
import { DEFAULT_QUALITY_FILTER, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, ImageQualityGate, meanLuminance, rgbaToGrayscale, sharpnessScore } from "./image-quality.js";
|
|
25
26
|
import { acquireCameraTexture } from "./xr-camera-texture.js";
|
|
26
27
|
import { SCENE_NODE } from "./scene-node-names.js";
|
|
27
28
|
import { createEnableGpsArController } from "./enable-gps-ar.js";
|
|
28
29
|
import { disposeReplayScene, getAlignmentLerper, getCameraFollower, getCameraMode, getReplayState, initReplayScene, toggleCameraMode, updateOrbitTarget } from "./replay-scene.js";
|
|
29
30
|
import { XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, getXrErrorMessage } from "./xr-error-handler.js";
|
|
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 };
|
|
31
|
+
export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BarcodeDetectorFrontEnd, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraFrameSource, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_QUALITY_FILTER, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, DepthSampler, ImageCaptureManager, ImageQualityGate, 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, meanLuminance, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rgbaToGrayscale, rotationToRodrigues, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setImageQualityAnalyzer, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, sharpnessScore, 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-DnOc-6PU.js";
|
|
2
2
|
export { OccupancyGrid, OccupancyGridOptions };
|
package/dist/ar/planar-pnp.d.ts
CHANGED
|
@@ -1,2 +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-
|
|
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-my9bqULS.js";
|
|
2
2
|
export { Homography, Mat3, PlanarPnpSquare, PoseCandidate, homographyFromCorrespondences, ippePoseCandidates, nearestRotation3x3, rotationToRodrigues, solveLinear };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-
|
|
1
|
+
import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-Brl73HGO.js";
|
|
2
2
|
export { QrDebugView, createQrDebugView };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
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-
|
|
1
|
+
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-CmxTP2m4.js";
|
|
2
2
|
export { DeriveQrPoseDeps, DerivedQrPlacement, IncrementalQrPlacement, RawQrObservation, createIncrementalQrPlacement, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, solveQrPoseFromObservation };
|