Terug naar projecten

Webontwikkeling · AI & Machine Learning

VRtor

Gratis 3D-leerervaringen die openen in de browser van een VR-headset, van Apollo 11 tot de binnenkant van een cel, zonder iets te installeren.

WebXR · Babylon.js · three.js · Cloudflare Workers · Durable Objects · WebRTC

Vier scènes uit VRtor: de Taj Mahal, de terrassen van Machu Picchu, de Perseverance-rover op Mars en een spreker op een conferentiepodium.

Casestudy

VRtor is een reeks gratis 3D-lessen die draaien in de browser van een VR-headset zoals de Quest. Geen app store, geen installatie, geen account. Elk onderwerp heeft een kort adres (vrtor.io/apo voor Apollo 11, vrtor.io/cel voor de cel), want typen met een controller is een ramp. Je kunt in de Columbia in een baan om de maan zitten, door Machu Picchu lopen, organellen uit een 150.000 keer vergrote cel trekken of met je handen een klein neuraal netwerk trainen. In de 3D-onderwerpen zie je ook andere bezoekers en kun je met ze praten met ruimtelijke audio. Elk onderwerp is een eigen Babylon.js WebXR-app op een eigen Cloudflare Worker, allemaal geserveerd vanaf één origin.

Het probleem

De meeste VR-lesstof zit achter een app store, een account en een download waar een docent of een nieuwsgierig kind eerst doorheen moet. Browsers op headsets kunnen al WebXR draaien, maar een zware 3D-scène moet de framerate van de Quest vasthouden, anders worden mensen misselijk, en een lange URL typen met een controller is al genoeg om ze kwijt te raken.

De aanpak

vrtor.io is een router-Worker. Elk onderwerp woont in een eigen app in een monorepo met npm workspaces en wordt als eigen Worker gedeployd, en de router bereikt het via een service binding, zodat alles één origin deelt (één WebXR-toestemmingsvraag, gedeelde opslag). Een gedeeld xr-shell-pakket geeft elk onderwerp dezelfde op de Quest afgestemde sessie-instelling, teleport, comfort-fade, framerate-regelaar en zwevende infokaart. Aanwezigheid draait op één Durable Object per ruimte via WebSockets, en spraak gaat peer-to-peer via WebRTC, gesignaleerd via die ruimte.

Opmerkelijke beslissingen

  • Korte codes van drie of vier letters (vrtor.io/mpc, vrtor.io/bdy), met het hele woord als alias, want dat is wat je met een headset op echt nog getypt krijgt.
  • Eén Worker per onderwerp achter service bindings. Een kapot onderwerp trekt de rest niet mee, en elk wordt los gedeployd.
  • De framerate-regelaar en comfort-fade zitten in de gedeelde shell, zodat elk nieuw onderwerp meteen comfortabel draait op een Quest in plaats van per scène gerepareerd te worden.
  • Ruimtes houden 12 mensen en lopen over naar genummerde ruimtes. Avatars zijn goedkoop (zes draw calls, één gedeeld materiaal) en vallen weg op afstand.
  • De microfoon blijft uit tot je Praten kiest, stemmen sterven weg na 30 m, en iemand dempen doet dat alleen voor jou.
  • Open data waar die bestaat, zoals BodyParts3D voor anatomie, met de bronvermelding naast de assets.

Status

Live op vrtor.io en groeit elke week. Ruimte, Apollo 11, de Wright Flyer, Orka, Parachute, de Cybertruck, de Roadster, de Taj Mahal, Machu Picchu, het menselijk lichaam, AI-basis, de cel en Sound Lab zijn open, met Mechanica, Wiskunde en Natuur als volgende.

Een systeem moderniseren, een AI-idee valideren of een senior rol bespreken?

Ik antwoord meestal binnen één werkdag.