Augmented reality — Датабаза ARCore


Содержание

ARCore — новая платформа дополненной реальности от Google

В сентябре состоится релиз новой операционной системы iOS 11. Одним из главных нововведений ОС станет платформа дополненной реальности ARKit, которая открывает разработчикам доступ ко всем необходимым компонентам устройств, будь то камера или датчики движения, для создания приложений на основе дополненной реальности. Компания Google решила не отставать от конкурента и представила собственную платформу дополненной реальности под названием ARCore.

ARCore представляет собой набор инструментов, разработанный командами, занимающимися развитием Android и виртуальной реальности в Google. Платформа поддерживает работу с Java/OpenGL, Unity и Unreal. Разработчики выделяют три основных компонента ARCore:

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

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

Уже сейчас ARCore поддерживается на смартфонах Google Pixel и Samsung Galaxy S8. Google также сотрудничает с Samsung, Huawei, LG, ASUS и другими производителями, чтобы реализовать поддержку ARCore на большем числе девайсов. Цель компании — 100 миллионов устройств с поддержкой ARCore до конца этого года. На данный момент известно, что для запуска AR-приложений требуется Android версии 7.0 и выше.

Augmented reality — Датабаза ARCore

На выставке мобильных технологий MWC 2020 пользователи увидят не только современные смартфоны, но и те вещи, которые делают эти девайсы столь любимыми широкой аудиторией — новые технологии. Как ранее и предполагалось, именно в период этой значимой для индустрии выставки состоялся долгожданный выпуск новой платформы дополненной реальности от поискового гиганта — ARCore, о которой ценители высоких технологий уже немного знали и раньше. Что это означает для грядущих Android-смартфонов и пользователей этих популярных девайсов?

Как сообщает Влад (Vlad) на страницах ресурса gsmarena.com, ARCore SDK уже стал версией 1.0. Это произошло после длительного периода тестирования платформы, который продолжался, как известно ценителям высоких технологий, с августа минувшего года. Финальная версия платформы означает, что любой разработчик, создающий приложения с использованием элементов дополненной реальности может размещать свои приложения для самой популярной мобильной платформы Android в Google Play.

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

Сейчас рассматриваемая платформа дополненной реальности от компании Google совместима лишь со 100 миллионами смартфонов под управлением развиваемой поисковым гигантом мобильной операционной системы. Всего поддерживаются 13 моделей: Google’s Pixel, Pixel XL, Pixel 2 и Pixel 2 XL; Samsung Galaxy S8, S8+, Note 8, S7 и S7 edge; LG V30 и V30+, Asus Zenfone AR и OnePlus 5.

Предполагается, что в будущем совместимость ARCore с девайсами различных вендоров будет существенно расширена. В число брендов, которыми станет поддерживаться рассматриваемая платформа дополненной реальности войдут — Samsung, Huawei, LG, Motorola, ASUS, Xiaomi, Nokia, ZTE, Sony и Vivo.

О технологиях дополненной реальности немало говорят уже не первый год. Более того, компания Apple даже представила инструментарий ARKit вместе со своими новыми iPhone. Речь идет о платформе, позволяющей разработчикам получать доступ к реализованным в iPhone возможностям виртуальной реальности, что дает возможность «размещать» объекты дополненной реальности в реальном мире, наблюдаемом, разумеется, через камеру телефона. Более подробно перспективы дальнейшего развития технологий дополненной реальности были рассмотрены Преславом Кателиевым (Preslav Kateliev) на страницах ресурса phonearena.com еще до сообщения о релизе новой платформы.

Сферы применения дополненной реальности могут быть различными — от виртуальной рулетки до виртуальной мебели IKEA, которую пользователь смог бы увидеть в своей комнате, прежде чем решить, нравится ли она ему. Кроме того, дополненная реальность дает возможность более реалистичного размещения стикеров и эмодзи. Таким образом, дополненная реальность может использоваться и для работы и для развлечений. Это и делает ее более привлекательной для крупных компаний, чем другая технология — виртуальная реальность.

Один из лидеров современного технологического рынка — компания Google — очень быстро ответил на ARKit от компании Apple своим собственным ARCore. Концепт такой же — это фреймворк, дающий разработчикам возможность создания приложений дополненной реальности для телефонов от партнеров проекта Google ARCore. Поскольку поддержка ARCore предполагает определенные требования к продуктам, на которых данная технология станет работать, то компания Google разработала такие требования для каждого производителя телефонов, который хотел бы включить этот фреймворк в своих девайсах.

