JavaRush /Java блог /Java Developer /Java в виртуальной реальности. Правда ли, что за VR/AR бу...

Java в виртуальной реальности. Правда ли, что за VR/AR будущее, и есть ли в нем место для Java?

Статья из группы Java Developer
В прошлых статьях данного цикла мы уже разобрали практически все более-менее трендовые технологии современного ИТ-рынка, такие как искусственный интеллект, блокчейн, облачные сервисы, большие данные и т.д., выяснив, как в этих нишах применяется язык программирования Java и насколько важную роль он играет. Java в виртуальной реальности. Правда ли, что за VR/AR будущее, и есть ли в нем место для Java? - 1Сегодня поговорим о еще одном трендовом и весьма интересном технологическом сегменте — а именно, о VR и AR, то есть виртуальной и дополненной реальности. “Я думаю, что значительная часть населения развитых стран уже очень скоро будет взаимодействовать с AR-решениями на постоянной основе каждый день. Очень скоро AR станет частью нашей повседневной жизни.” Тим Кук, СЕО Apple

Что такое VR и AR?

Сначала разберемся с тем, что из себя представляют данные технологии, как применяются и чем отличаются друг от друга. Начнем с VR, то есть виртуальной реальности. Приложения виртуальной реальности работают на специальных устройствах, которые полностью захватывают зрение пользователя, чтобы создать впечатление, что он находится где-то еще. Все популярные VR-гарнитуры, такие как HTC Vive или Oculus Rift, полностью блокируют зрение пользователя, будучи надетыми. Когда такое устройство включено, LCD или OLED панели внутри него преломляются специальными линзами, чтобы полностью заполнять поле зрения пользователя передаваемым контентом, будь то игра, 360-градусное видео или просто интерфейс какой-либо программы. В большинстве VR-гарнитур, среди которых упомянутая Oculus Rift, а также девайсах Vive, PlayStation VR, Windows Mixed Reality и других, используют технологию отслеживания движения с шестью степенями свободы (6DOF), которая достигается благодаря внешним датчикам или камерам. Это позволяет устройствам определять не только направление, в котором вы смотрите, но и движение, совершаемое пользователем в сторону этого направления. Это, наряду с 6DOF детекторами движения, позволяет пользователям перемещаться в виртуальном пространстве, что делает такие приложения намного более иммерсионными. Что же касается AR, то есть дополненной реальности, ее отличие от VR в том, что AR не стремится полностью поглотить ваше зрение, а добавляет к нему определенные элементы. Такие AR-устройства, как Microsoft HoloLens и разного рода смарт-очки, позволяют пользователю видеть все вокруг, проектируя изображения на то, куда он смотрит. Эта концепция также включает в себя многочисленные приложения для смартфонов и игры, такие как Pokemon Go, Temple Treasure Hunt, ARrrrrgh, Ingress и многие другие. В них камера мобильного устройства используется для отслеживания окружающей среды и ее дополнения разного рода информацией, размещаемой на экране. AR-дисплеи могут накладывать поверх реальности какие-то очень простые данные, вроде циферблата часов, например, но могут и реализовывать такие комплексные объекты, как голограммы монстров посреди комнаты. Например, игра Pokemon Go проектирует персонажей-покемонов на экран вашего устройства, туда, куда направлен объектив камеры. Тогда как разного рода очки дополненной реальности позволяют пользователям размещать элементы интерфейса и иконки приложений поверх наблюдаемого ими изображения реальности. “Я верю, что дополненная реальность станет крупнейшей технологической революцией нашего времени.” Тим Свини (Tim Sweeney), американский программист и разработчик видеоигр, создатель компании Epic Games Java в виртуальной реальности. Правда ли, что за VR/AR будущее, и есть ли в нем место для Java? - 2

VR и AR — не одно и то же

