Сегодня я хочу поделиться с вами опытом работы с WebXR. Технологией, которая позволяет разрабатывать кросс-платформенные VR-приложения прямо в браузере. В этой статье мы разберем, как интегрировать ваши проекты с Oculus Quest, HTC Vive, HoloLens и другими устройствами, напишем рабочий код и сравним возможности девайсов.
Что такое WebXR?
WebXR это современный API, который заменяет устаревший WebVR. Он дает возможность:
- Запускать VR/AR-приложения в браузере без установки дополнительного ПО.
- Работать с любыми устройствами: от смартфонов до шлемов вроде Oculus Quest.
- Использовать JavaScript и популярные библиотеки (Three.js, Babylon.js).
Главное преимущество WebXR это доступность. Пользователю достаточно открыть ссылку, чтобы погрузиться в виртуальный мир.
Интеграция с Oculus Quest
Oculus Quest (и Quest 2) одни из самых популярных VR-шлемов. Рассмотрим, как подключить его к вашему Web-приложению.
1. Настройка устройства
- Включите режим разработчика на Oculus Quest через Oculus Developer Dashboard.
- Убедитесь, что шлем подключен к Wi-Fi и использует браузер Meta Quest Browser (или Firefox Reality).
2. Создаем базовое приложение
Используем Three.js для упрощения работы с 3D.
import * as THREE from 'three'; import { WEBXR } from 'three/addons/webxr/WebXR.js'; // Создаем сцену, камеру, рендерер const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); const renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // Включаем WebXR renderer.xr.enabled = true; // Добавляем куб const geometry = new THREE.BoxGeometry(); const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 }); const cube = new THREE.Mesh(geometry, material); scene.add(cube); // Запускаем сессию WebXR renderer.xr.addEventListener('sessionstart', (event) => { camera.position.set(0, 1.6, 0); // Высота камеры на уровне глаз пользователя }); document.body.appendChild( WEBXR.createButton(renderer, { requiredFeatures: ['local-floor'] }) ); // Анимация renderer.setAnimationLoop(() => { cube.rotation.x += 0.01; cube.rotation.y += 0.01; renderer.render(scene, camera); });
3. Обработка контроллеров
Чтобы отслеживать движения рук, добавьте:
let controller1, controller2; controller1 = renderer.xr.getController(0); controller1.addEventListener('selectstart', () => { console.log('Кнопка нажата на контроллере 1'); }); scene.add(controller1); controller2 = renderer.xr.getController(1); scene.add(controller2);
Подключение других устройств
HTC Vive Focus 3
- Используйте WebXR API без дополнительных настроек.
- Для доступа к функциям внутрикорпусного отслеживания активируйте
requiredFeatures: ['layers', 'hand-tracking']
.
Microsoft HoloLens 2
- Требуется HTTPS-соединение.
- Включите поддержку AR:
navigator.xr.requestSession('immersive-ar').then((session) => { // AR-логика });
Мобильные устройства (Android/iOS)
- Используйте WebXR Viewer (iOS) или Chrome (Android).
- Для ARCore/ARKit активируйте
'hit-test'
и'light-estimation'
.
Сравнение устройств для WebXR
Параметр | Oculus Quest 2 | HTC Vive Focus 3 | HoloLens 2 | Мобильные устройства |
---|---|---|---|---|
Разрешение экрана | 1832×1920/глаз | 2448×2448/глаз | 720p | Зависит от устройства |
Поддержка WebXR | Полная | Полная | Частичная | Частичная |
Входные методы | Контроллеры, руки | Контроллеры | Руки, взгляд | Сенсорный экран |
Цена | $299 | $1300 | $3500 | 200−1000 |
Рекомендация | Лучший выбор | Для корпоративного сектора | AR-проекты | Тестирование концептов |
Рекомендации для разработчиков
- Оптимизация производительности
- Используйте
glTF
вместоOBJ
для 3D-моделей. - Лимитируйте количество полигонов (для Quest 2 — до 150k на сцену).
- Используйте
- Кросс-браузерная совместимость
Проверяйте поддержку функций:
if (navigator.xr) { navigator.xr.isSessionSupported('immersive-vr').then((supported) => { if (supported) { // Показываем кнопку запуска VR } }); }
- UX в VR
- Избегайте резких перемещений камеры — это вызывает тошноту.
- Добавляйте звуковые подсказки при взаимодействии с объектами.
- Тестирование
- Для эмуляции устройств используйте WebXR Emulator Extension для Chrome.
- Проверяйте FPS в Oculus Quest через Developer Hub.
WebXR открывает огромные возможности для веб-разработчиков. За несколько часов вы можете создать приложение, которое работает на Oculus Quest, HoloLens и даже смартфоне.
Если у вас есть вопросы, пишите в комментариях, делитесь своими проектами.