Технология ARCore уже была доступна в качестве ознакомительной версии для разработчиков, то есть — бета-версии. Поддерживается она лишь некоторыми смартфонами — к примеру, в их числе первые Pixel и Pixel 2, а также Galaxy S8 и Note 8 от компании Samsung. Как ранее сообщалось ресурсом variety.com со ссылкой на «неназванный источник», ARCore будет показана широкой публике в ходе MWC 2020. Речь шла уже не просто об анонсе, а о выпуске новой платформы дополненной реальности.

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

И новое сообщение наконец-то подтвердилось в реальности, означая, что технологии дополненной реальности ждет впечатляющее развитие. В данном контексте необходимо вспомнить, что ARCore была анонсирована в августе 2020 года и ранее уже рассматривалась. Несколько позднее, в декабре минувшего года, был сделан и другой анонс — о полном прекращении развития с 1 марта 2020 года предшествующей платформы виртуальной реальности от компании Google — Project Tango.

Обсудить новую платформу дополненной реальности от Google читатели могут в Telegram-чате.

ARCORE 1.2 Единство Создание AugmentedImageDatabase на лету

Я пытаюсь динамически создать базу данных изображения, используя arcores новую функцию отслеживания изображения.


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

Здесь я регулярные выражения, чтобы получить изображения из канала данных и преобразовывать их в Texture2D для того, чтобы заполнить значения AugmentedImageDatabaseEntry.

Для того, чтобы получить эту работу на андроид мне пришлось изменить источник реализации единства ARCORE немного, так что функция database.Add () будет работать вне редактора.

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

NewConfigSetup общественный класс: MonoBehaviour <

Когда я бегу в редакторе, я не получаю ошибки до тех пор пока я просмотреть базу данных в редакторе, вот когда я получаю эту ошибку:

ОШИБКА: флаг «—input_image_path» отсутствует аргумент; Описание флага: Путь изображения для оценки. В настоящее время поддерживает только * .png, * .jpg и * .jpeg.

Когда я отладки и посмотреть в память о AugmentedImageDatabase. Все, кажется, там и работает нормально. Кроме того, когда я построить для андроида я не получаю никаких ошибок бы то ни было, а также, когда я использую «ADB LogCat -s Единство» в командной строке, никаких исключений не выбрасывается.

Может быть, это ограничение с новой функцией ARCORE? Является AugmentedImageDatabases не позволяя для динамического создания на Android? Если это так, чем почему есть встроенные функции для их создания?

Я понимаю, что особенности являются совершенно новыми, и есть не так много документации в любом месте, так что любая помощь будет принята с благодарностью.

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

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

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

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

Цукерберг рекомендует:  Как программисту вырасти в руководителя проекта

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

История дополненной реальности на 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 точек, которые представляют собой разреженное облако, где каждая отметка соответствует координатам оптического объекта (например, угол таблицы).
  • Также как и с измерениями на основе ускорения, SLAM опирается на карту точек, которые могут быть более или менее надежными.
  • Основная задача SLAM — построение и обновление карты неизвестной среды при одновременном отслеживании местоположения агента внутри нее.
  • Также как и Tango, имеет проблемы с зеркальными поверхностями

Light estimation

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

Применение

Чтобы начать использовать 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 уже возобновил работу и анонсировал грядущий акцент на промышленном применении очков — заводы, фабрики, высокотехнологичные концерны. Это направление выглядит наиболее перспективным. Оно вполне способно превратить дополненную реальность из забавной игрушки в полноценный инструмент.

Augmented Reality ( ARCore )

Описание для Augmented Reality ( ARCore )

Augmented Reality app is a mobile app that lets you visualize 3D models in real world. It is the perfect Augmented Reality app to experience AR world.
The Augmented Reality app works based on Google ARCore SDK. In some cases this technology may not support your phone, in that case do not leave a bad review.

How does it work:

1. INSTALL the application and LAUNCH it.
2. Choose Objects form 3d library list.
3. POINT your device towards the floor.
4. Once floor detected you can see a red “marker”. There are some items in the library. Tap on “Anchor” button to place objects in the scene.
5. Using “Reset Button” clear all the placed objects
6. Use camera Button to capture the scene.
7. User the share button to share the recent captured screenshot.

This app is for all Google ARCore App developers, its a sample app that demonstrates ARCore features.

ARCore is Google’s platform for building augmented reality experiences.
Using different APIs, ARCore enables your phone to sense its environment, understand the world and interact with information.
Some of the APIs are available across Android and iOS to enable shared AR experiences.

