ARCore — реализация дополненной реальности в Android

Дата публикации:

Давным — давно, когда персонажи фильма “Звездные войны” звонили друг другу по видеосвязи — это казалось верхом развития технологий. Теперь это называют, например, скайп и даже твоя бабушка знает, как им пользоваться. Дополненная реальность — звучит, как очередная тема для фантастического фильма, однако она уже сегодня с легкостью помещается в простом смартфоне. Не так давно в ответ на ARKit от Apple, компания Google выпускает ARCore — библиотеку, позволяющую создавать дополненную реальность на платформе Android.

Впрочем, постойте. У нас ведь есть прекрасные приложение на мобильные платформы. Зачем нам эти AR и VR? Ответом на этот вопрос станет “погруженное вычисление” — термин, обозначающий взаимодействие с данными самым естественным способом. Это возможность добавлять цифровой контент в нашу реальность. Объекты, созданные с помощью ARСore, пропорционально масштабируются в реальном мире. К тому же, дополненная реальность доступна каждому, у кого есть современный смартфон. Таким образом, мы строим мост между 2D и 3D миром.

ARCor-1

Зачем это нужно — спросите вы? А разве не здорово взять и расставить мебель у себя в комнате до того, как вы ее купили. Покрасить автомобиль в любой цвет и выбрать тот, который вам больше всего нравится. Или просто оставлять виртуальные напоминания на стенах своей квартиры.

Немного истории

История дополненной реальности на Android начинается в 2014 году с проекта Tango. Он не завоевал широкой популярности на рынке, поскольку его работа сильно зависела от сенсора глубины — устройства в смартфоне, рассчитывающего расстояние на основании отраженной длины инфракрасной волны. Сенсор позволял помещать девайс в виртуальное пространство, являющееся отражением реального. Однако у него были серьезные ограничения. Так максимально доступное расстояние составляло всего 4 метра. А расстояние, отраженное от ярких или зеркальных поверхностей, вообще не выстраивалось.

В результате компания Google задалась целью создать дополненную реальность на Android, исключив зависимость от аппаратных средств. Так появился ARCore. Ему абсолютно наплевать на сенсор глубины. Таким образом, опыт, полученный в процессе работы над Tango, для него не пригодился. Но послужил хорошей стартовой площадкой. На сегодня ARCore имеет около 100 миллионов потенциальных пользователей.

Что под капотом?

Концептуально, в основе ARCore лежит 3 основных положения — motion tracking, environment understanding и light estimation.

Motion tracking

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

    1. Оптическая
      • Pinholde model — математическая модель описывающая отношение между координатами точки в трехмерном пространстве с ее проекцией на полотно, а также Field of View (FoV) — модель описывающая искажение перспективы изображения.
      • Фотометрическая калибровка — карта интенсивности цветов.
    2. Моделирование на основе инерции
      • Измеряется ускорение — не дистанция и не скорость.
      • Моделирование на основе инерции не сводится к категории “да или нет”. Это — больше статистика, необходимая для конкретного use case.

Впрочем, существует температурная проблема при заводской калибровке IMU. Различные производители изготавливают ее при разной температуре, поэтому данные на различных девайсах могут различаться.

Environment understanding

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

  • В основе понимание окружения лежит технология SLAM — simultaneous localization and mapping. SLAM карта является графиком 3D точек, которые представляют собой разреженное облако, где каждая отметка соответствует координатам оптического объекта (например, угол таблицы).

ARCor-2

  • Также как и с измерениями на основе ускорения, SLAM опирается на карту точек, которые могут быть более или менее надежными.
  • Основная задача SLAM — построение и обновление карты неизвестной среды при одновременном отслеживании местоположения агента внутри нее.
  • Также как и Tango, имеет проблемы с зеркальными поверхностями

Light estimation

ARCore может обнаружить среднюю интенсивность изображения камеры, так что вы получаете возможность осветить виртуальные объекты так же, как освещены объекты окружающей среды.

ARCor-3

Применение

Чтобы начать использовать ARСore в Android приложениях вам понадобится:

  1. Загрузить ARCore и установить его
  2. Базовое понимание разработки под Android с OpenGL
  3. Общие знания по Android framework

Итак, основные классы в AR core это Session, Frame, Plane, Anchor.

Session. Необходимо проверить поддерживает ли девайс ARCore и если это так — создать конфигурацию.

Frame. Необходимо получить объект камеры и обновить кадр. Основной вопрос на данном этапе — что использовать? Blocking или последнее изображение камеры? Blocking позволяет уменьшить рендеринг до частоты кадров камеры. Последнее же изображение помогает рендирить объекты, как можно быстрее.

Anchors. В этом же методе onDraw()  необходимо проверить было ли касание в полигоне и если оно было — расположить якорь. Якорей может быть не больше двадцати.

