Group Details Private

IWWG Member

A member of the Immersive Web Working Group.

Member List
  • The Big List of WebXR Creation Tools

    The following is a list of just about every single thing you can use to create WebXR content that I'm aware of. I'll probably update this as time goes on, feel free to leave any suggestions of something you think should be on here.

    WebXR Creation Tools

    Name Type Built On Notes
    8th Wall Cloud Platform WebGL AR-focused
    A-Frame Framework three.js --
    AR.js Library WebGL AR-focused
    ATON Framework three.js --
    babylon.js Engine WebGL --
    echo3D Cloud Platform model-viewer/A-Frame/ar.js model-viewer used for "See on floor", A-Frame+AR.js used in marker tracking, A-Frame+jeelizFaceFilter used in face tracking
    Ethereal Engine Engine three.js --
    FRAME Cloud Platform babylon.js Geared towards conferencing and galleries
    Godot Engine WebGL Requires additional setup to export
    Hubs Cloud Platform A-Frame Geared towards conferencing and galleries
    JanusWeb Framework Elation Engine --
    Immersions Library babylon.js --
    LÖVR Framework WebGL Requires additional compilation step (see WebXR section)
    model-viewer Library WebGL Limited interactivity
    nunuStudio Engine three.js Both web and native engine versions available
    p5.xr Library p5.js --
    Playcanvas Engine WebGL Web-only editor
    React XR Library three.js --
    Rhodonite Library WebGL --
    Rogue Engine Engine three.js --
    spacesvr Framework three.js/React XR --
    Spoke Scene Editor three.js Used to author Hubs scenes
    three.js Library WebGL --
    threlte Library three.js Renderer for Svelte
    Unity Engine WebGL Requires external exporter
    Verge3D Toolkit three.js Includes visual programming interface
    Virtual Maker Cloud Platform babylon.js Web-only editor
    VRIA Framework A-Frame Focused on data visualization
    VrLand Cloud Platform A-Frame Geared towards conferencing, galleries, and web3
    vtk.js Library WebGL Focused on data visualization
    Wonderland Engine Engine WebGL --
    WorldCore Engine three.js --
    Zea Engine WebGL CAD-focused
    posted in Development
  • Neat monoscopic effect hack

    I've been working on and off on a short narrative experience that I wanted to get experimental with, which ended up taking the form of projecting a monoscopic image intermittently during the experience that takes up your field of view (you can maybe tell from this already what kind of experience I'm making as far as comfort is concerned, heh). Anyhow, I feel like sharing, so here you go!

    What I ended up doing is creating two planes with an image projected onto them, then figuring out the IPD of the user and positioning the second plane that same distance away. Below is the code I wrote in A-Frame to achieve this (minus some experience specific functions), though I'm sure it can be easily recreated in other frameworks after accounting for potential differences in camera implementations (A-Frame, for example, considers the left eye to be at the origin, hence me having to offset for the right eye).

    AFRAME.registerComponent('overlay', {
      schema: {
        rightEye: { type: 'bool', default: false }
      },
    
      init: function () {
        document.addEventListener('enter-vr', e => {
          if (!this.data.rightEye) return;
          // Need to set a short delay so we have a frame object to grab the session from
          setTimeout(() => {
            // Obtain the viewer pose so we can calculate the distance between both eyes
            const scene = e.detail.target;
            const xrSession = scene.frame.session;
            const refSpace = scene.systems['tracked-controls-webxr'].referenceSpace;
            xrSession.requestAnimationFrame((_, frame) => {
              const [leftEye, rightEye] = frame.getViewerPose(refSpace).views;
              const distance = this.calcDistance(leftEye.transform.position, rightEye.transform.position);
              // Round to 3 decimal places, this gives IPD in meters
              const ipd = Math.round((distance + Number.EPSILON) * 1000) / 1000;
              console.log(ipd);
              this.el.object3D.position.x = ipd;
            });
          }, 100);
        });
      },
    
      calcDistance(leftPosition, rightPosition) {
        // Calculate distance in 3D space between both eyes
        const dx = rightPosition.x - leftPosition.x;
        const dy = rightPosition.y - leftPosition.y;
        const dz = rightPosition.z - leftPosition.z;
    
        return Math.sqrt((dx ** 2) + (dy ** 2) + (dz ** 2));
      }
    });
    
    posted in Development
  • The site is now live!

    After more than a few days tinkering away, getting settings just right and installing plugins, etc, the WebXR Community Forum is finally live! Things should more or less be in order, but if you do happen to find something funky than please make a post on it in the Site Feedback category.

    posted in Announcements
  • Links and Resources

    The following are some useful links for general Wonderland Engine development:

    posted in Wonderland Engine wonderland
  • Introductions

    Hello! This is the thread where anyone (if they so choose) can introduce themselves to the members of the community. I'll go first:

    My name is Daniel, though I'm more commonly referred to as m₂ (pronounced m-sub-2). I've been involved with WebXR since late 2020, when I created the WebXR Discord after finding there was no active spot where everyone seemed to be congregating. Since then, the server has grown to over 2100 members, but I've found that there are some who still feel left out by this focus on Discord, which is partially what prompted me to create the WebXR Community Forum. I view it as a sister community to the Discord, and in the future I'll be looking into ways to help these communities feel close-knit and able to add value to each other.

    As far as development goes, I've dipped my toes into just about every engine, library, and framework out there right now, but my favorites would have to be A-Frame (and by extension three.js) and Wonderland Engine. I've worked on a lot of projects, but I've still got a lot of creative plans that have yet to be realized, and those are probably what excite me the most. You can check my signature for links to all my stuff and whatnot.

    Looking forward to meeting everyone else that joins!

    posted in Lounge