|
11 | 11 |
|
12 | 12 | > [!IMPORTANT] |
13 | 13 | > **Project Status:** 🚧 This project is **brand new**. |
14 | | -> Currently, fiducial marker-based AR via [AR.js](https://github.com/ar-js-org/ar.js) and location-based AR via [LocAR.js](https://github.com/ar-js-org/locar.js) are working (see [`apps/`](./apps/) for demos), though they are **experimental**. Contributions (PRs, [Omni organization sponsorship](https://github.com/sponsors/omnidotdev)) appreciated. |
15 | | -> Native WebXR integration via `@react-three/xr` is coming next. |
| 14 | +> Currently, fiducial marker-based AR via [AR.js](https://github.com/ar-js-org/ar.js), location-based AR via [LocAR.js](https://github.com/ar-js-org/locar.js), and WebXR via [`@react-three/xr`](https://github.com/pmndrs/xr) are working (see [`apps/`](./apps/) for demos), though they are **experimental**. Contributions (PRs, [Omni organization sponsorship](https://github.com/sponsors/omnidotdev)) appreciated. |
16 | 15 |
|
17 | 16 | ## Overview |
18 | 17 |
|
19 | | -RDK unifies multiple XR technologies, such as AR.js for marker-based AR, LocAR.js for geolocation-based AR, and WebXR (coming soon) for device-native support under one React-first abstraction powered by Three.js. |
20 | | - |
21 | | -| Capability/Use Case | Status | Backend (Current or Proposed) | Android | iOS | Notes | |
22 | | -| ------------------------------------ | --------------- | ---------------------------------------------------------------------------------------------------- | ------- | --- | ----------------------------------------------------------------------------------------- | |
23 | | -| **Fiducial (Pattern/Barcode)** | ⚗️ Experimental | [AR.js (ARToolKit)](https://github.com/ar-js-org/ar.js) | ✅ | ✅ | Uses `.patt` or barcode markers. Reliable for printed markers. No WebXR dependency. | |
24 | | -| **Image Tracking (Natural Feature)** | 🧭 Planned | [AR.js (ARToolKit)](https://github.com/ar-js-org/ar.js) | N/A | N/A | May use `.mind` or `XRTrackedImage`. Ideal for logos or posters. Requires image database. | |
25 | | -| **Geolocation / World Anchors** | ⚗️ Experimental | [LocAR.js](https://github.com/ar-js-org/locar.js) | ✅ | ✅ | Uses GPS + compass; may later integrate Mapbox or Cesium. | |
26 | | -| **WebXR Native AR/VR Session** | 🧭 Planned | [`@react-three/xr`](https://github.com/pmndrs/xr) | N/A | N/A | Entry point for true AR/VR sessions. Ties into `XRSessionProvider`. | |
27 | | -| **Face Tracking** | 🧭 Planned | - | N/A | N/A | Uses webcam + ML model; lightweight and fast. | |
28 | | -| **Body/Pose Tracking** | 🧭 Planned | [WebXR Body Tracking](https://github.com/immersive-web/body-tracking) | N/A | N/A | Real-time skeletal tracking. GPU/WebGL acceleration required. | |
29 | | -| **Hand Tracking** | 🧭 Planned | - | N/A | N/A | Supported on Chrome + Meta; ML fallback possible. | |
30 | | -| **Plane/Surface Detection** | 🧭 Planned | [WebXR Hit Test API](https://immersive-web.github.io/hit-test)/ar.js (limited) | N/A | N/A | Enables AR object placement on flat surfaces. | |
31 | | -| **Depth Sensing/Environment Mesh** | 🧭 Planned | [WebXR Depth Sensing API](https://immersive-web.github.io/depth-sensing) | N/A | N/A | Provides per-pixel depth; early spec. | |
32 | | -| **SLAM/Visual Positioning (VPS)** | 🧭 Planned | Custom | N/A | N/A | Requires world map data; long-term goal. | |
33 | | -| **Voice/Gesture Interaction** | 🧭 Planned | [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API)/MediaPipe Gestures | N/A | N/A | Enables multimodal input: voice, hand, gaze. | |
34 | | -| **Mixed Reality Compositing** | 🧭 Planned | WebXR Layers/CanvasCaptureStream | N/A | N/A | Transparent overlays/live compositing. | |
| 18 | +RDK unifies multiple spatial and XR technologies, such as AR.js for marker-based AR, LocAR.js for geolocation-based AR, and WebXR for device-native support under one React-first abstraction powered by Three.js. |
| 19 | + |
| 20 | +| Capability/Use Case | Status | Backend (Current or Proposed) | Android | iOS | Notes | |
| 21 | +| ------------------------------------ | --------------- | ---------------------------------------------------------------------------------------------------- | ------- | -------------- | ----------------------------------------------------------------------------------------- | |
| 22 | +| **Fiducial (Pattern/Barcode)** | ⚗️ Experimental | [AR.js (ARToolKit)](https://github.com/ar-js-org/ar.js) | ✅ | ✅ | Uses `.patt` or barcode markers. Reliable for printed markers. No WebXR dependency. | |
| 23 | +| **Image Tracking (Natural Feature)** | 🧭 Planned | [AR.js (ARToolKit)](https://github.com/ar-js-org/ar.js) | N/A | N/A | May use `.mind` or `XRTrackedImage`. Ideal for logos or posters. Requires image database. | |
| 24 | +| **Geolocation / World Anchors** | ⚗️ Experimental | [LocAR.js](https://github.com/ar-js-org/locar.js) | ✅ | ✅ | Uses GPS + compass; may later integrate Mapbox or Cesium. | |
| 25 | +| **WebXR Native AR/VR Session** | ⚗️ Experimental | [`@react-three/xr`](https://github.com/pmndrs/xr) | ✅ | ❌[^ios-webxr] | Entry point for immersive AR/VR sessions. | |
| 26 | +| **Face Tracking** | 🧭 Planned | - | N/A | N/A | Uses webcam + ML model; lightweight and fast. | |
| 27 | +| **Body/Pose Tracking** | 🧭 Planned | [WebXR Body Tracking](https://github.com/immersive-web/body-tracking) | N/A | N/A | Real-time skeletal tracking. GPU/WebGL acceleration required. | |
| 28 | +| **Hand Tracking** | 🧭 Planned | - | N/A | N/A | Supported on Chrome + Meta; ML fallback possible. | |
| 29 | +| **Plane/Surface Detection** | 🧭 Planned | [WebXR Hit Test API](https://immersive-web.github.io/hit-test)/ar.js (limited) | N/A | N/A | Enables AR object placement on flat surfaces. | |
| 30 | +| **Depth Sensing/Environment Mesh** | 🧭 Planned | [WebXR Depth Sensing API](https://immersive-web.github.io/depth-sensing) | N/A | N/A | Provides per-pixel depth; early spec. | |
| 31 | +| **SLAM/Visual Positioning (VPS)** | 🧭 Planned | Custom | N/A | N/A | Requires world map data; long-term goal. | |
| 32 | +| **Voice/Gesture Interaction** | 🧭 Planned | [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API)/MediaPipe Gestures | N/A | N/A | Enables multimodal input: voice, hand, gaze. | |
| 33 | +| **Mixed Reality Compositing** | 🧭 Planned | WebXR Layers/CanvasCaptureStream | N/A | N/A | Transparent overlays/live compositing. | |
35 | 34 |
|
36 | 35 | ## Demos |
37 | 36 |
|
@@ -83,7 +82,11 @@ Install RDK and required peer dependencies: |
83 | 82 | bun add @omnidotdev/rdk @ar-js-org/ar.js @react-three/fiber locar react react-dom three |
84 | 83 | ``` |
85 | 84 |
|
86 | | -See [`apps/fiducial-demo`](./apps/fiducial-demo) for an example of usage. More demos will be added as more use cases beyond fiducial marker-based AR are implemented. |
| 85 | +See the demo applications for examples of usage: |
| 86 | + |
| 87 | +- [`apps/fiducial-demo`](./apps/fiducial-demo): Fiducial marker tracking powered by AR.js |
| 88 | +- [`apps/geolocation-demo`](./apps/geolocation-demo): GPS-based AR powered by LocAR.js |
| 89 | +- [`apps/immersive-demo`](./apps/immersive-demo): WebXR powered by `@react-three/xr` |
87 | 90 |
|
88 | 91 | ## Goals: the "Why" |
89 | 92 |
|
@@ -119,3 +122,5 @@ See Omni's [contributing docs](https://docs.omni.dev/contributing/overview). |
119 | 122 | ## License |
120 | 123 |
|
121 | 124 | The code in this repository is licensed under MIT, © Omni LLC. See [LICENSE.md](LICENSE.md) for more information. |
| 125 | + |
| 126 | +[^ios-webxr]: [iOS does not currently natively support WebXR](https://caniuse.com/webxr), but an iOS fallback is planned for the RDK immersive module. |
0 commit comments