Руководства для конкретных платформ
Android (Котлин/Ява)
Android НДК (С)
Единство (Фонд АР)
Содержимое AR должно быть правильно размещено и иметь правильный размер, чтобы сливаться со сценой. Как и объекты реального мира, виртуальные объекты, которые находятся дальше, должны казаться меньше. Вы можете выполнить проверку попадания (или лучевую трансляцию в AR Foundation for Unity), чтобы определить правильное размещение 3D-объекта в вашей сцене. Правильное размещение гарантирует, что контент дополненной реальности будет отображаться в соответствующем (видимом) размере.
Хит-тесты находят точки пересечения между реальной трехмерной геометрией и виртуальным лучом, состоящим из источника и направления. Лучи с камерой устройства в качестве источника используются чаще всего, хотя ARCore включает API для выполнения тестов попадания с произвольным лучом в координатах мирового пространства.
Представьте, что есть луч, исходящий от камеры пользовательского устройства, который простирается вперед, пока не достигнет трехмерной геометрии сцены, такой как пол, стена или объект. Как только это произойдет, вы получите список результатов попадания или пересечений с обнаруженной геометрией сцены. Список отсортирован по расстоянию от устройства, начиная с ближайшего перекрестка. Это важно, потому что обычно вы не можете видеть объекты, перекрытые другими объектами, поэтому в большинстве случаев первый результат является наиболее важным.
Содержание результата попадания
Отдельный результат попадания возвращается в виде списка со следующей информацией для каждого результата:
- Расстояние от начала луча, в метрах
- Поза (положение и ориентация) результата попадания
- Трехмерная геометрия, которую вы нажали, в виде отслеживаемой
Затем вы можете использовать желаемый результат попадания для реалистичного размещения вашего 3D-контента с помощью Anchor .
Типы результатов попадания
Существует четыре типа результатов попадания: глубина, плоскость, характерная точка и результаты мгновенного размещения. Каждый из них имеет свои варианты использования и компромиссы, как показано в следующей таблице.
Тип результата попадания | Описание | Ориентация | Вариант использования |
---|---|---|---|
Глубина | Использует информацию о глубине всей сцены для определения правильной глубины и ориентации точки. | Перпендикулярно 3D-поверхности | Разместите виртуальный объект на произвольной поверхности (не только на полу и стенах) |
Самолет | Ударяет по горизонтальным и/или вертикальным поверхностям, чтобы определить правильную глубину и ориентацию точки. | Перпендикулярно 3D-поверхности | Поместите объект на плоскость (пол или стену), используя полную геометрию плоскости. Срочно нужен правильный масштаб. Резервный вариант для теста глубины |
Характерная точка | Полагается на визуальные особенности вокруг точки касания пользователя, чтобы определить правильное положение и ориентацию точки. | Перпендикулярно 3D-поверхности | Разместите объект на произвольной поверхности (не только на полу и стенах) |
Мгновенное размещение (Persistent Raycast) | Использует пространство экрана для размещения контента. Первоначально использует расчетную глубину, предоставленную приложением. Работает мгновенно, но поза и фактическая глубина изменятся, как только ARCore сможет определить фактическую геометрию сцены. | +Y указывает вверх, против гравитации | Поместите объект на плоскость (пол или стену), используя полную геометрию плоскости, где быстрое размещение имеет решающее значение, и опыт может допускать неизвестную начальную глубину и масштаб. |
Совместимость устройств
Hit-тесты работают на всех устройствах с поддержкой ARCore , но для тестов Depth потребуются устройства с поддержкой Depth .
Используйте результаты обращений для размещения AR-контента
Получив результат попадания, вы можете использовать его позу в качестве входных данных для размещения AR-контента в вашей сцене.