![Java у віртуальній реальності. Чи правда, що за VR/AR майбутнє, і чи є в ньому місце Java? - 1](https://cdn.javarush.com/images/article/f10f4995-2d47-4f06-8d6a-a38ca42520fc/800.jpeg)
Що таке 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](https://cdn.javarush.com/images/article/13de494a-6279-41ce-829d-83c50b888e88/512.jpeg)
VR і AR - не одне і те ж
У цьому, власне, і є головний недолік доповненої реальності, порівняно з віртуальною. Якщо VR повністю підміняє зображення у вашій видимості, то AR тільки доповнює його, часто займаючи дуже невелику ділянку зору користувача. Але в цьому полягає і основна перевага доповненої реальності, адже даний метод дає розробникам практично необмежені можливості. Наприклад, мобільні AR-програми, що вміють розпізнавати об'єкти на зображенні з камери та передавати інформацію про них користувачеві, існують уже не перший рік. Спеціальні AR-окуляри, такі як HoloLens, дозволяють користувачам розміщувати навколо себе плаваючі вікна, які можна переглядати на дисплеї девайсу. Не кажучи вже про безліч ігор, які використовують доповнену реальність як основний елемент ігрового процесу (Pokemon Go, RoboRaid, Fragments) або додаткову фічу. Таким чином, віртуальна реальність і доповнена реальність - це дві дуже відмінні один від одного технології, які застосовуються з різними цілями, хоча AR і VR зазвичай згадуються як два типи одного й того ж підходу. Якщо метою VR пристроїв та програм є підміна реальності та віртуальне перенесення користувача в інше місце, то AR працює з реальністю, доповнюючи те, що вже у нас перед очима, новою інформацією. Обидві ці технології все ще перебувають на початку свого розвитку, але вважаються вкрай перспективними та здатними перевернути те, як у найближчому майбутньому люди будуть використовувати комп'ютери. “Я думаю, що в найближчому майбутньому багато історії розповідатимуться всередині віртуального простору.” Джо Руссо (Joe Russo), американський кінорежисер![Java у віртуальній реальності. Чи правда, що за VR/AR майбутнє, і чи є в ньому місце Java? - 3](https://cdn.javarush.com/images/article/4737979e-f9dc-407d-a754-6dbb79f03121/800.jpeg)
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
Найкращі SDK для розробки AR-додатків
-
ARCore - це ключова платформа для розробки AR-програм від компанії Google, що підтримує пристрої на основі мобільної ОС Android і працює з бібліотеками Java/OpenGL, Unity та Unreal.
Серед ключових можливостей ARCore: відстеження руху (ARCore може визначати позицію та точку напрямку пристрою за допомогою вбудованої камери), моделювання навколишнього середовища (платформа здатна визначати горизонтальні поверхні, що дозволяє, наприклад, розміщувати віртуальні об'єкти на столах або на підлозі), оцінка освітленості ( визначає рівень освітленості, при необхідності підсвічуючи віртуальні об'єкти так, щоб вони виглядали природно у навколишньому середовищі) та інші.
-
ARToolKit - це open-source набір інструментів для розробки AR-додатків.
Незважаючи на те, що це відкритий і безкоштовний набір, ARToolKit включає дуже багатий набір функцій, серед яких підтримка Unity3D і OpenSceneGraph, можливість створення AR-додатків реального часу, інтеграція зі смарт-окулярами, підтримка різних видів камер, автоматична калібрація камер і і т.д.
ARToolKit підтримує цілу низку платформ, серед яких Android, iOS, Linux, Windows і Mac OS.
-
Vuforia – це, мабуть, найпопулярніша та найвідоміша платформа для розробки додатків доповненої реальності.
Серед ключових функцій Vuforia: розпізнавання різноманітних об'єктів та зображень; підтримка розпізнавання базових текстів, створення кастомізованих маркерів, створення 3D-карток різних локацій, підтримка хмарних сервісів та локального зберігання даних тощо.
Vuforia підтримує такі платформи, як Android, Universal Windows Platform, Unity та iOS.
-
Ну і компанія Apple теж має власний набір інструментарію для розробки AR-додатків, який був представлений разом з iOS11 і називається ARKit. Природно, він підтримує тільки пристрої на платформі iOS і включає весь базовий функціонал для створення додатків доповненої реальності.
“Нашою поточною метою є зробити VR-рішення більш захоплюючими та іммерсійними, і дозволити людям переживати цей досвід спільно.”
Джон Хенке (John Hanke), CEO компанії Niantic
-
GuriVR – це відкритий VR-редактор, який дозволяє конвертувати текстові описи тривимірних сцен на реальні 3D-моделі для VR-додатків. Підтримує текст, 3D-моделі, зображення, аудіозаписи, озвучення, 3D-чарти та багато інших функцій.
-
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 — це відкритий браузерний фреймворк для створення простих VR-програм, наприклад, для віртуальної демонстрації продуктів, віртуальних зустрічей або занять у віртуальному просторі. Primrose VR сумісна з усіма сучасними браузерами та працює на базі WebGL.
-
IdeaSpaceVR - це не фреймворк і не платформа, а відкрита система управління контентом (CMS) для контенту VR. IdeaSpaceVR, що працює на базі PHP/MySQL, є локально встановлюваною модульною системою з вбудованим програвачем контенту для додатків віртуальної реальності.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