*Are you a developer or designer creating your first augmented reality (AR) experience? Check out the sample AR app and get idea for building better and more dynamic apps with ARCore.

ARCore 1.2 Unity Create AugmentedImageDatabase on the fly

I am trying to dynamically create an image database using arcores new image tracking feature.

Currently I have a server serving me image locations which I download to the persistent data path of my device. I use these images to then create new database entries like below:

Here I do regex matching to get the images from the datapath and convert them to texture2D’s in order to populate the AugmentedImageDatabaseEntry values.

To get this to work on android I had to modify the source of ARCore’s unity implementation a little so that the database.Add() function would work outside of the editor.

All of this seems to work seamlessly as I don’t get any errors yet. Once I change scenes to the ARCore scene I instantiate an ARCore Camera and create a new sessionconfig which holds a reference to the database populated above.

Here is that code:


public class NewConfigSetup : MonoBehaviour <

When I run in the editor, I dont get errors untill I view the database in the editor, thats when I get this error:

ERROR: flag ‘—input_image_path’ is missing its argument; flag description: Path of image to be evaluated. Currently only supports *.png, *.jpg and *.jpeg.

When I debug and look in the memory of the AugmentedImageDatabase. Everything seems to be there and working fine. Also once I build for android I get no errors whatsoever, as well as when I use ‘adb logcat -s Unity’ in the command line, no exceptions are thrown.

Could this be a limitation with the new ARCore feature? Are the AugmentedImageDatabases not allowing for dynamic creation on android? If so than why are there built in functions for creating them?

I understand the features are brand new and there is not much documentation anywhere so any help would be greatly appreciated.

ARCore With Google: Building an Augmented Images Application

Learn more about how you can create your own augmented images with Google’s ARCore.

Join the DZone community and get the full member experience.

In this tutorial, you’ll learn how to place 3D models in the real world by setting the anchor as a specific scene instead of a regular plane. ARCore by Google lets you augment 2D images, which can be recognized by ARCore to then place 3D models over them.

You then provide some reference images, and ARCore tracking determines where those images are physically located in the environment. Augmented images are already in wide usage such as books, newspapers, magazines, etc.

But before you dive deeper into this tutorial, you must check out the following articles as a prerequisite to this one:

Once you’re done with these two, you should have a basic understanding of the terminology in ARCore and Sceneform, such as Scene, Anchor, Node, TransformableNode, etc.

What Are Augmented Images?

According to developer docs, augmented images in ARCore let you build AR apps that can respond to 2D images, such as posters or product packaging, in the user’s environment. You provide a set of reference images, and ARCore tracking tells you where those images are physically located in an AR session, once they are detected in the camera view.

Basically, using augmented images, you can turn a simple 2D image into an augmented image, which can be recognized by your app and be then used to place a 3D model above it.

When You Might Want to Use Augmented Images?

Here are some restrictions that you might want to consider before using augmented images:

  • Your use case must not involve scanning more than 20 images simultaneously since ARCore can only track up to 20 images at once.
  • Size of the physical counterpart in the real world must be more than 15cm by 15cm and flat.
  • You don’t want to track moving objects. ARCore cannot track moving images, although it can start tracking once the image stops.
  • ARCore uses feature points in the reference image and can store feature point information for up to 1000 images.

Choosing a Good Reference Image

Here are some tips to choose a good reference image to improve detectability by ARCore:


  • Augmented images support PNG, JPEG, and JPG formats.
  • Detection is based on points of high contrast, and so, both color and black/white images are detected, regardless of whether a color or black/white reference image is used.
  • Image’s resolution must be at least 300 x 300 pixels.
  • Using high-res images does not mean improved performance.
  • Images with repetitive features, such as patterns and polka dots, must be avoided.
  • Use the arcoreimg tool to evaluate how good your reference image is. A score of at least 75 is recommended.

How to Use the arcoreimg Tool:

  • Download the ARCore SDK for Android from this link:
  • Extract the zip contents of the zip file anywhere you like.
  • Navigate to the extracted folder and go to tools —> arcoreimg —> windows (Linux/macos whatever you use)
  • Open a command prompt at this location.
  • Now enter this command:

Replace dog.png with the complete path to your image.

Getting Started With Augmented Images Application

Now that you’ve familiarized yourself with ARCore and Sceneform and have selected a good reference image with a score of 75+, it’s time to start coding the application!!