Proection Matrix. Матрица проекции содержит “позу” -где камера сейчас в мире. Она отвечает за сопоставление виртуальной и реальной камеры. В этом же методе onDraw() необходимо получить матрицу проекций, указав в каких рамках она будет располагаться. В примере ниже мы указываем, что трекаем объекты на расстоянии от 10 см до 100 метров. Из нашего объекта (кадра) мы получаем облако точек (Помните SLAM и достоверные точки?). Далее обновляем “облако точек”, передавая ему матрицу проекции и матрицу видения камеры.  Если матрица проекции содержит свойства камеры, а матрица соответствия видов содержит местоположение камеры, то матрица модели получит положение якоря. Теперь вы можете поместить пиксели в нужном месте на своем экране.

Render object. Далее мы проходимся по всех якорям и обновляем объект, который мы хотим нарисовать. Мы обновляем матрицу нашего объекта и матрицу его тени. Наконец, вызываем у них метод draw(). Полученный в примере выше объект “light intensity” мы передаем в качестве параметра нашему объекту и объекту, отвечающему за тень.

Резюме

В целом, мы описали практически всё, что нужно знать, за исключением рендера 3D моделей. Но это — отдельная тема.

Главную проблему технологии AR можно сформулировать примерно так: ок, это круто, но что мы можем с этим сделать? Пожалуй, на сегодня не существует какой-либо killer фичи, которая бы раскрыла ARCore в полной мере. Основная задача — удержать пользователя в приложении, хотя на 15 минут. И чтобы знакомство с ним не закончилось фразой: “Да, это забавно, но не более”.

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

Еще мы хотим отметить азиатский рынок, лишенный удовольствия пользоваться Google Play. Этот регион мог бы стать крупнейшим рынком сбыта для продуктов, использующих технологию дополненной реальности. Однако представителям крунпейшего континента придется искать альтернативу ARCore.

Хочется верить, что ARСore полностью раскроет свой потенциал в технологии Google Glass. К сожалению, сейчас проект приостановлен, из-за множества проблем, связанных в том числе с законодательством. Впрочем, Google уже возобновил работу и анонсировал грядущий акцент на промышленном применении очков — заводы, фабрики, высокотехнологичные концерны. Это направление выглядит наиболее перспективным. Оно вполне способно превратить дополненную реальность из забавной игрушки в полноценный инструмент.

 

Мы Крым Диджитал

С 2015 года мы предоставляем полный цикл услуг мобильной и веб-разработки клиентам из различных отраслей и разных стран.

Подпишись
на наши новости

Контакты пресс-службы

+ 7 (926) 118-80-32

WhatsApp, Viber, Telegram

Давайте обсудим Ваш проект

или свяжитесь с нами по почте projects@crimeadigital.ru

Нажимая кнопку «Отправить», вы даете согласие на обработку персональных данных

Прошел день карьеры в СевГУ

Резидент технопарка, компания Крым Диджитал, приняла участие в Дне Карьеры в СевГУ, который прошел 17 мая. Мероприятие длилось 3 часа. Компанией заинтересовались  более 35 студентов, которым была важна информация о прохождении практики, бесплатные курсы Академии и вакансии, не требующие опыта работы. Руководитель разработки компании выступил с презентацией и ответил на все вопросы, которые так волнуют студентов — как начать свою карьеру в ИТ? Есть ли возможность совмещать учебу с работой? Кем я смогу стать? Как понять, кем я хочу работать? И многие другие.

Резидент технопарка, компания Крым Диджитал, приняла участие в Дне Карьеры в СевГУ, который прошел 17 мая.

Мероприятие длилось 3 часа. Компанией заинтересовались  более 35 студентов, которым была важна информация о прохождении практики, бесплатные курсы Академии и вакансии, не требующие опыта работы.

Руководитель разработки компании выступил с презентацией и ответил на все вопросы, которые так волнуют студентов - как начать свою карьеру в ИТ?

Есть ли возможность совмещать учебу с работой?

Кем я смогу стать?

Как понять, кем я хочу работать?

И многие другие.

Завершен набор студентов на летнюю практику

Крым Диджитал завершила набор студентов на летнюю практику. В июле придут 14 человек. Это студенты второго и третьего курсов кафедр Программная инженерия, Информатика и вычислительная техника, Информационные системы и технологии и Управление в технических системах. Все ребята будут ходить в офис и будут заняты реальным проектом, который они должны реализовать до конца практики. Каждый выбрал для себя то направление, в котором хотел бы развиваться — front-end и back-end-разработка, дизайн. Руководить практикой будет Head of Engineering.
Крым Диджитал завершила набор студентов на летнюю практику. В июле придут 14 человек. Это студенты второго и третьего курсов кафедр Программная инженерия, Информатика и вычислительная техника, Информационные системы и технологии и Управление в технических системах. Все ребята будут ходить в офис и будут заняты реальным проектом, который они должны реализовать до конца практики. Каждый выбрал для себя то направление, в котором хотел бы развиваться - front-end и back-end-разработка, дизайн. Руководить практикой будет Head of Engineering.

Крым Диджитал приняла участие в стратегической сессии

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня. Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства. Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня.

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

Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Выпуск курса Software Testing

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing! Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании. Следующий курс намечен на август. Не пропусти анонс записи!

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing!

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

Следующий курс намечен на август. Не пропусти анонс записи!