Веб-разработка · AI и Машинное обучение
VRtor
Бесплатные 3D-уроки, которые открываются в браузере VR-шлема, от «Аполлона-11» до клетки изнутри, без всякой установки.
WebXR · Babylon.js · three.js · Cloudflare Workers · Durable Objects · WebRTC

Кейс
VRtor представляет собой набор бесплатных 3D-уроков, которые работают в браузере VR-шлема вроде Quest. Без магазина приложений, без установки, без аккаунта. У каждой темы короткий адрес (vrtor.io/apo для «Аполлона-11», vrtor.io/cel для клетки), потому что печатать контроллером мучительно. Можно сесть в «Колумбию» на окололунной орбите, пройтись по Мачу-Пикчу, вынуть органеллы из клетки, увеличенной в 150 000 раз, или обучить маленькую нейросеть собственными руками. В 3D-темах видны и другие посетители, с ними можно говорить с пространственным звуком. Каждая тема является отдельным WebXR-приложением на Babylon.js в собственном Cloudflare Worker, и всё отдаётся с одного origin.
Проблема
Большая часть обучения в VR спрятана за магазином приложений, аккаунтом и загрузкой, через которые учителю или любопытному ребёнку нужно пробиться, прежде чем что-то начнётся. Браузеры шлемов уже умеют WebXR, но тяжёлая 3D-сцена должна держать частоту кадров Quest, иначе людей укачивает, а набрать длинный URL контроллером уже достаточно, чтобы их потерять.
Подход
vrtor.io работает как Worker-маршрутизатор. Каждая тема живёт в своём приложении внутри монорепозитория на npm workspaces и деплоится как отдельный Worker, а маршрутизатор обращается к нему через service binding, поэтому у всего один origin (один запрос разрешения WebXR, общее хранилище). Общий пакет xr-shell даёт каждой теме одинаковую настройку сессии под Quest, телепорт, комфортное затемнение, регулятор частоты кадров и плавающую инфокарточку. Присутствие работает на одном Durable Object на комнату через WebSockets, а голос идёт напрямую между участниками по WebRTC с сигнализацией через эту комнату.
Ключевые решения
- Короткие коды из трёх-четырёх букв (vrtor.io/mpc, vrtor.io/bdy) с полным словом как алиасом, потому что именно это реально получается набрать в шлеме.
- Отдельный Worker на тему за service bindings. Сломанная тема не роняет остальные, и каждая деплоится сама по себе.
- Регулятор частоты кадров и комфортное затемнение живут в общей оболочке, поэтому каждая новая тема сразу комфортна на Quest, а не чинится сцена за сценой.
- В комнате до 12 человек, остальные попадают в нумерованные комнаты. Аватары дешёвые (шесть draw calls, один общий материал) и исчезают с расстоянием.
- Микрофон выключен, пока вы не выберете «Говорить», голоса затихают к 30 м, а заглушить кого-то можно только для себя.
- Открытые данные везде, где они есть, например BodyParts3D для анатомии, с указанием авторов рядом с ресурсами.
Статус
Работает на vrtor.io и растёт каждую неделю. Открыты Космос, «Аполлон-11», Wright Flyer, Косатка, Парашют, Cybertruck, Roadster, Тадж-Махал, Мачу-Пикчу, тело человека, основы ИИ, клетка и Sound Lab, следующими будут Механика, Математика и Природа.
Нужно модернизировать систему, проверить идею ИИ или обсудить senior-позицию?
Обычно отвечаю в течение одного рабочего дня.