Create a Custom Fragment

We will be creating a custom fragment to add to our activity. We need a custom fragment as we will be altering some properties of the default fragment.

Create a class named CustomArFragment and extend it from ArFragment . Here is the code for CustomArFragment :

First of all, we are setting the plane discovery instruction to null . By doing this, we turn off the hand icon that appears just after the fragment is initialized, which instructs the user to move their phone around. We don’t need it anymore as we are not detecting random planes but a specific image.

Next, we set the update mode for the session to LATEST_CAMERA_IMAGE. This ensures that your update listener is called whenever the camera frame updates. It configures the behavior of the update method.

Setting up the Augmented Images Database

Add your chosen reference image (which you want to detect in the physical world) in the assets folder. If your assets folder doesn’t exist, create one. Now, we will be adding augmented images to our database, which will then be detected in the real world.

We’ll set up this database as soon as the fragment (scene) is created. Then, we check for the success and failure of this call and set the log accordingly. Add the following code to your custom fragment:


This is what the CustomArFragment would look like:

We will soon be creating the setupAugmentedImagesDb method in the MainActivity . Now, with the CustomArFragment created, let’s add it to our activity_main.xml; here’s the code for your activity_main.xml:

Notice that we set the name of this fragment to our CustomArFragment . This is necessary to ensure that the added fragment is our custom fragment. This will ensure that permission handling and session initializations are taken care of.

Adding an image to the Augmented Images Database

Here, we will set up our images database, find the reference image in the real world and then add a 3D model accordingly.

Let’s start by setting up our database. Create a public function setupAugmentedImagesDb in the MainActivity.java class:

We also have the loadAugmentedImage method, which loads the image from the assets folder and returns a bitmap.

In setupAugmentedImagesDb , we first initialize our database for this session and then add an image to this database. We will name our image “tiger.” Then, we set the database for this session configuration and return true, indicating that the image is added successfully.

Detecting the Reference Images in the Real World

Now, we will start detecting our reference images in the real world. In order to do so, we will add a listener to our scene, which will be called every time a frame is created, and that frame will be analyzed to find our reference image.

Add this line in the onCreate method of MainActivity.java :

Now, add the onUpdateFrame method to MainActivity :

In the first line, we get the frame from the scene. A frame can be imagined as a snapshot in the middle of a video. If you are familiar with how video works, you might be knowing that they are a series of still pictures flipped one after the other really fast, giving the impression of the motion picture. We are extracting one of those pictures.

Once we have the frame, we analyze for our reference image. We extract a list of all the items ARCore has tracked using frame.getUpdatedTrackables .This is a collection of all the detected images. We then loop over the collection and check if our image “tiger” is present in the frame.

If we find a match, then we go ahead and place a 3D model over the detected image.

Note: I have added shouldAddModel to ensure that we add the model only once.

Placing a 3D Model Over the Reference Image

Now that we have detected our image in the real world, we can start adding 3D models over it. We will copy the placeObject and addNodeToScene methods from our previous project and add them here.

Although I have previously explained what these methods do line by line, here is an overview:

  • PlaceObject : This method is used to build a renderable from the provided Uri. Once the renderable is built, it is passed into addNodeToScene method where the renderable is attached to a node and that node is placed onto the scene.
  • AddNodeToScene : This method creates an AnchorNode from the received anchor, creates another node on which the renderable is attached, and then adds this node to the AnchorNode and adds the AnchorNode to the scene.

Here is our final MainActivity.java class:


Now, run your app. You should see a screen as shown below. Move around our phone a bit over the reference object. ARCore will detect the feature points, and as soon as it detects the reference image in the real world, it will add your 3D model onto it. In the image below, I used my blanket as a reference:

With this, we have created our very first augmented images app using ARCore by Google and the Sceneform SDK!!

Like what you read? Don’t forget to share this post with your friends and collegues!

Технология дополненной реальности AR

Дополненная реальность – одна из многих технологий взаимодействия человека и компьютера. Ее специфика заключается в том, что она программным образом визуально совмещает два изначально независимых пространства: мир реальных объектов вокруг нас и виртуальный мир, воссозданный на компьютере.

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

Дополненная реальность уже много лет используется в медицине, в рекламной отрасли, в военных технологиях, в играх, для мониторинга объектов и в мобильных устройствах.

Основа технологии дополненной реальности – это система оптического трекинга. Это значит, что «глазами» системы становится камера, а «руками» — маркеры. Камера распознает маркеры в реальном мире, «переносит» их в виртуальную среду, накладывает один слой реальности на другой и таким образом создает мир дополненной реальности.

