Создаём простое VR-приложение на Unity | OTUS

Создаём простое VR-приложение на Unity

unity_Welcome_970x90_копия-20219-071412.jpg

Виртуальная реальность — захватывающее направление в разработке. Это и новые форматы сторителлинга и действенные способы передачи ощущений и эмоций. Ещё не так давно для разработки таких приложений использовалось дорогое оборудование. Сегодня вы можете создать видео-приложение с обзором в 360° для Android всего за 10 минут. И даже навыки программирования не потребуются.

1_US4qmns1r1F0BKMxBpeYcg_1-1801-80e49f.png

Что понадобится: — смартфон с гироскопом; — гарнитура Google Cardboard; — кроссплатформенный движок Unity3D; — GoogleVR SDK для Unity; — видео с обзором в 360°.

Нюансы

Как известно, обычное видео ограничено прямоугольной рамкой. В нашем случае речь идёт о панорамном видео, а оно имеет форму сферы. Именно поэтому нам сначала надо создать сферический экран — на него будет спроецировано видео с обзором в 360°. Наблюдатель или игрок будет находиться как бы внутри данной сферы, в результате чего он сможет смотреть видео в любом интересующем направлении.

Шаг 1: строим сферу

sphere_1-1801-08f43c.jpg Для решения этой задачи создаём новый Project в Unity либо новую Scene, если вы желаете интегрировать видеоплеер в уже существующий проект. Можно сказать, что Project — это вся игра, а Scene — один уровень в игре.

Далее помещаем сферу (3D object → Sphere) с радиусом 50 (Scale = 50, 50, 50) в центр Scene (Position = 0, 0, 0) и устанавливаем позицию камеры на 0, 0, 0. Видеокамера — это глаза игрока: поместив её не в центр, мы получим искажённое видео. Когда камера будет внутри сферы, мы уже не увидим её на сцене.

Шаг 2: переворачиваем нормаль сферы

flip_normals_1-1801-d67e72.png

Так как нам надо смотреть на сферу изнутри, мы вывернем её наоборот. В игровом движке Unity сферы являются, по сути, многогранниками, состоящими из тысяч крошечных граней. Внешние стороны видимы, а внутренние — нет. Поэтому, дабы увидеть сферу изнутри, надо эти грани перевернуть. В терминах 3-мерной геометрии данная трансформация носит название «переворачивание нормалей».

Здесь нам пригодится программа Shader, которую мы применим к Material сферы. В Unity материалы контролируют внешний вид объектов. Шейдеры представляют собой небольшие скрипты, рассчитывающие цвет каждого рендерированного пикселя на основе информации о материале и освещении.

Нам надо создать новый Material для сферы и применить к нему Shader (код можно скопировать здесь). Данный шейдер вывернет каждый пиксель сферы, в результате чего изнутри сфера станет выглядеть, как большой белый шар.

unity_Welcome_970x90_копия-20219-071412.jpg

Шаг 3: проектируем панорамное видео внутрь сферы

Теперь импортируем в проект видео формата mp4 с обзором в 360° и перенесём его на сферу. Возникнет компонент Video Player, а видео станет готово к воспроизведению. В окне данного компонента вы можете установить бесконечный повтор, а также отрегулировать настройки звука. Кстати, если собственное видео такого типа у вас отсутствует, в сети свободно распространяются чужие заготовки, которые можно использовать.

Шаг 4: настраиваем поддержку Google Cardboard

cardboard_1-1801-d83722.png

Применяя GoogleVR SDK, мы создаём стереоскопическое изображение. Совокупность эффекта рыбьего глаза, который используется к обеим частям экрана, разделённого наполовину, в сочетании с искажениями пластиковых линз Google Cardboard позволит нам создать иллюзию глубины картинки и увлекательного погружения в виртуальную реальность.

Дабы добавить GoogleVR SDK к вашему проекту, надо скачать и импортировать соответствующий плагин. Далее надо будет скорректировать некоторые настройки Android: 1. Выбираем в верхнем меню File → Build Settings. Добавляем сцену, если она еще не добавлена, из предлагаемых платформ выбираем Android. 2. Нажимаем на Switch Platform. Переключение платформы потребует некоторого времени. 3. Нажимаем на Player Settings. Соответствующие компоненты появятся на панели инструктора.

Что делаем в секции Other settings в окне Player 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 контролирует все настройки VR-режима, к примеру, адаптацию экрана к линзам Cardboard. Кроме того, он получает данные с гироскопа смартфона для отслеживания наклонов головы и поворотов, то есть при повороте головы Camera в видеоплеере повернётся тоже.

Шаг 5: запускаем приложение на Android

1_6ZeCWw1dEKNNT7iLtXfndQ_1-1801-5f2be8.png

Запустить приложение можно двумя путями: 1) выбираем File → Build Settings. Посредством USB-кабеля подключаем телефон к компьютеру, включаем отладку по USB, нажимаем Build & Run. В результате приложение загрузится сразу на смартфон; 2) нажимаем Build only. Приложение не загрузится сразу на смартфон, зато сгенерируется в APK-файл, который, в свою очередь, вы сможете отправить друзьям либо выложить в маркет.

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

Что же, осталось лишь запустить приложение и вставить смартфон в Cardboard. В результате вы сможете погрузиться в виртуальную реальность непосредственно у себя дома.

unity_Welcome_970x90_копия-20219-071412.jpg

По материалам статьи «Here’s how you can make a 360 VR app in 10 minutes with Unity».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто