xra1

XRAI → WebXR

Target: WebXR Device API, modern browsers. Uses Three.js runtime under the hood — this directory holds the AR/VR-session bootstrap glue.

Ingestion contract

import { parseXrai, buildScene } from '@xrai/threejs';
import { enterXrai } from '@xrai/webxr';

const graph = await parseXrai(jsonText);
const scene = buildScene(graph);
await enterXrai(scene, { mode: 'immersive-ar' | 'immersive-vr' | 'inline' });

What this adds over plain Three.js

Browser support (April 2026)

Fallback / progressive enhancement

if (navigator.xr?.isSessionSupported('immersive-ar')) {
  enterXrai(scene, { mode: 'immersive-ar' });
} else if (navigator.xr?.isSessionSupported('immersive-vr')) {
  enterXrai(scene, { mode: 'immersive-vr' });
} else {
  // 2D preview in <canvas>
  render2DPreview(scene);
}

Status