Существуют три основных направления в развитии этой технологии:

«Безмаркерная» технология AR

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

AR технология на базе маркеров

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

«Пространственная» технология

Кроме маркерной и безмаркерной, существует технология дополненной реальности, основанная на пространственном расположении объекта. В ней используются данные GPS/ГЛОНАСС, гироскопа и компаса, встроенного в мобильный телефон. Место виртуального объекта определяется координатами в пространстве. Активация программы дополненной реальности происходит при совпадении координаты, заложенной в программе, с координатами пользователя.

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

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

Примеры приложений с AR технологиями

Складской учёт с дополненной реальностью

Руководство пользователя с дополненной реальностью

Раскраски с дополненной реальностью


Маркерная AR навигация внутри помещений

Мобильный образовательный комплекс

Промо-приложение и брендирование сок «Добрый»

Живой печатный учебник

Живая полиграфия с AR

Визуализация скрытых объектов

Оборудование для AR технологий

Для работы с технологией дополненной реальности обязательно необходимы следующие компоненты:

  • Графическая станция. Это может быть мобильный телефон, ноутбук, персональный компьютер, графическая рабочая станция с профессиональной видеокартой. Одним словом, компьютер.
  • Дисплей. Экран телефона, телевизор, монитор, моно или стерео дисплей, проекционный экран.
  • Камера. Благодаря камере мы получаем «слепок» реального мира, на который специальное программное обеспечение накладывает виртуальные объекты.
  • Метки, или маркеры.
  • Программное обеспечение. Математические алгоритмы, которые позволяют камере увидеть и распознать метку (маркер) в окружающем пространстве, а затем определить, какая именно модель программно «привязана» к метке. И, наконец, «положить» эту модель на метку таким образом, чтобы виртуальный 2D или 3D объект повторял любое движение реальной метки.

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

Основная задача системы – определить трехмерное положение реальной метки по ее снимку, полученному с помощью камеры. Процесс распознавания происходит поэтапно. Сначала снимается изображение с камеры. Затем программа распознает пятна на каждом кадре видео в поисках заданного шаблона – рамки метки. Поскольку видео передается в формате 2D, то и найденная на кадре рамка метки определяется как 2D контур. Как только камера «находит» в окружающем пространстве рамку, ее следующая задача – определить, что именно изображено внутри рамки. Как только сделан последний шаг, задача системы – построить виртуальную 3D модель в двухмерной системе координат изображения камеры. И привязать ее к метке.

После этого, как бы мы ни передвигали метку в реальном пространстве, виртуальная 3D модель на ней будет точно следовать за движением метки.

К сожалению, маркерная технология, как и любая другая технология, имеет ряд возможных проблем в работе с метками. Бывает, что при движении метки объект может «соскочить» с нее или вовсе исчезнуть с экрана. Это означает, что камера просто перестала «видеть» метку. Есть пять основных причин для этого.

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

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

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

Для того чтобы добавить перспективу и глубину в 2D картинку, которая отображается с камеры на экран, нужно определить параметры перспективной проекции для камеры. Это можно сделать в домашних условиях, используя «шахматную доску» и специальное программное обеспечение.

Еще одна проблема, которая часто относится к web-камерам, — это низкое разрешение камеры. Любительская оптика, тем более встроенные камеры на ноутбуках, как правило, не обладают хорошими объективами с высоким разрешением. Поэтому они дают больше нелинейных искажений и проблем в работе с метками дополненной реальности. Например, если метка будет находиться слишком далеко от камеры или на границе ее видимости, то последняя ее просто «не увидит». Этот вопрос решается покупкой камеры с более высоким разрешением и ее последующей калибровкой.

И последняя проблема – это программное обеспечение. Некоторые алгоритмы распознавания могут иметь ошибки и давать погрешности во время распознавания рамки и «чтения» картинки метки. В этом случае модели могут отображаться некорректно (например, на метке с совой может появиться совсем другой объект) или вовсе исчезать с экрана.

Аппаратная часть, для реализации базовых функций технологии дополненной реальности должна решать 3 основных задачи: получать видеопоток хорошего качества, иметь возможность обработать данный видеопоток и дополнить слоем с виртуальными объектами и, конечно же, вывести обработанные данные на устройства вывода для восприятия конечным пользователем.

ARCore SDK и AR-стикеры для Andro >


