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

Курсы

Программирование
iOS Developer. Basic
-23%
Python Developer. Professional
-13%
Golang Developer. Professional
-17%
Python Developer. Basic
-16%
iOS Developer. Professional
-13%
C# ASP.NET Core разработчик
-18%
Unity Game Developer. Professional
-11%
React.js Developer
-12%
Android Developer. Professional
-7%
Software Architect
-12%
C++ Developer. Professional
-8%
Разработчик C#
-8%
Backend-разработчик на PHP
-8%
Архитектура и шаблоны проектирования
-12%
Программист С Разработчик на Spring Framework MS SQL Server Developer AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Vue.js разработчик VOIP инженер Нереляционные базы данных Супер - интенсив по паттернам проектирования Супер-практикум по использованию и настройке GIT IoT-разработчик Advanced Fullstack JavaScript developer Супер-интенсив Azure
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-17%
DevOps практики и инструменты
-18%
Архитектор сетей
-21%
Инфраструктурная платформа на основе Kubernetes
-22%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив по управлению миграциями (DBVC)
-16%
Administrator Linux. Professional
-5%
Administrator Linux.Basic
-10%
Супер-интенсив «ELK»
-10%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

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

Виртуальная реальность — захватывающее направление в разработке. Это и новые форматы сторителлинга и действенные способы передачи ощущений и эмоций. Ещё не так давно для разработки таких приложений использовалось дорогое оборудование. Сегодня вы можете создать видео-приложение с обзором в 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 (код можно скопировать здесь). Данный шейдер вывернет каждый пиксель сферы, в результате чего изнутри сфера станет выглядеть, как большой белый шар.

Шаг 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. В результате вы сможете погрузиться в виртуальную реальность непосредственно у себя дома.

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

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

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

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

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