- ARCore: дополненная реальность на Android
- Что такое ARCore? Всё, что вам нужно знать
- Что это значит для вас как разработчика?
- Что такое ARCore?
- Как работает ARCore?
- Кто может использовать ARCore?
- ARCore для Android
- Как создать приложение дополненной реальности с помощью ARCore
- Что такое изображения дополненной реальности?
- Ограничения использования изображений дополненной реальности
- Выбор подходящего опорного изображения
- Как использовать инструмент arcoreimg:
- Начало работы с приложением дополненной реальности
- Создание фрагмента
- Настройка базы данных изображений
- Добавление изображения в базу данных
- Обнаружение опорных изображений в реальном мире
- Размещение 3D-модели над опорным изображением
ARCore: дополненная реальность на Android
Более двух миллиардов устройств работает на Android — крупнейшей мобильной платформе в мире. Последние девять лет мы работали над созданием широкого набора инструментов, фреймворков и API, благодаря которым продукты разработчиков становятся доступными каждому. Сегодня мы запускаем превью версию нового SDK (набора средств для разработки программного обеспечения) — ARCore. Это позволит применять технологию дополненной реальности на уже существующих и новых устройствах Android. Разработчики могут начать экспериментировать с ARCore уже сейчас.
В течение последних трех лет мы работаем над технологиями, которые способствуют развитию дополненной реальности на мобильных устройствах, с помощью платформы Tango. Она стала основой для создания ARCore. Благодаря тому, что этот SDK не требует дополнительного оборудования, он может применяться на различных устройствах Android. Мы планируем запустить ARCore на миллионах устройств. С сегодняшнего дня он будет доступен на Pixel и Samsung S8, работающих на Android 7.0 и более поздних версиях. К завершению тестового периода мы рассчитываем, что ARCore будет работать на 100 млн устройств. Для того чтобы он работал качественно и приносил хорошие результаты, мы сотрудничаем с Samsung, Huawei, LG, ASUS и другими компаниями.
ARCore работает на Java/OpenGL, Unity и Unreal и фокусируется на следующих направлениях:
- Отслеживание движения. Используя камеру телефона для отслеживания опорных точек в комнате (п.п. эти точки определяют место, где будет расположен виртуальный объект) и данных гироскопа, ARCore определяет положение и ориентацию устройства во время движения. При этом виртуальные объекты остаются именно там, где вы их расположили.
- Распознавание окружающей среды. Обычно объекты дополненной реальности размещаются на полу или столе. ARCore может распознавать горизонтальные поверхности, используя те же опорные точки, что и при отслеживании движения.
- Оценка освещения. ARCore определяет уровень освещенности окружающей среды и дает возможность разработчикам освещать виртуальные объекты в соответствии с обстановкой вокруг. Благодаря этому они выглядят еще более реалистично.
Наряду с ARCore мы развиваем другие приложения и сервисы, которые помогут разработчикам создавать отличные решения в области дополненной реальности. Мы запустили проекты Blocks и Tilt Brush, чтобы каждый с легкостью мог создавать хороший 3D-контент для своих AR-приложений. На конференции Google I/O мы объявили, что работаем над сервисом визуального позиционирования (Visual Positioning Service). Он позволит вывести применение технологии дополненной реальности в мире за пределы компьютера. Мы также считаем, что ключевая роль в развитии дополненной реальности будет принадлежать интернету. Поэтому запускаем прототипы браузеров для веб-разработчиков, чтобы они тоже могли начать экспериментировать с этой технологией. Специализированные браузеры позволяют создавать сайты с поддержкой дополненной реальности для Android/ARCore и iOS/ARKit.
ARCore — наш следующий шаг к тому, чтобы сделать дополненную реальность доступной каждому. Это не последнее нововведение в текущем году. Поделитесь с нами вашим мнением на GitHub. Зайдите в новый раздел AR Experiments, где вы найдете много интересных примеров применения дополненной реальности. Расскажите о своих работах в социальных сетях, добавив хэштег #ARCore. Мы обязательно поделимся теми проектами, которые понравятся нам больше всего.
Источник
Что такое ARCore? Всё, что вам нужно знать
Дополненная реальность (англ. Augmented Reality, AR)) прошла долгий путь от концепции научной фантастики до чего-то более реалистичного. В последнее время стоимость AR-разработки резко снизилась, и сегодня она доступна даже на обычном смартфоне.
И Apple, и Google вкладывают внушительные средства в развитие дополненной реальности, о чём свидетельствует разработка ARkit (от Apple) и ARCore (от Google). Эти новаторские технологии позволили работать с AR обычным разработчикам, что было совершенно немыслимо несколько лет назад.
Согласно этой статье на HackerNoon, к 2025 году объём дополненной и виртуальной реальности в индустрии здравоохранения составит около 5 миллиардов долларов. Кроме того, мощный скачок в использовании AR-технологий произойдёт в индустрии туризма, поскольку 84 % пользователей во всем мире будут заинтересованы в использовании AR во время путешествий.
Что это значит для вас как разработчика?
Когда AR обещает превратить мир вокруг нас в научно-фантастический фильм, для нас, разработчиков, это означает рост новой технической сферы с новыми возможностями трудоустройства и солидными зарплатами. Итак, сегодня мы погрузимся в мир хайпа дополненной реальности и выясним, что там происходит на самом деле и как можно начать AR-разработку.
Мы сосредоточимся на ARCore, платформе от Google для создания приложений дополненной реальности без необходимости углубленных знаний OpenGL, рендеринга и т.д.
Что такое ARCore?
Согласно Википедии, ARCore — это инструмент для разработки программного обеспечения, разработанный Google, который позволяет создавать приложения дополненной реальности.
ARCore использует три ключевые технологии для «внедрения» виртуального контента в реальную среду:
- Отслеживание движения: оно позволяет смартфону понять своё положение в реальном мире.
- Понимание окружающей среды: оно позволяет смартфону определять размер и местоположение всех типов поверхностей (вертикальных, горизонтальных и угловых).
- Оценка освещённости: это позволяет смартфону оценить текущие условия освещения окружающей среды.
Как работает ARCore?
Вы когда-нибудь задумывались, почему большинству приложений дополненной реальности требуется, чтобы вы поперемещали камеру по комнате для обнаружения поверхностей в ней? Это необходимо для того, чтобы приложение построило свой собственный виртуальный мир на основе физического. ARCore в этом плане ничем не отличается.
Когда вы перемещаете свой телефон, ARCore запоминает окружение и строит собственный мир, в котором он может размещать виртуальные объекты. Он также использует технологию отслеживания движения для определения того, как некоторые объекты движутся, учитывая движения вашей камеры.
Вот почему, когда вы размещаете виртуальный объект в своей комнате, выходите и возвращаетесь, объект всё ещё там. ARCore построил свой виртуальный мир, в котором он помнит, где находится каждая деталь.
Когда вы размещаете в этом пространстве объект, ARCore вычисляет его положение по отношению к другим объектам, а когда вы возвращаетесь в то же место, объект отображается снова.
Кто может использовать ARCore?
Прямо сейчас ARCore SDK доступен для:
- Android
- Android NDK
- Unity для Android
- Unity для iOS
- iOS
- Unreal
Этот список довольно исчерпывающий и покрывает нужды большинства разработчиков. У Google есть краткое руководство по началу работы с каждым из них.
ARCore для Android
Google позаботился обо всех Android-разработчиках, и не важно, используете вы Android SDK, Android NDK или Unity для разработки под Android. ARCore поддерживает их все.
В этом кратком руководстве показано, как настроить среду разработки, включить ARCore и запустить простое приложение. ARCore использует Sceneform SDK, который представляет собой 3D-фреймворк, который позволяет Java-разработчикам легко создавать приложения ARCore без OpenGL.
Источник
Как создать приложение дополненной реальности с помощью ARCore
В этом гайде вы узнаете, как добавить 3D-модели в реальный мир. Библиотека ARCore от Google позволяет добавлять на 2D-изображение (картинка или видео) полноценные 3D-модели.
Вам необходимо предоставить системе некое опорное изображение, которое ARCore будет искать в реальном мире, чтобы на его основе добавить на изображение 3D-модель. Дополненная реальность уже широко используются, например, в книгах, газетах, журналах и т.д.
Прежде чем погрузиться в этот туториал, вам стоит ознакомиться с предыдущими двумя статьями на эту тему, которые познакомят вас с основными AR-терминами:
Что такое изображения дополненной реальности?
Согласно документации для разработчиков, изображения дополненной реальности в ARCore позволяют создавать приложения дополненной реальности, которые могут «оживлять» 2D-изображения, например, плакаты или упаковки продуктов.
Вы загружаете в ARCore какие-то опорные изображения, а он вам затем сообщает об их обнаружении во время AR-сессии, например во время съёмки видео. И эта информация используется для расположения 3D-модели на 2D-изображении.
Ограничения использования изображений дополненной реальности
Вот некоторые ограничения, с которыми вы можете столкнуться при использовании изображений дополненной реальности:
- ARCore может обрабатывать только до 20 опорных изображений одновременно.
- Физическая плоскость в реальном мире должна быть плоской, а её площадь должна быть больше, чем 15 см х 15 см.
- ARCore не может отслеживать движущиеся изображения и объекты.
Выбор подходящего опорного изображения
Вот несколько советов для выбора хорошего опорного изображения для ARCore:
- Изображения дополненной реальности поддерживают форматы PNG, JPEG и JPG.
- Неважно, цветное будет изображение или чёрно-белое, главное, чтобы оно было высокой контрастности.
- Разрешение изображения должно быть не менее 300 х 300 пикселей.
- Использование изображений с высоким разрешением не означает улучшение производительности.
- Следует избегать изображений с повторяющимися паттернами (например, узорами или горошком).
- Используйте инструмент arcoreimg, чтобы оценить, насколько подходит ваше изображение для работы. Рекомендуется оценка не менее 75 баллов.
Как использовать инструмент arcoreimg:
- Загрузите ARCore SDK для Android по этой ссылке.
- Распакуйте zip-содержимое файла в любое место.
- В извлеченной папке перейдите по пути tools > arcoreimg > windows (даже если у вас Linux или macOS).
- Откройте командную строку в этой директории.
- И введите эту команду:
Замените dog.png на полный путь к вашему изображению.
Начало работы с приложением дополненной реальности
Теперь, когда вы ознакомились с ARCore и выбрали хорошее изображение с оценкой 75+, пришло время приступить к написанию кода приложения.
Создание фрагмента
Мы создадим фрагмент и добавим его в нашу Activity. Создаём класс с именем CustomArFragment и наследуем его от ArFragment . Вот код для CustomArFragment :
Прежде всего, мы отключаем обнаружение плоскости. Делая это, мы убираем с экрана значок руки, который появляется сразу после инициализации фрагмента и говорит пользователю о необходимости перемещения своего смартфона для поиска плоскости. Нам это больше не нужно, поскольку мы обнаруживаем не случайные плоскости, а конкретное изображение.
Затем мы устанавливаем режим обновления для сессии LATEST_CAMERA_IMAGE . Это гарантирует, что мы будем узнавать об обновлениях изображения всякий раз, когда обновится кадр камеры.
Настройка базы данных изображений
Добавьте выбранное опорное изображение (которое вы хотите обнаружить в физическом мире) в папку assets (создайте её, если её ещё нет). Теперь мы можем добавлять изображения в нашу базу данных.
Мы создадим эту базу данных, как только будет создан фрагмент. В логи мы выведем результат этой операции:
Вот как будет выглядеть CustomArFragment :
Вскоре мы добавим метод setupAugmentedImagesDb в MainActivity . Теперь давайте добавим CustomArFragment в наш activity_main.xml :
Добавление изображения в базу данных
Сейчас мы настроим нашу базу данных изображений, обнаружим опорное изображение в реальном мире и добавим 3D-модель на изображение.
Давайте начнём с настройки нашей базы данных. Создайте публичный метод setupAugmentedImagesDb в классе MainActivity :
Мы также создали метод loadAugmentedImage , который загружает изображение из папки ресурсов и возвращает растровое изображение.
В setupAugmentedImagesDb мы сначала инициализируем нашу базу данных для текущей сессии, а затем добавляем изображение в эту базу данных. Мы назвали наше изображение tiger. Затем мы устанавливаем эту базу данных в конфиг и возвращаем true , сообщая о том, что изображение успешно добавлено.
Обнаружение опорных изображений в реальном мире
Теперь мы начнем обнаруживать наши опорные изображения в реальном мире. Для этого мы создадим слушателя, который будет вызываться каждый раз при обновлении видеокадра, и этот кадр будет проанализирован на предмет наличия там опорного изображения.
Добавьте эту строку в метод onCreate() в MainActivity :
Теперь добавьте метод onUpdateFrame в MainActivity :
В первой строке мы получаем сам кадр. Кадр можно представить, как обычный скриншот из видео. Если вы знакомы с тем, как работает видео, вы знаете, что это просто набор изображений, которые очень быстро сменяют друг друга, создавая впечатление чего-то движущегося. Мы просто берём одну из этих картинок.
После того, как мы получили кадр, мы анализируем его на предмет наличия на нём нашего опорного изображения. Мы берём список всех элементов, отслеженных ARCore, используя frame.getUpdatedTrackables . Затем мы перебираем её и проверяем, присутствует ли в кадре наше изображение tiger.
Если совпадение найдено, то мы просто берём и размещаем 3D-модель поверх обнаруженного изображения.
Примечание. Флаг shouldAddModel используется для того, чтобы мы добавляли 3D-модель только один раз.
Размещение 3D-модели над опорным изображением
Теперь, когда мы нашли наше опорное изображение в реальном мире, мы можем добавлять 3D-модель поверх него. Добавим методы placeObject и addNodeToScene :
- placeObject : этот метод используется для построения отрендеренного объекта по заданному Uri . Как только рендеринг завершён, объект передаётся в метод addNodeToScene , где объект прикрепляется к узлу, и этот узел помещается на сцену.
- addNodeToScene : этот метод создаёт узел из полученного якоря, создаёт другой узел, к которому присоединяется визуализируемый объект, затем добавляет этот узел в якорный узел и помещает его на сцену.
Вот так теперь выглядит MainActivity :
Теперь запустите ваше приложение. Вы должны увидеть экран, как показано ниже. Подвигайте телефон немного над опорным объектом. И как только ARCore обнаружит опорное изображение в реальном мире, добавит на него вашу 3D-модель.
Источник