Оглавление:
Улучшенная динамическая окклюзия на Quest 3
На Quest 3 динамическая окклюзия поддерживается лишь в некоторых приложениях, но теперь она стала высококачественнее, более эффективно использует ресурсы центрального и графического процессора и её стало легче реализовать для разработчиков.
Окклюзия — это способность виртуальных объектов закрываться реальными, что очень важно для гарнитур смешанной реальности. Если система рассчитана на работу только с предварительно отсканированными сценами, это называется статической окклюзией, а если поддерживается изменение сцены и движение объектов – динамической окклюзией.
Quest 3 появился на рынке с поддержкой статической окклюзии, но без динамической. Спустя несколько дней динамическая окклюзия была представлена в «экспериментальном» режиме для разработчиков, то есть без возможности публикации в магазине Quest. В декабре эти ограничения были сняты.
Техническая реализация и оптимизация окклюзии
Разработчики могут внедрять динамическую окклюзию индивидуально для каждого приложения, используя Depth API от Meta, который формирует грубую карту глубины за каждый кадр с использованием гарнитуры. Но интеграция — довольно сложный процесс. Разработчикам приходится вносить изменения в шейдеры всех виртуальных объектов, которые они хотят скрыть, и это далеко от идеального варианта решения в один клик. Поэтому динамическую окклюзию поддерживают очень немногие приложения смешанной реальности для Quest 3.
Еще одна проблема динамической окклюзии на Quest 3 заключается в том, что карта глубины имеет очень низкое разрешение, поэтому можно заметить пустые промежутки вокруг краев объектов, и она не улавливает мелкие детали, например, пространство между пальцами.
Новшества в обновлении v67 Meta XR Core SDK
С выпуском версии 67 Meta XR Core SDK, Meta немного повысила визуальное качество Depth API и значительно оптимизировала его работу. Теперь он использует на 80% меньше графического процессора и на 50% меньше центрального процессора, что освобождает дополнительные ресурсы для разработчиков.
Для упрощения интеграции этой функции, v67 также добавил поддержку для удобного добавления окклюзии в шейдеры, созданные с помощью инструмента Unity’s Shader Graph, и рефакторинг кода Depth API для более удобной работы с ним.
Хотя исходное качество окклюзии все еще неидеально, обновление v67 включает в себя еще одно новшество, которое является более значимым, чем чистое повышение качества.
Теперь Depth API имеет возможность исключать отслеживаемые руки из карты глубины, что позволяет маскировать их, используя сетку отслеживания рук. Некоторые разработчики долгое время использовали сетку отслеживания рук только для окклюзии, даже на Quest Pro, например. С v67, Meta предоставляет пример того, как это делать вместе с Depth API для окклюзии всего остального.
При сравнении, Apple Vision Pro имеет динамическую окклюзию только для рук и рукавов, потому что она маскирует их так же, как Zoom маскирует вас, а не генерирует карту глубины. Это означает, что на гарнитуре Apple качество окклюзии для рук и рукавов значительно выше, но можно заметить особенности, например, объекты, которые вы держите, могут казаться скрытыми за виртуальными объектами и невидимыми в VR.
Документацию Depth API для Unity и Unreal могут найти разработчики Quest.