Torna ai progetti

Sviluppo Web · AI e Machine Learning

VRtor

Esperienze di apprendimento 3D gratuite che si aprono nel browser di un visore VR, dall'Apollo 11 all'interno di una cellula, senza installare nulla.

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

Quattro scene di VRtor: il Taj Mahal, i terrazzamenti di Machu Picchu, il rover Perseverance su Marte e una relatrice sul palco di una conferenza.

Caso di studio

VRtor è una raccolta di lezioni 3D gratuite che girano nel browser di un visore VR come il Quest. Niente store, niente installazione, niente account. Ogni materia ha un indirizzo breve (vrtor.io/apo per l'Apollo 11, vrtor.io/cel per la cellula) perché scrivere con un controller è una tortura. Puoi sederti dentro la Columbia in orbita lunare, camminare per Machu Picchu, estrarre gli organelli da una cellula ingrandita 150.000 volte o addestrare una piccola rete neurale con le mani. Nelle materie in 3D puoi anche vedere gli altri visitatori e parlare con loro con audio spaziale. Ogni materia è una propria app WebXR in Babylon.js sul proprio Cloudflare Worker, tutto servito da un'unica origine.

Il problema

Gran parte dell'apprendimento in VR sta dietro uno store, un account e un download che un insegnante o un ragazzo curioso deve superare prima che succeda qualcosa. I browser dei visori sanno già eseguire WebXR, ma una scena 3D pesante deve tenere il frame rate del Quest o la gente sta male, e digitare un URL lungo con un controller basta a perderli.

L'approccio

vrtor.io è un Worker router. Ogni materia vive nella propria app dentro un monorepo con npm workspaces e viene distribuita come un Worker a sé, e il router la raggiunge tramite un service binding, così tutto condivide un'unica origine (una sola richiesta di permesso WebXR, storage condiviso). Un pacchetto condiviso, xr-shell, dà a ogni materia la stessa configurazione di sessione calibrata sul Quest, teletrasporto, dissolvenza di comfort, regolatore del frame rate e scheda informativa fluttuante. La presenza gira su un Durable Object per stanza via WebSocket, e la voce viaggia peer to peer su WebRTC, segnalata attraverso quella stanza.

Decisioni degne di nota

  • Codici brevi di tre o quattro lettere (vrtor.io/mpc, vrtor.io/bdy), con la parola intera come alias, perché è quello che riesci davvero a digitare con un visore in testa.
  • Un Worker per materia dietro i service binding. Una materia rotta non trascina giù le altre, e ognuna si distribuisce da sola.
  • Il regolatore del frame rate e la dissolvenza di comfort stanno nella shell condivisa, così ogni nuova materia parte già comoda sul Quest invece di essere sistemata scena per scena.
  • Le stanze ospitano 12 persone e gli altri passano in stanze numerate. Gli avatar costano poco (sei draw call, un materiale condiviso) e spariscono con la distanza.
  • Il microfono resta spento finché non scegli Parla, le voci svaniscono entro 30 m, e silenziare qualcuno lo silenzia solo per te.
  • Dati aperti ovunque esistano, come BodyParts3D per l'anatomia, con i crediti distribuiti accanto agli asset.

Stato

Online su vrtor.io e in crescita ogni settimana. Spazio, Apollo 11, il Wright Flyer, Orca, Paracadute, il Cybertruck, la Roadster, il Taj Mahal, Machu Picchu, il corpo umano, le basi dell'IA, la cellula e Sound Lab sono aperti, e Meccanica, Matematica e Natura arrivano dopo.

Un sistema da modernizzare, un'idea AI da validare o un ruolo senior da discutere?

Di solito rispondo entro un giorno lavorativo.