ARCore — это, как известно, новая программная платформа, которая позволяет применять технологию дополненной реальности на Android-устройствах. Новейшая версия APK, которая получила название Just A Line, вышла примерно месяц назад.

Что такое AR и зачем оно надо? Есть мнение, что технология Augmented Reality даже не дополняет, а улучшает «обычную» реальность. Виртуальное компьютерное изображение, накладываясь на «живую картинку» физической, то бишь реальной среды, как бы усиливает её информационную составляющую. Следовательно, наше текущее восприятие реальности тоже усиливается и улучшается. Это если вкратце…

А в этом посте мы расскажем, как активировать ARCore на Android-смартфоне, и где можно скачать APK, с помощью которого можно включить поддержку AR-стикеров.

Вы, наверное, уже знаете, что по состоянию на сейчас AR-функционал поддерживается только в смартфонах серии Pixel. Они изначально комплектуются фирменным приложением Google Camera, которое, собственно, и является основой этого самого AR-функционала.

Но поскольку GСam можно портировать на другие совместимые Android-смартфоны, то сделать то же самое с ARCore — это было лишь вопросом сугубо техническим. И он, похоже, решен в положительную для юзеров сторону.

Потому далее о том.

как включить ARCore на Android-смартфоне

Значит, в настоящее время данную технологию поддерживают следующие Android-смартфоны:

Samsung Galaxy S8, S8+, S7, S7 Edge, Note 8;

ASUS Zenfone AR.

*** плюс к этому, поддержку ARCore разработчик также обещает в новых моделях Huawei, Motorola, Xiaomi, HMD/Nokia, ZTE, Sony Mobile и Vivo.

Теперь о том, что и откуда качать:

если у вас не один из Pixel-ей, то нужно скачать и установить на смартфон соответствующую версию приложения Google Камера (GCam);

Google ARCore SDK v1.1 скачать можно отсюда (ZIP-архив);

Augmented Reality Supported Sticker Set скачать можно отсюда (APK-файл).

  • качаем и устанавливаем ARCore и AR-стикеры;
  • запускаем приложение Google Камера, тут же выключаем его полностью и зачем запускаем еще раз;
  • в приложении GCam просто открываем AR-стикеры.

Augmented Images with ARCore and Sceneform

I was really excited when Sceneform was announced at I/O earlier this year, and couldn’t wait to get stuck into building AR apps on Android. Essentially Sceneform is an SDK which empowers you to work with ARCore without having to learn 3D graphics and write OpenGL. This is great news if you’ve always been interested in Augmented Reality but don’t know an awful lot about cartesian coordinates and matrix multiplication! (which is my situation for sure!)

Augmented Images interact with real world images and uses ARCore to create 3D experiences. In this post I’ll cover how to create a Augmented Images Android app using Sceneform (you can find a OpenGL example in the ARCore repo). I recommend checking out the Sceneform Codelab to get an understanding of the library. Also, be sure to take a look at the repo for Sceneform SDK which is where I got the inspiration for this post.

What we’ll build

Take a look at my twitter post to see the an example using planet earth, in this example I’ll go back to the future and render the classic Delorean.

You can read up on the official developer guide which is where I started or just dive in and checkout my github with all of the code used in this demo!

Loading Reference Images

To allow our application to identify our movie poster we need to create an image database. There are a few guidelines on image size and quality that’s worth reviewing in this guide, reference images should ideally contain many unique reference points in order to be easily identifiable. For the purposes of this demo I’ll just add our reference image at runtime but for large sets of images it’s recommended to add an image on a worker thread, or even better create a database file at compile time using the arcoreimg tool (this tool also gives you a handy “quality score”, anything 75 and over is ideal for a good reference image).

Importing 3D Models

The Sceneform Android Studio plugin lets you import and preview 3D models pretty easily. To get started head on over to Poly and grab a model of your choice (be sure to credit the creator). So far I’ve just been downloading OBJ files but FBX, and glTF formats are also supported.

Ensure you have a sampledata/ folder in your project directory and copy your files into here. Now it’s simply a case of right clicking on your .OBJ file and selecting Import Sceneform Asset . This creates a Scenform Binary Asset (SFB) and adds it to the app gradle file. That’s it, rinse and repeat for as many models as you desire. You will see that when selecting the SFB file the preview window should display the model, note that you can directly edit this which comes in particularly useful when deciding what size you want your rendered model to be (just be sure to re-run gradle build as the models are generated at compile time).

Цукерберг рекомендует:  Курс - Записалась на курс, что дальше
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих