exokitxr / exokit

Native VR/AR/XR engine for JavaScript 🦖
MIT License
997 stars 117 forks source link
a-frame android browser canvas engine exokit javascript magicleap reality virtual-reality web webgl webrtc webvr webxr xr

Exokit

Exokit

:dark_sunglasses: Native VR and AR engine for JavaScript 🦖

DiscordTwitterEmail List

Examples

Hands Reality Tab Live Reload Magic Leap Tutorial Reality Tab

Reality Projection with HTC Vive and Magic Leap Emukit

Various Exokit Apps

Find more examples here and on YouTube.

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:

* not supported yet

:electric_plug: Since Exokit supports anything that runs on the web, it powers experiences built with:

:thumbsup: Why Exokit?

:thumbsdown: Why not Exokit?

:book: Manifesto

Quickstart

Desktop

Download for current OS

Run a WebXR site (desktop)

exokit https://aframe.io/a-painter/ # start A-Painter in Exokit

Magic Leap

Download for Magic Leap

Run (Magic Leap device)

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 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

Hardware bindings

Local Development

See full building instructions in BUILDING.md.

git clone https://github.com/exokitxr/exokit.git
cd exokit
npm install
node . <url> # or node . -h for home

Debugging

Uses ndb.

npm run debug

Then in the console, input:

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

Stay in Touch

Contributing

Get involved! Check out the Contributing Guide for how to get started.

License

This program is free software and is distributed under an MIT License.