В этом, собственно, и есть главный недостаток дополненной реальности по сравнению с виртуальной. Если VR полностью подменяет изображение в вашей видимости, то AR только дополняет его, зачастую занимая лишь очень небольшой участок зрения пользователя. Но в этом же заключается и основное преимущество дополненной реальности, ведь данный метод дает разработчикам практически неограниченные возможности. Например, мобильные AR-приложения, умеющие распознавать объекты на изображении с камеры и передавать информацию о них пользователю, существуют уже не первый год. Специальные AR-очки, такие как HoloLens, позволяют пользователям размещать вокруг себя плавающие окна, которые можно просматривать на дисплее девайса. Не говоря уже о множестве игр, которые используют дополненную реальность как основной элемент игрового процесса (Pokemon Go, RoboRaid, Fragments) или дополнительную фичу. Таким образом, виртуальная реальность и дополненная реальность — это две весьма отличные друг от друга технологии, которые применяются с разными целями, хоть AR и VR обычно и упоминаются в качестве двух типов одного и того же подхода. Если целью VR устройств и приложений является подмена реальности и виртуальный перенос пользователя в другое место, то AR работает с реальностью, дополняя то, что уже у нас перед глазами, новой информацией. Обе эти технологии все еще находятся в начале своего развития, но считаются крайне перспективными и способными перевернуть то, как в ближайшем будущем люди будут использовать компьютеры. “Я думаю, что в ближайшем будущем многие истории будут рассказываться внутри виртуального пространства.” Джо Руссо (Joe Russo), американской кинорежиссер Java в виртуальной реальности. Правда ли, что за VR/AR будущее, и есть ли в нем место для Java? - 3

AR/VR и Java

Хотя в нише AR/VR используется целый ряд языков программирования, среди которых C#, C/C++, JavaScript, Swift и даже Python, Java является одним из наиболее востребованных. Причины, собственно, все те же, что и в случае с другими технологиями: Java-код позволяет приложениям работать быстро, объектно-ориентированность облегчает создание отдельных компонентов приложений, а платформонезависимость делает AR/VR продукты на Java более универсальными. В случае с AR, то есть дополненной реальностью, Java будет одним из основных языков программирования, потому что абсолютное большинство AR-приложений создаются для мобильных устройств. Соответственно, Java является основным вариантом для AR-приложений, создаваемых для устройств на базе мобильной операционной системы Android, тогда как в случае с продуктами компании Apple используются языки Objective-C и Swift. На сегодняшний день, AR-приложения поддерживают множество разных устройств, среди которых шлемы, очки, наладонные девайсы и даже контактные линзы. Во многом, именно Java позволяет создавать AR-решения, которые будут работать на разных,, зачастую сильно отличающихся друг от друга, платформах. Сегодня AR-приложения на базе Java активно внедряются в клиниках, банках, ресторанах, музеях и т.д. “AR уже сейчас революционизирует наш подход к коммерции и шоппингу, создавая мост между цифровым и физическим мирами.” Мучанета Капфунде (Muchaneta Kapfunde), основатель ресурса FashNerd.com

Типы AR-приложений

А теперь давайте коротко пройдемся по основным наборам инструментов (SDK) и фреймворков, которые имеет смысл использовать для разработки AR-приложений. Но сначала разберем два основные типа AR-приложений: маркерные и геолокационные.
  • Маркерные AR-приложения.

    Маркерные AR-приложения основаны на технологии распознавания изображений. Они применяют черно-белые маркеры в качестве триггеров, активирующих демонстрацию AR-контента пользователю. Таким образом, чтобы увидеть перед собой элемент дополненной реальности, пользователь такого приложения должен направить камеру на соответствующий маркер в своем окружении. Как только устройство распознает маркер, приложение накладывает на него цифровые данные и показывает пользователю элемент дополненной реальности. Такого рода приложения, в частности, широко используются в рекламных целях магазинами, ресторанами и другими бизнесами, где данный функционал уместен.

  • Геолокационные приложения.

    Второй основной тип AR-приложений, геолокационные, работает без маркеров, вместо этого опираясь на информацию о местоположении пользователя, которую предоставляют GPS, акселерометр или цифровой компас, и накладывая объекты дополненной реальности поверх реальных физических локаций. И снова приводим в пример Pokemon Go — это, наверное, самое известно геолокационное AR-приложение.

    “Ключевой задачей для развития AR и VR технологий является создание единой открытой платформы, где разработчики смогут реализовывать все свои идеи.”

    Марк Цукерберг, создатель соцсети Facebook

    Java в виртуальной реальности. Правда ли, что за VR/AR будущее, и есть ли в нем место для Java? - 4

