Если коротко:
Краткий ответ на запрос «WebXR hit test» дан с опорой на официальные источники; конкретная совместимость и версии требуют проверки перед действием.
Что делает hit test
WebXR hit test, механизм, который получает результаты пересечения луча со средой и помогает размещать виртуальный объект относительно распознанной поверхности. Он не выдаёт вечную координату: результат запрашивается в каждом XRFrame и интерпретируется в выбранном reference space.
Для работы нужны защищённый контекст, поддержка подходящего режима сессии, разрешение policy xr-spatial-tracking и доступность функции на устройстве. Наличие navigator.xr не означает, что hit test поддерживается. До создания сессии проверьте нужный режим, а при запросе объявите требуемые features согласно спецификации.
Последовательность в приложении
После запуска сессии получите reference space и создайте источник через XRSession.requestHitTestSource(). В кадре возьмите результаты, получите pose относительно выбранного пространства и обновляйте индикатор размещения только при валидном результате. Источник следует освобождать, а сессию завершать по жизненному циклу приложения.
Пользователь может потерять трекинг, оказаться в нераспознанной среде или использовать runtime без подходящего результата. В этих случаях интерфейс показывает нейтральный индикатор и объясняет следующий шаг, а не закрепляет объект в случайной координате. Нельзя обещать размещение на любой поверхности.
Проверки до выпуска
Проверьте не только удачное размещение: отказ в разрешении, отсутствие поверхности, уход страницы в фон, завершение сессии и повторное создание источника. Отдельно протестируйте поведение на поддерживаемом устройстве, потому что качество распознавания зависит от runtime, браузера и условий среды.
Для отладки сохраните минимальный воспроизводимый пример с версиями браузера и устройства. Если функция недоступна, предложите пользователю альтернативный путь вместо ошибки интерфейса. Образец из спецификации полезен как ориентир API, но его нельзя воспринимать как готовую UX-логику продукта.
Источники
- Спецификация WebXR Hit Test, W3C
- Объяснение hit testing, Immersive Web
- Пример hit test, WebXR Samples