Создаём простое VR-приложение под Android с помощью Unity
Виртуальная реальность — это новое захватывающее направление в разработке приложений. Разберём, как создать VR-приложение с обзором в 360 градусов для Android. Навыки программирования не требуются.
25К открытий26К показов
Виртуальная реальность — это новое захватывающее направление в разработке приложений. Оно знаменует собой новые форматы сторителлинга и более действенные способы передачи эмоций и ощущений.
Если раньше для создания подобных приложений требовалось дорогое оборудование и специальные навыки, то сейчас разработка виртуальной реальности стала доступна благодаря интуитивно понятным инструментам и технике, которую можно найти в ближайшем магазине электроники. В этом руководстве мы разберём, как создать видео-приложение с обзором в 360 градусов для Android за десять минут. Навыки программирования не требуются.
Что понадобится
? Телефон с гироскопом под управлением Android KitKat или более новой версии.
? Unity3D – кроссплатформенный игровой движок версии 5.6 и выше.
? Видео с обзором в 360 градусов.
Как создать приложение?
Если обычное видео ограничено прямоугольной рамкой, то панорамное имеет форму сферы. Поэтому для начала создадим сферический экран, на который будет спроецировано видео с обзором в 360 градусов. Игрок (или наблюдатель) будет находиться внутри этой сферы и сможет смотреть видео в любом направлении.
Шаг 1: Построить сферу ?
Создадим новый Project в Unity или новую Scene, если хотим интегрировать видеоплеер в уже существующий проект. Считайте, что Scene — это один уровень в игре, а Project — вся игра.
Поместите сферу (3D object → Sphere) радиуса 50 (Scale = 50, 50, 50) в центр Scene (Position = 0, 0, 0). Установите позицию камеры на 0, 0, 0. Камера — это глаза игрока: если поместить её не в центр, то видео будет искажённым.
Поместив камеру внутрь сферы, мы больше не видим её на сцене. Так происходит из-за того, что большинство игровых движков не отображает внутреннюю сторону 3D-объектов, так как нам почти никогда не нужно её видеть, а значит можно не тратить ресурсы на отрисовку.
Шаг 2: Перевернуть нормали сферы ?
В нашем случае нужно смотреть на сферу изнутри, поэтому мы вывернем её наоборот.
В Unity сферы на самом деле являются многогранниками, составленными из тысяч крошечных граней. Их внешние стороны видимы, а внутренние — нет. Чтобы увидеть сферу изнутри, необходимо перевернуть эти грани. В терминах трёхмерной геометрии такая трансформация называется переворачиванием нормалей.
Материалы в Unity контролируют внешний вид объектов. Шейдеры — это небольшие скрипты, которые рассчитывают цвет каждого рендерированного пикселя, основываясь на информации о материале и освещении.
Создадим новый материал для сферы, а к нему применим шейдер, код которого можно скопировать отсюда. Чтобы присвоить шейдер, выделите материал, в окне инспектора вверху раскройте список Shader. Выберите вкладку Custom. В открывшемся списке выберите ваш шейдер. Этот шейдер вывернет каждый пиксель сферы, и изнутри сфера будет выглядеть как большой белый шар.
Шаг 3: Спроектировать панорамное видео внутрь сферы ?
Импортируйте в проект видео с обзором в 360 градусов формата mp4, перенесите его на сферу. Появится компонент Video Player, и видео будет готово к воспроизведению. В окне этого компонента можно установить бесконечный повтор и отрегулировать настройки звука.
Прим. ред. Если у вас нет собственного видео такого типа, можно использовать чужие заготовки, свободно распространяемые в Интернете.
Шаг 4: Настроить поддержку Google Cardboard ?
Используя GoogleVR SDK, мы создадим стереоскопическое изображение. Совокупность эффекта рыбьего глаза, применённого к обеим частям разделённого наполовину экрана, и искажения пластиковых линз Google Cardboard создаёт иллюзию глубины картинки и погружения в виртуальную реальность.
Для того чтобы добавить GoogleVR SDK к проекту, скачайте и импортируйте плагин. Далее скорректируйте настройки Android:
- В верхнем меню выберите File → Build Settings. Добавьте сцену, если она еще не была добавлена, а из предлагаемых платформ выберите Android.
- Нажмите на Switch Platform. Переключение платформы займёт некоторое время.
- Нажмите на Player Settings. На панели инструктора появятся компоненты.
В окне Player Settings в секции Other settings:
- Отметьте галочкой Virtual Reality Supported. В выпавшем окне Virtual Reality SDKs нажмите на +, добавьте в список Cardboard.
- Выберите для вашего приложения уникальное имя и введите его в поле Bundle Identifier. Уникальные имена приложений под Android обычно имеют форму обратного доменного имени, например,
com.example.CoolApp
. Подробнее про это можно почитать в официальной документации и в Википедии. - В меню Minimal API Level выберите Android 4.4 Kit Kat (API Level 19).
В панели Project Browser в папке GoogleVR/Prefabs выберите элемент GvrViewerMain и перетащите его на сцену. Задайте ему такую же позицию, как у центра сферы: 0, 0, 0.
Префаб GvrViewerMain контролирует все настройки режима виртуальной реальности, например, адаптацию экрана к линзам Cardboard. Он также получает данные с гироскопа телефона для отслеживания поворотов и наклонов головы. При повороте головы Camera в видеоплеере тоже повернётся.
Шаг 5: Запустить приложение на Android ?
Это можно сделать двумя разными способами:
- Выберите File → Build Settings. С помощью USB-кабеля подключите телефон к компьютеру, включите отладку по USB и нажмите Build & Run. Приложение загрузится сразу на телефон.
- Или нажмите Build only. Приложение не загрузится на телефон, но зато сгенерируется в APK-файл, который можно отправить другим людям или выложить в магазин мобильных приложений.
В течение процесса сборки вас могут попросить выбрать корневую папку Android SDK. В этом случае скачайте Android SDK и укажите расположение его папки.
Осталось только запустить приложение и вставить телефон в Cardboard. Теперь вы можете испытать погружение в виртуальную реальность с обзором в 360 градусов у себя дома.
Что дальше
Поздравляем, вы создали видео-приложение с обзором в 360 градусов! Теперь вы на шаг ближе к разработке видео-приложения виртуальной реальности. Да, между ними есть разница. В первом случае наблюдатель может только смотреть в любом направлении. Во втором случае добавляется интерактивность, то есть контроль над объектами.
Приложение, которое вы только что создали, может послужить отправной точкой в построении более разнообразной виртуальной реальности. Например, в Unity можно наложить на верхний слой видео 3D-объекты и эффекты частиц.
Вы также можете попробовать поместить внутрь панорамного видеоплеера трёхмерное изображение некоторой окружающей обстановки и использовать видеоплеер как skybox. Для навигации пользователя по созданному окружению можно использовать этот скрипт.
25К открытий26К показов