Лучшие SDK для разработки AR-приложений

  • Google ARCore

    ARCore — это ключевая платформа для разработки AR-приложений от компании Google, поддерживающая устройства на основе мобильной ОС Android и работающая с библиотеками Java/OpenGL, Unity и Unreal.

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

  • ARToolKit

    ARToolKit — это open-source набор инструментов для разработки AR-приложений.

    Несмотря на то, что это открытый и бесплатный набор, ARToolKit включает в себя весьма богатый набор функций, среди которых поддержка Unity3D и OpenSceneGraph, возможность создания AR-приложений реального времени, интеграция со смарт-очками, поддержка разных видов камер, автоматическая калибрация камер и т.д.

    ARToolKit поддерживает целый ряд платформ, среди которых Android, iOS, Linux, Windows и Mac OS.

  • Vuforia

    Vuforia — это, пожалуй, самая популярная и известная платформа для разработки приложений дополненной реальности.

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

    Vuforia поддерживает такие платформы, как Android, Universal Windows Platform, Unity и iOS.

  • Apple ARKit

    Ну и у компании Apple тоже есть собственный набор инструментария для разработки AR-приложений, который был представлен вместе с iOS11 и называется ARKit. Естественно, он поддерживает только устройства на платформе iOS и включает в себя весь базовый функционал для создания приложений дополненной реальности.

    “Нашей текущей целью является сделать VR-решения более увлекательными и иммерсионными, и позволить людям переживать этот опыт совместно.”

    Джон Хэнке (John Hanke), CEO компании Niantic

  • Лучшие платформы и фреймворки для разработки VR-приложений

    Ну и напоследок пройдемся по ряду наиболее популярных открытых платформ и фреймворков для разработки приложений виртуальной реальности.
    • GuriVR

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

    • OpenSpace3D

      OpenSpace3D — это бесплатная и открытая платформа для разработки VR-приложений и игр на основе VR-технологий. Поддерживает большое число разных платформ и устройств, среди которых Leap Motion, HTC Vive/Oculus, Google Cardboard и другие. Включает также и функционал для создания AR-приложений.

    • OSVR: Open Source Virtual Reality Platform

      OSVR — это еще одна универсальная платформа для VR и AR решений. Она позволяет обнаруживать, настраивать и управлять сотнями VR/AR устройств, а также разного рода периферийных девайсов. OSVR поддерживает несколько игровых движков и операционных систем, и предоставляет такие сервисы, как асинхронная деформация времени и прямой режим для поддержки рендеринга с малой задержкой.

    • Primrose VR

      Primrose VR — это открытый браузерный фреймворк для создания простых VR-приложений, например, для виртуальной демонстрации продуктов, виртуальных встреч или занятий в виртуальном пространстве. Primrose VR совместима со всеми современными браузерами и работает на базе WebGL.

    • IdeaSpace VR (CMS)

      IdeaSpaceVR — это не фреймворк и не платформа, а открытая система управления контентом (CMS) для VR-контента. Работающая на базе PHP/MySQL, IdeaSpaceVR является локально устанавливаемой модульной системой со встроенным проигрывателем контента для приложений виртуальной реальности.

    Java в виртуальной реальности. Правда ли, что за VR/AR будущее, и есть ли в нем место для Java? - 6
Комментарии (5)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
andrespin Уровень 23
8 февраля 2021
"Соответственно, Java является основным вариантом для AR-приложений, создаваемых для устройств на базе мобильной операционной системы Android" — Для Android сейчас (в 2021 году) приоритетным языком разработки является Kotlin, пожалуйста, не вводите новичков в заблуждение!
ДмитрийЛ Уровень 7
30 декабря 2020
А есть какие-то примеры реальных ar приложений на java? Я думал все на юнити и С делают. Где почитать поподробнее?
wan-derer.ru Уровень 40
8 сентября 2020
Стать похожа не на авторский материал, а на машинный перевод.
Interstellar Уровень 36 Expert
21 июля 2020
/* Комментарий удален */