Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/exokitxr/exokit
Native VR/AR/XR engine for JavaScript 🦖
https://github.com/exokitxr/exokit
a-frame android browser canvas engine exokit javascript magicleap reality virtual-reality web webgl webrtc webvr webxr xr
Last synced: 6 days ago
JSON representation
Native VR/AR/XR engine for JavaScript 🦖
- Host: GitHub
- URL: https://github.com/exokitxr/exokit
- Owner: exokitxr
- License: mit
- Created: 2018-01-20T07:29:25.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-09-06T20:59:00.000Z (over 1 year ago)
- Last Synced: 2024-10-29T17:38:09.954Z (about 1 month ago)
- Topics: a-frame, android, browser, canvas, engine, exokit, javascript, magicleap, reality, virtual-reality, web, webgl, webrtc, webvr, webxr, xr
- Language: JavaScript
- Homepage:
- Size: 234 MB
- Stars: 994
- Watchers: 37
- Forks: 117
- Open Issues: 209
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-canvas - exokit - Native VR/AR/XR engine for JavaScript 🦖 ![](https://img.shields.io/github/stars/exokitxr/exokit?style=social) ![](https://img.shields.io/github/forks/exokitxr/exokit?style=social) (Libraries / VR/AR)
- awesome-virtual-reality - Exokit - VR/AR/XR Engine in JavaScript
README
Exokit
:dark_sunglasses: Native VR and AR engine for JavaScript 🦖
## Examples
*Find more examples [here](https://github.com/exokitxr/exokit/tree/master/examples) and on [YouTube](https://www.youtube.com/channel/UC87Q7_5ooY8FSLwOec52ZPQ).*
## Overview
This project **enables developers to build XR experiences using the same code that runs on the web**. Exokit engine is written on top of Node and emulates a web browser, providing native hooks for WebGL, WebXR, WebAudio, and other APIs used in immersive experiences.
:eyeglasses: **Exokit currently targets the following platforms**:
* OpenVR Desktop VR (Steam compatible)
* Oculus Desktop (Oculus Rift/Rift S)
* Oculus Mobile (Oculus Quest/Go, GearVR)
* Magic Leap
* iOS ARKit *
* Android ARCore *
* Google VR (Daydream / Cardboard / Mirage Solo) *
* any XR device, start a [pull request](https://github.com/exokitxr/exokit/compare) with a native binding if it isn't listed here! *\* not supported yet
:electric_plug: **Since Exokit supports anything that runs on the web, it powers experiences built with**:
* Three.js
* Unity
* Pixi.js
* Babylon.js
* A-Frame
* Custom WebGL frameworks
* WebAssembly, TypeScript, and any language that transpiles to JavaScript:thumbsup: **Why Exokit?**
- You want your WebGL/WebXR to run fast.
- You want the hot new web APIs.
- You want to add your own integrations -- including native -- into a browser environment.
- You want a lightweight browser as a hackable node module.
- You want to combine the web with a 3D engine like Unity.:thumbsdown: **Why not Exokit?**
- You're looking for a traditional "web browser".
- You don't care about 3D or mixed reality.
- You're looking for strict and/or legacy standards support.:book: **Manifesto**
- The future is immersive. The web is the best application platform. Javascript is the best ecosystem.
- Content should be hardware agnostic. Tomorrow will have different hardware. VR and AR should be compatible.
- It's not possible to do both 2D and 3D well. We don't do 2D. We can use an external 2D browser.
- Use your favorite game engine. Exokit is not a game engine.
- Legacy browser design choices don't make sense in XR.
- Exokit empowers and connect apps, even (especially) if they aren't designed to cooperate.
- Apps should run in "reality tabs", layers of reality that blend together.## Quickstart
### Desktop
Download for current OS
#### Run a WebXR site (desktop)
```sh
exokit https://aframe.io/a-painter/ # start A-Painter in Exokit
```### Magic Leap
Download for Magic Leap
#### Run (Magic Leap device)
```sh
mldb connect 192.168.0.10:1131 # mldb needs to be connected; see MLDB documentation
mldb install -u exokit.mpk # downloaded or built package
mldb launch com.webmr.exokit -v "ARGS=node . file:///package/examples/hello_ml.html" # or URL to load
mldb log exokit:*
```## Architecture
Exokit is a Javascript [Node.js](https://nodejs.org) module.
C++ bindings hook into WebGL, WebXR, Magic Leap, Leap Motion, and various other device APIs.
`const {window} = require('exokit')()` to get an immersive browser in another project.
Exokit runs on Windows, macOS, Linux (x64), Linux (ARM64), and Magic Leap (ARM64).
## Web API support
- HTTP/S
- HTML5
- ``
- DOM
- WebGL
- WebXR
- WebVR
- WebRTC
- Canvas2D
- WebSocket
- Web Workers
- `<img>`, `<audio>`, `<video>`
- WebAudio
- Keyboard/Mouse events
- Gamepad API
- `<iframe>`
- ~~HTML layout~~
- ~~HTML rendering~~
- ~~CSS~~
- ~~Legacy APIs~~## Hardware bindings
- OpenGL
- OpenVR (Steam VR)
- Oculus
- Oculus Mobile
- Magic Leap
- Leap Motion## Local Development
See full building instructions in [BUILDING.md](https://github.com/exokitxr/exokit/blob/master/BUILDING.md).```sh
git clone https://github.com/exokitxr/exokit.git
cd exokit
npm install
node . <url> # or node . -h for home
```## Debugging
Uses [ndb](https://github.com/GoogleChromeLabs/ndb).
```sh
npm run debug
```Then in the console, input:
```js
let window = await require('./src/').load(yourUrl);
```Now you have a handle on the window object as you test your application, and
you can set `debugger` breakpoints, inspect memory, profile CPU, etc.## Flags
- `--xr webvr` Makes exokit WebVR mode regardless of the webpage. If exokit is always opening in pancake mode you can use this to try to fix that.
## Stay in Touch
- [Join our Discord](https://discord.gg/Apk6cZN) for hanging out.
- [Follow @exokitxr on Twitter](https://twitter.com/exokitxr) for updates.## Contributing
Get involved! Check out the [Contributing Guide](CONTRIBUTING.md) for how to get started.
## License
This program is free software and is distributed under an [MIT License](LICENSE.md).