Глубина добавляет реализма

Руководства для конкретных платформ

Как разработчик AR-приложений, вы хотите плавно сочетать виртуальное с реальным для своих пользователей. Когда пользователь размещает виртуальный объект на своей сцене, он хочет, чтобы он выглядел так, как будто он принадлежит реальному миру. Если вы создаете приложение, позволяющее пользователям покупать мебель, вы хотите, чтобы они были уверены, что кресло, которое они собираются купить, впишется в их пространство.

API глубины помогает камере устройства понять размер и форму реальных объектов в сцене. Он создает изображения глубины или карты глубины, тем самым добавляя уровень реализма в ваши приложения. Вы можете использовать информацию, предоставляемую изображением глубины, чтобы обеспечить захватывающий и реалистичный пользовательский опыт.

Варианты использования для разработки с помощью Depth API

API глубины может обеспечить перекрытие объектов, улучшенное погружение и новые взаимодействия, которые повышают реалистичность AR-опыта. Ниже приведены некоторые способы использования его в ваших собственных проектах. Чтобы увидеть примеры глубины в действии, изучите образцы сцен в лаборатории ARCore Depth Lab , где демонстрируются различные способы доступа к данным о глубине. Это приложение Unity находится на Github с открытым исходным кодом.

Включить окклюзию

Окклюзия, или точная визуализация виртуального объекта за объектами реального мира, имеет первостепенное значение для захватывающего опыта AR. Рассмотрим виртуального Энди, которого пользователь может захотеть поместить в сцену со сундуком рядом с дверью. При визуализации без окклюзии Энди будет нереально перекрываться с краем ствола. Если вы используете глубину сцены и понимаете, насколько далеко виртуальный Энди находится относительно окружения, например деревянного ствола, вы можете точно визуализировать Энди с окклюзией, делая его более реалистичным в своем окружении.

Преобразование сцены

Покажите своему пользователю новый, захватывающий мир, визуализируя виртуальные снежинки, оседающие на подлокотниках и подушках его диванов, или погрузив его гостиную в туманный туман. Вы можете использовать «Глубину», чтобы создать сцену, в которой виртуальные источники света взаимодействуют, прячутся за реальными объектами и заново освещают их.

Расстояние и глубина резкости

Нужно показать, что что-то находится далеко? Вы можете использовать измерение расстояния и добавлять эффекты глубины резкости, такие как размытие фона или переднего плана сцены, с помощью Depth API.

Включите взаимодействие пользователя с объектами AR

Позвольте пользователям «прикасаться» к миру через ваше приложение, позволяя виртуальному контенту взаимодействовать с реальным миром посредством столкновений и физики. Пусть виртуальные объекты преодолевают препятствия реального мира или виртуальные пейнтбольные шары ударяются и разбрызгиваются по реальному дереву. Если вы объедините столкновение на основе глубины с игровой физикой, вы сможете воплотить в жизнь игровой опыт.

Улучшите хит-тесты

Глубину можно использовать для улучшения результатов проверки попадания. Плоские хит-тесты работают только на плоских поверхностях с текстурой, тогда как глубинные хит-тесты более детальны и работают даже на неплоских поверхностях и областях с низкой текстурой. Это связано с тем, что при проверке глубины используется информация о глубине сцены для определения правильной глубины и ориентации точки.

В следующем примере зеленые символы Andy представляют стандартные тесты на попадание в самолет, а красные Andy представляют собой тесты на глубину.

Совместимость устройств

Depth API поддерживается только на устройствах, обладающих вычислительной мощностью для поддержки глубины, и его необходимо включить вручную в ARCore, как описано в разделе «Включение глубины» .

Некоторые устройства также могут иметь аппаратный датчик глубины, например датчик времени пролета (ToF). На странице поддерживаемых устройств ARCore можно найти актуальный список устройств, поддерживающих Depth API, а также список устройств, имеющих поддерживаемый аппаратный датчик глубины, например датчик ToF.

Изображения глубины

Depth API использует алгоритм глубины по движению для создания изображений глубины, которые дают трехмерное представление мира. Каждый пиксель изображения глубины связан с измерением того, насколько далеко сцена находится от камеры. Этот алгоритм берет несколько изображений устройства под разными углами и сравнивает их, чтобы оценить расстояние до каждого пикселя, когда пользователь перемещает свой телефон. Он выборочно использует машинное обучение для увеличения глубины обработки даже при минимальном движении пользователя. Он также использует преимущества любого дополнительного оборудования, которое может быть на устройстве пользователя. Если устройство имеет специальный датчик глубины, например ToF, алгоритм автоматически объединяет данные из всех доступных источников. Это улучшает существующее изображение глубины и обеспечивает глубину, даже когда камера не движется. Он также обеспечивает большую глубину на поверхностях с небольшим количеством элементов или без них, таких как белые стены, или в динамических сценах с движущимися людьми или объектами.

На следующих изображениях показано изображение с камеры коридора с велосипедом на стене, а также визуализация изображения глубины, созданного на основе изображений с камеры. Области красного цвета находятся ближе к камере, а области синего цвета — дальше.

Глубина от движения

Данные о глубине становятся доступны, когда пользователь перемещает свое устройство. Алгоритм может получать надежные и точные оценки глубины на расстоянии от 0 до 65 метров. Наиболее точные результаты получаются, когда устройство находится на расстоянии от полуметра до пяти метров от реальной сцены. Опыт, который побуждает пользователя больше перемещать свое устройство, будет давать все лучшие и лучшие результаты.

Получение изображений глубины

С помощью Depth API вы можете получать изображения глубины, соответствующие каждому кадру камеры. Полученное изображение глубины имеет ту же временную метку и характеристики поля зрения, что и камера. Действительные данные о глубине доступны только после того, как пользователь начал перемещать свое устройство, поскольку глубина определяется по движению. Поверхности с небольшим количеством элементов или без них, такие как белые стены, будут ассоциироваться с неточной глубиной.

Что дальше