Как создать vr приложение на unity
Где разработчику игр на Unity прокачивать свои навыки? Все лайфхаки от создания персонажей до управления камерами вы освоите и реализуете в своей игре. На практическом онлайн-курсе «Unity Game Developer. Professional» собрали для вас все технологии, которые могут потребоваться в работе над масштабным проектом.
Виртуальная реальность — захватывающее направление в разработке. Это и новые форматы сторителлинга и действенные способы передачи ощущений и эмоций. Ещё не так давно для разработки таких приложений использовалось дорогое оборудование. Сегодня вы можете создать видео-приложение с обзором в 360° для Android всего за 10 минут. И даже навыки программирования не потребуются.
— смартфон с гироскопом;
— гарнитура Google Cardboard;
— кроссплатформенный движок Unity3D;
— GoogleVR SDK для Unity;
— видео с обзором в 360°.
Нюансы
Как известно, обычное видео ограничено прямоугольной рамкой. В нашем случае речь идёт о панорамном видео, а оно имеет форму сферы. Именно поэтому нам сначала надо создать сферический экран — на него будет спроецировано видео с обзором в 360°. Наблюдатель или игрок будет находиться как бы внутри данной сферы, в результате чего он сможет смотреть видео в любом интересующем направлении.
Шаг 1: строим сферу
Для решения этой задачи создаём новый Project в Unity либо новую Scene, если вы желаете интегрировать видеоплеер в уже существующий проект. Можно сказать, что Project — это вся игра, а Scene — один уровень в игре.
Далее помещаем сферу (3D object → Sphere) с радиусом 50 (Scale = 50, 50, 50) в центр Scene (Position = 0, 0, 0) и устанавливаем позицию камеры на 0, 0, 0. Видеокамера — это глаза игрока: поместив её не в центр, мы получим искажённое видео. Когда камера будет внутри сферы, мы уже не увидим её на сцене.
Шаг 2: переворачиваем нормаль сферы
Так как нам надо смотреть на сферу изнутри, мы вывернем её наоборот. В игровом движке Unity сферы являются, по сути, многогранниками, состоящими из тысяч крошечных граней. Внешние стороны видимы, а внутренние — нет. Поэтому, дабы увидеть сферу изнутри, надо эти грани перевернуть. В терминах 3-мерной геометрии данная трансформация носит название «переворачивание нормалей».
Здесь нам пригодится программа Shader, которую мы применим к Material сферы. В Unity материалы контролируют внешний вид объектов. Шейдеры представляют собой небольшие скрипты, рассчитывающие цвет каждого рендерированного пикселя на основе информации о материале и освещении.
Нам надо создать новый Material для сферы и применить к нему Shader (код можно скопировать здесь ). Данный шейдер вывернет каждый пиксель сферы, в результате чего изнутри сфера станет выглядеть, как большой белый шар.
Шаг 3: проектируем панорамное видео внутрь сферы
Теперь импортируем в проект видео формата mp4 с обзором в 360° и перенесём его на сферу. Возникнет компонент Video Player, а видео станет готово к воспроизведению. В окне данного компонента вы можете установить бесконечный повтор, а также отрегулировать настройки звука. Кстати, если собственное видео такого типа у вас отсутствует, в сети свободно распространяются чужие заготовки, которые можно использовать.
Шаг 4: настраиваем поддержку Google Cardboard
Применяя 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) выбираем File → Build Settings. Посредством USB-кабеля подключаем телефон к компьютеру, включаем отладку по USB, нажимаем Build & Run. В результате приложение загрузится сразу на смартфон;
Также во время сборки могут попросить выбрать корневую папку Android SDK. Если это произойдёт, скачайте Android SDK, а потом укажите расположение его папки.
Что же, осталось лишь запустить приложение и вставить смартфон в Cardboard. В результате вы сможете погрузиться в виртуальную реальность непосредственно у себя дома.
Виртуальная реальность — это новое захватывающее направление в разработке приложений. Оно знаменует собой новые форматы сторителлинга и более действенные способы передачи эмоций и ощущений.
Если раньше для создания подобных приложений требовалось дорогое оборудование и специальные навыки, то сейчас разработка виртуальной реальности стала доступна благодаря интуитивно понятным инструментам и технике, которую можно найти в ближайшем магазине электроники. В этом руководстве мы разберём, как создать видео-приложение с обзором в 360 градусов для Android за десять минут. Навыки программирования не требуются.
Что понадобится
? Телефон с гироскопом под управлением Android KitKat или более новой версии.
27–28 ноября, Онлайн, Беcплатно
? Видео с обзором в 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 ?
Это можно сделать двумя разными способами:
В течение процесса сборки вас могут попросить выбрать корневую папку Android SDK. В этом случае скачайте Android SDK и укажите расположение его папки.
Осталось только запустить приложение и вставить телефон в Cardboard. Теперь вы можете испытать погружение в виртуальную реальность с обзором в 360 градусов у себя дома.
Что дальше
Поздравляем, вы создали видео-приложение с обзором в 360 градусов! Теперь вы на шаг ближе к разработке видео-приложения виртуальной реальности. Да, между ними есть разница. В первом случае наблюдатель может только смотреть в любом направлении. Во втором случае добавляется интерактивность, то есть контроль над объектами.
Приложение, которое вы только что создали, может послужить отправной точкой в построении более разнообразной виртуальной реальности. Например, в Unity можно наложить на верхний слой видео 3D-объекты и эффекты частиц.
Вы также можете попробовать поместить внутрь панорамного видеоплеера трёхмерное изображение некоторой окружающей обстановки и использовать видеоплеер как skybox. Для навигации пользователя по созданному окружению можно использовать этот скрипт.
Виртуальная реальность — захватывающее направление в разработке. Это и новые форматы сторителлинга и действенные способы передачи ощущений и эмоций. Ещё не так давно для разработки таких приложений использовалось дорогое оборудование. Сегодня вы можете создать видео-приложение с обзором в 360° для Android всего за 10 минут. И даже навыки программирования не потребуются.
Что понадобится: — смартфон с гироскопом; — гарнитура Google Cardboard; — кроссплатформенный движок Unity3D; — GoogleVR SDK для Unity; — видео с обзором в 360°.
Нюансы
Как известно, обычное видео ограничено прямоугольной рамкой. В нашем случае речь идёт о панорамном видео, а оно имеет форму сферы. Именно поэтому нам сначала надо создать сферический экран — на него будет спроецировано видео с обзором в 360°. Наблюдатель или игрок будет находиться как бы внутри данной сферы, в результате чего он сможет смотреть видео в любом интересующем направлении.
Шаг 1: строим сферу
Для решения этой задачи создаём новый Project в Unity либо новую Scene, если вы желаете интегрировать видеоплеер в уже существующий проект. Можно сказать, что Project — это вся игра, а Scene — один уровень в игре.
Далее помещаем сферу (3D object → Sphere) с радиусом 50 (Scale = 50, 50, 50) в центр Scene (Position = 0, 0, 0) и устанавливаем позицию камеры на 0, 0, 0. Видеокамера — это глаза игрока: поместив её не в центр, мы получим искажённое видео. Когда камера будет внутри сферы, мы уже не увидим её на сцене.
Шаг 2: переворачиваем нормаль сферы
Так как нам надо смотреть на сферу изнутри, мы вывернем её наоборот. В игровом движке Unity сферы являются, по сути, многогранниками, состоящими из тысяч крошечных граней. Внешние стороны видимы, а внутренние — нет. Поэтому, дабы увидеть сферу изнутри, надо эти грани перевернуть. В терминах 3-мерной геометрии данная трансформация носит название «переворачивание нормалей».
Здесь нам пригодится программа Shader, которую мы применим к Material сферы. В Unity материалы контролируют внешний вид объектов. Шейдеры представляют собой небольшие скрипты, рассчитывающие цвет каждого рендерированного пикселя на основе информации о материале и освещении.
Нам надо создать новый Material для сферы и применить к нему Shader (код можно скопировать здесь). Данный шейдер вывернет каждый пиксель сферы, в результате чего изнутри сфера станет выглядеть, как большой белый шар.
Шаг 3: проектируем панорамное видео внутрь сферы
Теперь импортируем в проект видео формата mp4 с обзором в 360° и перенесём его на сферу. Возникнет компонент Video Player, а видео станет готово к воспроизведению. В окне данного компонента вы можете установить бесконечный повтор, а также отрегулировать настройки звука. Кстати, если собственное видео такого типа у вас отсутствует, в сети свободно распространяются чужие заготовки, которые можно использовать.
Шаг 4: настраиваем поддержку Google Cardboard
Применяя 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
Также во время сборки могут попросить выбрать корневую папку Android SDK. Если это произойдёт, скачайте Android SDK, а потом укажите расположение его папки.
Что же, осталось лишь запустить приложение и вставить смартфон в Cardboard. В результате вы сможете погрузиться в виртуальную реальность непосредственно у себя дома.
На днях мне довелось поработать с новыми очками виртуальной реальности от Samsung и Oculus — Gear VR. Моей задачей было создать приложение для этих очков, что оказалось чуть сложнее, чем я предполагал.
Зачем эта статья?
Samsung Gear VR — продукт новый и еще не вышел в открытый доступ, так что конкретной информации о том, как подружить эту технологию с Unity3D еще очень мало и ее приходится долго собирать по крупицам, а официальный Integration guide мне не сильно помог. Надеюсь, эта статья сэкономит вам время.
Примечание
Я опустил слишком подробное описание каждого действия, так что для полного понимания инструкции нужно знать базовые основы Unity3d и уметь билдить приложение под android.
Пошаговая инструкция интеграции OVR SDK в ваше приложение на Unity3D
1. Установите приложение от Samsung Gear VR на ваш телефон. Для этого нужно вставить телефон в очки, там есть USB порт. После чего запустится процесс установки, который потребует вашего вмешательства. Телефон можно вынуть, процесс установки от этого не прервется. Ссылка на видео с этим процессом будет предоставлена ниже.
2. Скачайте и установите Android SDK и Unity3D, если вы этого еще не сделали.
3. Скачайте мобильный SDK от Oculus. Не пугайтесь значку андроида, в архиве лежит папка с unitypackage.
4. В архиве, который вы скачали, нам нужна папка VrUnity -> UnityIntegration. Содержимое папки Project Settings нужно скопировать с заменой в аналогичную папку внутри вашего проекта (ProjectName\ProjectSettings), а unitypackage просто интегрировать в ваш проект.
5. Далее нужно получить некий signature file. Устанавливаем это приложение на ваше устройство.
Запустите его, там будет написан ваш device id. Полученный device id вписываем сюда и жмём кнопку «Download».
6. Файл, который вы скачали в 5-ом шаге, вам нужно поместить в папку Assets\Plugins\Android\assets вашего проекта.
7. Далее нужно сбилдить приложение под android, предварительно поставив тип сжатия текстур GLES 3.0
8. Устанавливаем на ваше устройство приложение и пытаемся его запустить. На экране появится предупреждение, что для работы требуются очки Gear VR. Ничего не нажимайте, а просто вставьте телефон в очки и приложение запустится.
Личные замечания
1. На данный момент я не нашел способа сбилдить универсальный билд, который будет адекватно работать на любом устройстве, совместимым с Gear VR, так как для корректной работы требуется signature file, привязанный к Device ID. Думаю, причиной этому является то, что сами очки еще не вышли в открытый доступ.
2. Не знаю, по какой причине, но в моём билде постоянно сбрасывались все теги. Так, если у вас всё работает в Unity3d, но не работает в билде, можете поискать проблему тут.
3. В официальном Integration guide есть парочку советов, как подстроить свой билд под Gear VR, в основном касающихся графических настроек билда. Если у вас будут проблемы с FPS, советую заглянуть туда.
Не знаю, как вы, а лично я вот уже полтора года жду, когда наконец VR начнёт разрывать рынок. Сначала были картонные Google Cardboard, которые служили идеальным подарком хоть другу, хоть жене. Потом Microsoft выпустило к финалу Супербоула красочное видео, показав далекие от реальности возможности Hololens. И конечно, за 2016 год мы посмотрели и почитали немало обзоров о невероятно крутых свежеиспеченных VR устройствах, а также поиграли в первые качественные ориентированные на данные девайсы игры.
При всем этом популярность VR-приложений всё ещё далека от заданных приложений, но интерес это ничуть не снижает. Так что если революция надвигается, то сейчас самое время взять знамя в собственные руки. Но как?
Просто, как раз-два-три
Вы можете создавать мобильные приложения, не имея под рукой подходящего смартфона, но создать VR-приложение без соответствующего устройства практически невозможно. Поэтому вашим первым шагом будет покупка любого, пускай даже примитивного VR-адаптера.
Следующем шагом будет установка правильного «движка», коим в нашем случае будет являться Unity. На сегодняшний день он наилучшим образом настроен не только для создания VR-приложений с нуля, но и на перевод в данный формат уже существующих 3D творений. Кстати, блуждая по просторам интернета вы можете наткнуться на мнение, что опция VR у Unity изначально была разработана для взаимодействия с пакетом Google Cardboard SDK, поэтому использование под iOS доставит немало трудностей. Первая часть частично правдива, а вот вторая — нет. Во всяком случае реальных проблем замечено не было.
Третий и главный шаг — среда разработки приложения, это стандартные и всем известные IDE, принципиальной разницы в данном вопросе нет.
Ещё в помощь
Если мы говорим о создании мобильных приложений, то именно такой набор инструментов считается оптимальным, но в зависимости от рода вашего творения можно использовать и другие.
Unreal Engine
Начиная с 4 версии вам также откроется доступ к возможностям работы с VR-графикой. Однако в силу некоторой сложности и дороговизны платформы, назвать Unreal приоритетным вариантом язык не повернётся.
InstaVR
Веб-сервис, позволяющий в несколько нажатий мышкой создать собственное VR-приложение. Прекрасно подойдёт для реализации простых задумок, будь то визуализация пейзажа или виртуальная 3D консоль.
Wonda VR
Специализированный сервис для создания VR-видео. Здесь действительно легко заниматься прототипированием, склейкой видео, наложением эффектов, но и цена начинается от 499 €. Впрочем, есть 14-дневная триал-версия для оценки возможностей.
Photo Sphere
Приложение для обработки фотографий с возможностью преобразования в формат VR.
Splash
Аналогичный сервис, доступный только для iOS. Ещё находится в стадии разработки, но уже имеет неплохой функционал.
Отличия от разработки игр
Принципиальных отличий нет. С точки зрения разработки VR-приложений и 3D игр подход почти полностью совпадает, разница заключается лишь в мелких деталях. Более того, если качество 3D игр сегодня напрямую зависит и от графической составляющей и от сюжетной, то VR позволяет одним из аспектов пренебречь и остаться успешным.
Полезная литература
В силу специфики, в мире существует не так много полезной литературы о создании популярных и красивых VR-приложений. Так что ознакомимся с поверхностной обучающей литературой.
Google VR — начнем с официального руководства от Google, повествующего о том, как сделать из простой коробки чудо-развлечение;
Microsoft VR — аналогичная пошаговая инструкция, но от Microsoft;
How to make a VR app with zero experience — полезная и наглядная статья, которая поможет вам создать своё первое приложение;
Creating a Gear VR app in Unity Free — а вот и обучающее видео, как с помощью своих прямых рук и Unity создать VR-конфетку.
Читайте также: