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