Retour aux projets

Développement Web · IA & Apprentissage Automatique

VRtor

Des expériences d'apprentissage en 3D gratuites qui s'ouvrent dans le navigateur d'un casque VR, d'Apollo 11 à l'intérieur d'une cellule, sans rien installer.

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

Quatre scènes de VRtor : le Taj Mahal, les terrasses du Machu Picchu, le rover Perseverance sur Mars et une présentatrice sur la scène d'une conférence.

Étude de cas

VRtor est un ensemble de leçons 3D gratuites qui tournent dans le navigateur d'un casque VR comme le Quest. Pas de store, pas d'installation, pas de compte. Chaque sujet a une adresse courte (vrtor.io/apo pour Apollo 11, vrtor.io/cel pour la cellule) parce que taper avec une manette est un calvaire. On peut s'asseoir dans Columbia en orbite lunaire, se promener au Machu Picchu, sortir les organites d'une cellule agrandie 150 000 fois ou entraîner un petit réseau de neurones avec ses mains. Dans les sujets en 3D, on voit aussi les autres visiteurs et on peut leur parler avec une voix spatialisée. Chaque sujet est sa propre app WebXR en Babylon.js sur son propre Cloudflare Worker, le tout servi depuis une seule origine.

Le problème

La plupart des contenus éducatifs en VR se cachent derrière un store, un compte et un téléchargement qu'un enseignant ou un enfant curieux doit franchir avant que quoi que ce soit ne se passe. Les navigateurs des casques savent déjà exécuter WebXR, mais une scène 3D lourde doit tenir la fréquence d'images du Quest sinon les gens ont la nausée, et taper une longue URL avec une manette suffit à les perdre.

L'approche

vrtor.io est un Worker routeur. Chaque sujet vit dans sa propre app au sein d'un monorepo npm workspaces et se déploie comme son propre Worker, et le routeur l'atteint via un service binding, donc tout partage la même origine (une seule demande d'autorisation WebXR, un stockage commun). Un paquet partagé, xr-shell, donne à chaque sujet la même configuration de session adaptée au Quest, la téléportation, le fondu de confort, un régulateur de fréquence d'images et une carte d'information flottante. La présence tourne sur un Durable Object par salle via WebSockets, et la voix passe en pair à pair par WebRTC, signalée à travers cette salle.

Décisions notables

  • Des codes courts de trois ou quatre lettres (vrtor.io/mpc, vrtor.io/bdy), avec le mot complet en alias, parce que c'est ce qu'on arrive vraiment à taper avec un casque sur la tête.
  • Un Worker par sujet derrière des service bindings. Un sujet cassé n'entraîne pas les autres, et chacun se déploie seul.
  • Le régulateur de fréquence d'images et le fondu de confort vivent dans le shell partagé, donc chaque nouveau sujet démarre confortable sur un Quest au lieu d'être corrigé scène par scène.
  • Les salles accueillent 12 personnes et débordent vers des salles numérotées. Les avatars coûtent peu (six draw calls, un matériau partagé) et disparaissent avec la distance.
  • Le micro reste coupé jusqu'à ce qu'on choisisse Parler, les voix s'éteignent à 30 m, et couper quelqu'un ne le coupe que pour soi.
  • Des données ouvertes partout où elles existent, comme BodyParts3D pour l'anatomie, avec les crédits livrés à côté des ressources.

État

En ligne sur vrtor.io et en croissance chaque semaine. Espace, Apollo 11, le Wright Flyer, Orque, Parachute, le Cybertruck, le Roadster, le Taj Mahal, le Machu Picchu, le corps humain, les bases de l'IA, la cellule et Sound Lab sont ouverts, et Mécanique, Maths et Nature arrivent ensuite.

Un système à moderniser, une idée IA à valider ou un poste senior à discuter ?

Je réponds généralement sous un jour ouvré.