4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Unity и панорамное видео

Содержание

Русские Блоги

Используйте AVproVideo для воспроизведения панорамного видео в Unity (HTCVIVI)

Используйте HTCVIVE для воспроизведения панорамного видео в Unity (плагин AVProVideo)

1. Введение

Я только что сделал небольшую демонстрацию в первую неделю работы, а затем позвольте мне поделиться своими мыслями!
1.1. Существует много способов воспроизведения панорамного видео в Unity, но все они одинаковы, и для воспроизведения видео требуется носитель. Когда мы смотрим телевизор, это экран, когда мы смотрим фильм, это театр. Canvas, SO, Unity для воспроизведения видео могут быть UI, Cube и т. Д., Каждый кадр панорамного видео является панорамным изображением, поэтому мы используем шарик в качестве носителя.
1.2. Для этого можно использовать MoveTexture или PlayerVideo. Принцип тот же. Получите текстуру шара, вставьте видео в качестве текстуры, а затем поместите камеру в центр шара. Тогда есть API для управления воспроизведением. Но обратите внимание на то, что внутренняя часть шара невидима, поэтому напишите шейдер, чтобы сделать внутреннюю часть шара видимой

Код шейдера выглядит следующим образом:

Этот метод доступен онлайн, я не буду описывать его подробно.
1.3. Сначала я использовал два вышеупомянутых метода, но позже я сообщал об ошибках по разным причинам, но я был беспомощен, поэтому я нашел этот AV-плагин. Хахаха, плагин AVProVideo можно скачать с Github по следующему адресу:AVProVideo адрес загрузкиЗдесь много примеров, пожалуйста, обратитесь к ним.

2. Функциональное производство

2.1 Прежде всего, создайте новый проект и импортируйте загруженный проект в проект. Мы видим, что это происходит во многих случаях. Все видео в деле читаются в StreamingAssets. Если мы хотим прочитать видео в сети, Нам нужно открыть компонент Media Player и скопировать соединение с вышеупомянутым:


В случае 8 можно сослаться на небольшую демонстрацию панорамного видео. Импортируйте видео в папку StreamAssets и перетащите готовый шарик в сцену. Это упаковано плагином. Просто перетащите видео на него.
2.2 Поместите позицию Htc в центр шара и запустите его. Кроме того, вы также можете добавить кнопку или индикатор выполнения. Индикатор выполнения будет описан ниже.

2.3 В основном изучите каждую функцию компонента Media Player, я не буду говорить об этом до того, как закончу, позвольте мне рассказать о индикаторе выполнения, новом слайдере, тексте и т. Д.
Без лишних слов перейдите непосредственно к коду.

J-скрипт выглядит так:

3. Вывод

Воспроизведение видео очень просто, в основном зависит от функции использования взаимодействия HTC. В следующих статьях я буду постепенно описывать различные способы использования HTCVIVI. Поскольку я только начал вести блог, описание может быть не очень четким. QQ группа 319506028; отказаться от чата, пожалуйста, приходите изучать технологии.

Panoramic video

Unity’s panoramic video feature enables you to:

  • Easily include real-world video shot in 360 degrees.
  • Reduce Scene A Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
    See in Glossary complexity in VR by including a pre-rendered backdrop video instead of real geometry.

Unity supports 180 and 360 degree videos in either an equirectangular layout (longitude and latitude) or a cubemap layout (6 frames).

Equirectangular 2D videos should have an aspect ratio The relationship of an image’s proportional dimensions, such as its width and height.
See in Glossary of exactly 2:1 for 360 content, or 1:1 for 180 content.

Equirectangular 2D video

Cubemap 2D videos should have an aspect ratio of 1:6, 3:4, 4:3, or 6:1, depending on face layout:

Cubemap 2D video

To use the panoramic video features in the Unity Editor, you must have access to panoramic video clips, or know how to author them.

This page describes the following steps to display any panoramic video in the Editor:

Set up a Video Player to play the video source to a Render Texture.

Set up a Skybox Material that receives the Render Texture.

Set the Scene to use the Skybox Material.

Note: This is a resource-intensive feature. For best visual results, use panoramic videos in the highest possible resolution (often 4K or 8K). Large videos require more computing power and resources for decoding. Most systems have specific limits on maximum video decoding resolutions (for example, many mobiles are limited to HD or 2K, and older desktops might be limited to 2K or 4K).

1. Video player setup

Import your video into Unity as an Asset. To create a Video Player, drag the video Asset from the Project view to an empty area of Unity’s Hierarchy view. By default, this sets up the component to play the video full-screen for the default Camera A component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
See in Glossary . Press Play to view this.

You should change this behaviour so that it renders to a Render Texture. That way, you can control exactly how it is displayed. To do this, go to Assets Any media or data that can be used in your game or project. An asset may come from a file created outside of Unity, such as a 3D Model, an audio file or an image. You can also create some asset types in Unity, such as an Animator Controller, an Audio Mixer or a Render Texture. More info
See in Glossary > Create > Render Texture A special type of Texture that is created and updated at runtime. To use them, first create a new Render Texture and designate one of your Cameras to render into it. Then you can use the Render Texture in a Material just like a regular Texture. More info
See in Glossary .

Set the Render Texture’s Size to match your video exactly. To check the dimensions of your video, select the video in your Assets folder and view the Inspector A Unity window that displays information about the currently selected GameObject, asset or project settings, allowing you to inspect and edit the values. More info
See in Glossary window. Scroll to the section where Unity previews your video, select your video’s name in the preview window, and change it to Source Info.

Next, set your Render Texture’s Depth Buffer A memory store that holds the z-value depth of each pixel in an image, where the z-value is the depth for each rendered pixel from the projection plane. More info
See in Glossary option to No depth buffer.

Render Texture set to No depth buffer

Now, open the Video Player Inspector and switch the Render Mode to Render Texture. Drag your new Render Texture from the Asset view to the Target Texture slot.

Enter Play mode to verify that this is functioning correctly.

The video doesn’t render in the Game window, but you can select the Render Texture Asset to see that its content updating with each video frame.

2. Create a Skybox Material

You need to replace the default Skybox with your video content to render the panoramic video as a backdrop to your Scene.

To do this, create a new Material (Assets > Create > Material An asset that defines how a surface should be rendered. More info
See in Glossary ). Go to your new Material’s Inspector and set the Material’s Shader to Skybox/Panoramic (go to Shader A program that runs on the GPU. More info
See in Glossary > Skybox A special type of Material used to represent skies. Usually six-sided. More info
See in Glossary > Panoramic).

Drag the Render Texture from the Asset view to the Texture slot in the new Material’s Inspector.

You must correctly identify the type of content in the video (cubemap or equirectangular) for the panoramic video to display properly. For cubemap content (such as a cross and strip layout, as is common for static Skybox Textures), set Mapping to 6 Frames Layout.

For equirectangular content, set Mapping to Latitude Longitude Layout, and then either the 360 degree or 180 degree sub-option. Choose the 360 degree option if the video covers a full 360-degree view. Choose 180 degree if the video is just a front-facing 180-degree view.

Читать еще:  The best Android games 2020

Look at the Preview at the bottom of the Material Inspector. Pan around and check that the content looks correct.

3. Render the panoramic video to the Skybox

Finally, you must connect your new Skybox Material to the Scene.

Open up the Lighting window (menu: Window > General > Lighting).

Drag and drop the new Skybox Material Asset to the first slot under Environment.

Press Play to show the video as a Scene backdrop on the Skybox.

Change the Scene Camera orientation to show a different portion of the Skybox (and therefore a different portion of the panoramic video).

3D panoramic video

Turn on Virtual Reality Support in the Player settings (menu: Edit > Project Settings A broad collection of settings which allow you to configure how Physics, Audio, Networking, Graphics, Input and many other areas of your project behave. More info
See in Glossary , then select the Player category, and open the XR Settings panel), especially if your source video has stereo content. This unlocks an extra 3D Layout option in the Skybox/Panoramic Material. The 3D Layout has three options : Side by Side, Over Under, and None (default value).

Use the Side by Side settings if the video contains the left eye’s content on the left and the right eye’s content on the right. Choose Over Under if the left and right content are positioned above and below one another in the video. Unity detects which eye is currently being rendered and sends this information to the Skybox/Panoramic shader using Single Pass Stereo rendering. The shader contains the logic to select the correct half of the video based on this information when Unity renders each eye’s content in VR.

3D panoramic video

For non–360 3D video (where you shouldn’t use a Skybox Material), the same 3D Layout is available directly in the Video Player component when using the Camera Near/Far Plane Render Modes.

Alternate Render Texture type for cubemap videos

When working with cubemap videos, instead of the Video Player rendering The process of drawing graphics to the screen (or to a render texture). By default, the main camera in Unity renders its view to the screen. More info
See in Glossary to a 2D Render Texture and preserving the exact cube map layout, you can render the Video Player directly to a Render Texture Cube.

To achieve this, change the Render Texture Asset’s Dimension from 2D to Cube and set the Render Texture’s Size__ to be exactly the dimensions of the individual faces of the source video.

For example, if you have a 4 x 3 horizontal cross cubemap layout video with dimensions 4096 x 3072, set the Render Texture’s Size to 1024 x 1024 (4096 / 4 and 3072 / 3).

While rendering to a Cube Target Texture, the Video Player assumes that the source video contains a cube map in either a cross or a strip layout (which it determines using the video aspect ratio). The Video Player then fills out the Render Texture’s faces with the correct cube faces.

Use the resulting Render Texture Cube as a Skybox. To do this, create a Material and assign Skybox/Cubemap as the Shader(Shader > Skybox > Cubemap A collection of six square textures that can represent the reflections in an environment or the skybox drawn behind your geometry. The six squares form the faces of an imaginary cube that surrounds an object; each face represents the view along the directions of the world axes (up, down, left, right, forward and back). More info
See in Glossary ) instead of the Skybox/Panoramic Material described above.

Video dimensions and transcoding

Including 3D content requires double either the width or the height of the video (corresponding to Side-by-Side or Over-Under layouts).

Keep in mind that many desktop hardware video decoders are limited to 4K resolutions and mobile hardware video decoders are often limited to 2K or less which limits the resolution of playback in real-time on those platforms.

You can use video transcoding to produce lower resolution versions of panoramic videos, but take precautions to avoid introducing bleeding at the edge between left and right 3D content, or, between cube map faces and adjacent black areas. In general, you should author video in power-of-two dimensions and transcoding to other power-of-two dimensions to reduce visual artifacts.

2017–10–25 Page published

Added 2D and 3D panoramic video support in 2017.3 NewIn20173

360 Video in Unity 5.6

Unity 5.6 introduced a bunch of great new features including a new video player. If you tried playing video in Unity 5.5, you know it’s a bit of a pain and generally requires an expensive plugin. I tried doing some Unity 360 Video projects in the past and ran into nothing but pain. I’m happy to say though that the latest version makes it much easier to render 360 video in Unity. The contents in this guide was written with the and in mind, but should be applicable to any setup.

Note on 3D 360

This post covers 360 video but not stereo 3D video.

How to get started

Before you can render 360 video, you’ll need a surface to render it on. Typically, we use a sphere with inverted normals (the sphere renders on the inside only).

Setup

Create a new scene

Drag your inverted sphere to the Hierarchy.

Reset it’s position to (0, 0, 0), if it’s not already.

Set the sphere’s scale to (-3000, 3000, 3000).

If you’re using a different sphere than the one provided above, you may need a different scale value.

Without the scale’s X value is set negative here, the video would appear backward

Reset your camera’s position to (0, 0, 0)

Select a 360 video to play.

You can shoot your own or download one..

I used this video to test – https://www.youtube.com/watch?v=a5goYOaPzAo, but most 360 videos should work.

If you aren’t sure how to download videos from youtube, this is the site I use to do it: http://keepvid.com/

Drag the video onto the sphere in the scene view.

Select the Inverted Sphere

You should see the Video Player component added to the sphere.

You’ll also see the Video Clip assigned with your 360 video.

Because Play on Awake is selected, you can just hit play now and watch your video start playing.

Play Controls

Ready to add some basic controls to the player?

Let’s add keyboard controls to pause and play the video.

Create a script named VideoPlayerInput.cs

Replace the contents with this:

Add the VideoPlayerInput component to the Sphere.

Press Play

Use the “Space” key to pause and resume playing of your video.

Conclusions

With Unity 5.6, playing video has become simple. You can play 2D video, 360 video, and even render video on any material you want (we used an inverted sphere, but you could attach it to a fire truck or whatever other model you pick really).

Try out all the new functionality, if you build something interesting, share it below!

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

Авторизуйтесь

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

Виртуальная реальность — это новое захватывающее направление в разработке приложений. Оно знаменует собой новые форматы сторителлинга и более действенные способы передачи эмоций и ощущений.

Если раньше для создания подобных приложений требовалось дорогое оборудование и специальные навыки, то сейчас разработка виртуальной реальности стала доступна благодаря интуитивно понятным инструментам и технике, которую можно найти в ближайшем магазине электроники. В этом руководстве мы разберём, как создать видео-приложение с обзором в 360 градусов для Android за десять минут. Навыки программирования не требуются.

Что понадобится

? Телефон с гироскопом под управлением Android KitKat или более новой версии.

4–5 декабря, Онлайн, Беcплатно

? 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 контролируют внешний вид объектов. Шейдеры — это небольшие скрипты, которые рассчитывают цвет каждого рендерированного пикселя, основываясь на информации о материале и освещении.

Читать еще:  10 игр, которые доказывают, что графика не имеет значения

Создадим новый материал для сферы, а к нему применим шейдер, код которого можно скопировать отсюда. Чтобы присвоить шейдер, выделите материал, в окне инспектора вверху раскройте список Shader. Выберите вкладку Custom. В открывшемся списке выберите ваш шейдер. Этот шейдер вывернет каждый пиксель сферы, и изнутри сфера будет выглядеть как большой белый шар.

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

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

Прим. ред. Если у вас нет собственного видео такого типа, можно использовать чужие заготовки, свободно распространяемые в Интернете.

Шаг 4: Настроить поддержку Google Cardboard ?

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

Для того чтобы добавить GoogleVR SDK к проекту, скачайте и импортируйте плагин. Далее скорректируйте настройки Android:

  1. В верхнем меню выберите File →Build Settings. Добавьте сцену, если она еще не была добавлена, а из предлагаемых платформ выберите Android.
  2. Нажмите на Switch Platform. Переключение платформы займёт некоторое время.
  3. Нажмите на 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. Для навигации пользователя по созданному окружению можно использовать этот скрипт.

Создание панорамных видео в Unity

Зачем нужны панорамные видео?

Большинство статей моего блога рассчитано на разработчиков игр. Если вы один из них, то можете задаться вопросом, чем вас может заинтересовать создание панорамных видео (360° videos). Виртуальная реальность — очень успешная отрасль, на различных платформах каждый год выпускается всё больше игр. Многие игроки узнают о VR-играх через трейлеры, которые, к сожалению, записаны в 2D.

Если вы хотите сделать ещё один шаг вперёд, то можете создать дополнительный трейлер в панорамном видео, чтобы продемонстрировать весь потенциал вашей игры. Хотя для игры в VR обычно требуется дорогая гарнитура, панорамные видео нативно поддерживаются YouTube без необходимости дополнительного оборудования. А если у вас есть телефон, то вы можете очень просто превратить его в VR-гарнитуру с помощью Google Cardboard.

Это может обеспечить людям гораздо более сильное погружение и дать почувствовать, в чём смысл вашей игры. Такие фильмы, как «Оно» (см. трейлер ниже) и «Заклятие» полностью воспользовались этим: для них создали VR-игры (с трейлерами в панорамном видео), обеспечившие более интерактивный опыт.

Наконец, панорамные видео отлично подходят для образовательных целей, это можно увидеть на примере All Discovered Exoplanets: A Narrated 360 VR Journey.

Разбираемся с панорамными видео

Скорее всего, вы знакомы с YouTube и с тем, как он работает. Однако панорамные видео знакомы не столь многим. Большинство видео записывается на камеру, фиксирующую только небольшую часть окружения. Панорамные видео же одновременно записывают всё, что происходит во всех направлениях. Обычно для этого требуются специальные камеры, называемые всенаправленными камерами. Они или используют кривые зеркала для отражения окружающего мира в традиционную камеру (почти так же, как объектив «рыбий глаз») или имеют несколько камер, смотрящих в разные направления. Одной из таких камер является GoPro Omni (см. ниже), которая по сути является устройством, содержащим шесть стандартных камер с объективами «рыбий глаз».

Легко понять, почему оборудование, необходимое для записи панорамных видео, обычно более дорогое по сравнению с традиционными камерами. Однако это не единственная причина, ограничивающая их распространение. Для правильного воспроизведения панорамных видео требуется специальное ПО и оборудование. Экраны, как и камеры, предназначены для воссоздания только небольшой части окружений. YouTube смог обойти это ограничение, позволив зрителям «поворачивать» видео, чтобы можно было осматриваться. Если вы смотрите панорамное видео с телефона или планшета, то обычно двигаете его в пространстве, чтобы увидеть разные части «сферы» на 360°.

YouTube поддерживает два типа панорамных видео: моно и стерео (последние часто называют видео в виртуальной реальности). Разница между ними заключается в том, что стереовидео предназначено для VR-гарнитур и может передать ощущение глубины, которое невозможно почувствовать в традиционных видео. Это реализуется наличием не одного, а двух видео, по одному для каждого глаза. Эти два видео одновременно записываются двумя камерами, расстояние между которыми сравнимо с расстоянием между глазами. В результате этого VR-видео могут «обмануть» мозг и он будет воспринимать истинное расстояние, как в повседневной жизни.

В таблице показаны требования, которые имеют эти два типа видео.

Название360° videoVirtual Reality Video
МоноСтерео
2D3D
СсылкаПоддержкаПоддержка
Частота кадров24, 25, 30, 48, 50, 6025, 30, 50, 60
ФорматРавнопромежуточный
Соотношение сторон 2:1
Выше-ниже равнопромежуточного
Соотношение сторон 1:1
РазрешениеРекомендуемое: 7168 x 3584, до 8192 x 4096От 5120 x 5120 до 8192 x 8192

Учтите, что YouTube постоянно работает над усовершенствованием поддержки панорамных видео, поэтому в будущем всё может измениться. Прежде чем следовать этим спецификациям, прочитайте информацию по ссылкам из таблицы.

Проецирование видео

Первая сложность панорамных видео заключается в том, чтобы закодировать сферу в плоскую поверхность. Это необходимо, потому что несмотря на то, что всенаправленные камеры могут записывать во всех направлениях, каждый кадр всё равно нужно преобразовывать в традиционное плоское изображение.

Существует множество способов преобразования (строго говоря, проецирования) сферы на прямоугольник. Вероятно, наиболее известный — это цилиндрическая проекция, ставшая популярной после того, как картограф Герард Меркатор начал в 1569 году использовать её для преобразования поверхности планеты в плоские карты.

Однако чаще всего в панорамных видео используется равнопромежуточная проекция (см. ниже).

Пространственный звук

Панорамные видео, как моно, так и стерео, могут поддерживать пространственный звук. В стандартных видео есть два аудиоканала (левый и правый), которые используются для создания ощущения направления при прослушивании в стереонаушниках. Пространственный звук позволяет кодировать истинное направление источника звука, а не просто лево/право. Это значит, что при наличии соответствующего оборудования можно ощущать полное погружение и понимать направления окружающих звуков.

Несмотря на своё название, VR-видео не так хороши, как «настоящие» VR-игры, потому что даже если VR-гарнитура способна отслеживать движения головы, видео отрендерено из фиксированной точки. Невозможно переместиться и увидеть, что находится за объектом, как это было бы в VR-игре. Это может немного дезориентировать, особенно в сочетании с пространственным звуком. Когда вы долго работаете над VR-проектом (игрой или видео), то можете к этому привыкнуть. Важно провести достаточно подробный плейтестинг, чтобы гарантировать удобство готового продукта и найти ограничения, вызывающие дискомфорт у игроков или зрителей.

Панорамное видео не обязательно должно иметь пространственный звук. YouTube поддерживает два формата:

  • First-Order Ambisonics
  • First-Order Ambisonics with Head-Locked Stereo

Ambisonics — это формат звука, используемый для записи не только звука, но и направления, из которого он поступает. First-Order Ambisonics (FOA) для кодирования направленности источника звука использует четыре аудиоканала. Чтобы приблизительно понять, как это работает, скажу, что запись звука FOA немного напоминает запись четырьмя микрофонами. Обычно ошибочно представляют, что эти четыре микрофона расположены в кардинальных точках (один перед зрителем, другой позади, третий слева и четвёртый справа). Ambisonics работает не так, но об этом мы сможем поговорить в других постах.

Хоть FOA использует 4 канала, YouTube поддерживает и шестиканальную версию, в которую просто добавлены традиционные левый и правый стереоканалы. Этот формат называется FOA with Head-Locked Stereo.

Особое внимание нужно уделить кодированию панорамного видео (стерео или моно), потому что не все форматы поддерживают 4 или 6 аудиоканалов. YouTube рекомендует следующее:

  • Формат: MP4, MOV
  • Кодек: H.264, ProRes, DNxHR

Если вы работаете в Premiere Pro 2018 или более новой версии, то лучше всего кодировать видео как Quicktime кодеком ProRes. Подробнее о поддерживаемых YouTube форматах пространственного звука можно прочитать здесь.

Читать еще:  Всеволод Бедерсон: «Хорошие люди в плохих условиях: некоммерческие организации в путинской России»

Как создать панорамное видео в Unity

Одной из множества функций, добавленных в Unity 2018.1, стала возможность делать скриншоты из камеры в формате, совместимом с панорамными видео YouTube. Эта функция вкратце описана в посте на веб-сайте Unity: Stereo 360 Image and Video Capture. К сожалению, в нём нет ссылки на сцену для тестирования.

Теория

Чаще всего ролики по играм записываются во время выполнения игры. Это подходит для стандартных видео, но обычно не подходит для панорамных. Основная причина заключается в том, что для рендеринга панорамной игры требуется гораздо большая площадь, из-за чего частота кадров сильно падает. Более стандартным подходом является рендеринг и экспорт каждого кадра в фоновом режиме, чтобы в дальнейшем их можно было отредактировать в стороннем ПО, например, ffmpeg или Premiere Pro. Именно этим мы и займёмся в нашем туториале.

Рендеринг панорамной сцены в Unity — довольно простой процесс, состоящий из трёх этапов:

  • Рендеринг сцены в текстуру кубической карты (предпочтительный в Unity формат для панорамных текстур)
  • Преобразование кубической карты в равнопромежуточную проекцию (предпочтительный для панорамных видео YouTube формат)
  • Сохранение равнопромежуточной проекции в PNG

Первые два этапа необходимы из-за особенностей работы камер в Unity.

Если вы знакомы с Unity, то, вероятно, знаете, что предпочтительный способ хранения панорамных текстур — это кубическая карта, которая является способом упаковки шести разных изображений без деформаций (см. ниже). Кубические карты часто используются для скайбоксов (skybox) и зондов отражений (reflection probes), поэтому есть вероятность, что вы уже с ними сталкивались.

Чтобы создать панорамную текстуру, Unity рендерит сцену шесть раз, каждый раз под другим углом. Камера поворачивается так, как будто совпадает с одной из шести граней куба. В результате каждый панорамный скриншот является шестью традиционными, соединёнными вместе.

После заполнения кубической карты второй этап заключается в преобразовании её в формат, совместимый с YouTube. Как мы видели ранее, YouTube требует панорамные видео в равнопромежуточной проекции. Для такого преобразования обычно требуется кодирование сложных шейдеров, но, к счастью, в Unity была добавлена функция специально для этого.

Последним этапом будет экспорт равнопромежуточной текстуры в файл PNG. После рендеринга всех кадров видео можно объединить их при помощи программы наподобие ffmpeg или Premiere Pro.

Первым шагом будет создание скрипта (в представленных ниже фрагментах он называется Camera360 ) и прикрепление его к камере, которая должна выполнять рендеринг. Однако код будет меняться в зависимости от того, хотим ли мы отрендерить видео в моно (360°/mono/2D) или в стерео (VR/stereo/3D).

Давайте начнём с моноверсии:

Показанный выше скрипт рендерит каждый кадр в render texture под названием Equirect , которая будет содержать панорамный скриншот, сохранённый в равнопромежуточной проекции.

Значение 63 , использованное в методе RenderToCubemap , означает, что мы хотим делать скриншоты со всех шести граней куба.

И EyeCubemap , и EquirectTexture можно создать или в редакторе, или в коде.

Стерео

Код стереоверсии очень похож, но требует дополнительного шага:

Для рендеринга стереоизображения нужно отрендерить две кубические карты. stereoSeparation задаёт расстояние между этими кубическими картами. Стандартное значение — 64 мм, что примерно равно расстоянию между левым и правым глазом.

Создание и сохранение текстур

Два представленных выше фрагмента кода просто выполняют запись в текстуру, но никуда её не сохраняют. Если мы хотим, чтобы кадры сохранялись на диск, то это нужно делать вручную.

К сожалению, экспорт render texture в файл PNG — не такой простой процесс, каким он должен быть. Первая проблема заключается в том, что Unity не позволяет напрямую получать доступ к отдельным пикселям RenderTexture . Сначала render texture нужно скопировать в объект Texture2D .

Фрагмент кода ниже выполняет именно эту задачу, при помощи метода ReadPixels копирует пиксели из текущей активной render texture.

При условии, что FileName содержит правильный путь к файлу PNG, представленный выше код выполнит всё необходимое. Нужно будет внести только одно небольшое изменение: сделать так, чтобы скрипт снова и снова не перезаписывал один и тот же файл. Для этого достаточно просто добавить к имени файла счётчик, чтобы многократного переписывания frame.png он выполнял запись в frame_0.png , frame_1.png , и так далее.

Проблемы

У этого решения есть и проблемы. Самая важная из них заключается в том, что некоторые эффекты постобработки могут работать не так, как задумано.

Производительность

Рендеринг панорамных кадров в Unity — очень затратная задача. В предложенном мной решении сцена рендерится 6 или 12 раз (в зависимости от формата видео — моно или стерео). Постобработка, необходимая для соединения изображений и сохранения каждого кадра на диск, может снизить производительность в 10-15 раз. Если вы рендерите видео в высоком качестве (8192×8192 пикселя), то каждый отдельный кадр может иметь размер более 100 МБ. Очевидно, что если вы не обладаете очень мощной машиной, то не сможете одновременно выполнять игру в реальном времени и экспортировать панорамные кадры.

Постобработка

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

Аналогично этому, эффекты размытия и bloom тоже вызывают ошибки по краям, демонстрируя существование швов. Простых решений этой проблемы нет, потому что ни один из созданных Unity стеков постобработки не предназначен для работы с панорамными изображениями.

Тем не менее, эффекты размытия и bloom всё равно можно применять в умеренной форме. Если вам необходимы эти эффекты, то лучше всего будет применить их в постпродакшене при помощи Premiere Pro.

Line Renderers

Огромная проблем панорамных изображений заключается в том, что могут некорректно отображаться line renderers. Если линия настроена так, что она постоянно должна смотреть на камеру, то при рендеринге её в панорамном изображении Unity просто отбросит её. Это чрезвычайно раздражает, потому что реальных причин для этого нет.

Unity разработала альтернативную версию line renderer под названием XRLineRenderer, которая работает корректно. Хоть она и не поддерживает все функции стандартного компонента Line Renderer, большинство функций вам реализовать удастся

У XRLineRenderer также имеется возможность создания простых эффектов свечения, что может снизить важность описанных в предыдущем разделе проблем.

Unity и панорамное видео

Разрабатывайте поистине захватывающий контент на ведущей платформе, поддерживающей панорамное видео. Инструменты и рабочий процесс Unity позволяют с легкостью добавлять в реальном времени CG-объекты, пространственный звук, визуальные эффекты и многое другое.

The power of VR storytelling

  • Разрабатывайте интерактивные декорации, сюжеты и цели.
  • Создавайте симуляцию движений.
  • Создавайте нелинейные сюжеты и альтернативные концовки.
  • Разбивайте интерфейс на меню и виджеты.
  • Задавайте контекст с помощью стартовых лобби.

Отмеченные наградами панорамные видео, созданные с помощью Unity

Waves

Метапрыжок в кроличью нору

Единственные постоянные в этом сумасшедшем VR-путешествии от Редджи Ваттса — это его философские размышления, юмористические идеи и музыкальная гениальность.

Лучшее живое представление, Proto Awards | Номинант Sundance Film Festival 2016

Out of the Blue

Невероятная жертва

Впечатляющая полностью интерактивная VR-история рассказывает о семье рыбаков, принявших сложное решение — спасти жителей океана.

Номинант кинофестивалей 2017 SXSW, Kaleidoscope и фестиваля Earth Day Texas

Heroes

В мире двух танцоров

2D-, VR- и AR-клип с танцем на легендарную песню Дэвида Боуи.

Номинант Sundance Film Festival 2017 и VR Village SIGGRAPH 2017.

Pharos VR

Станьте участником этого рэп-клипа

Актер и музыкант Дональд Гловер, он же Childish Gambino, выпустил этот альбом для гарнитуры Pharos VR, чтобы вы могли погрузиться в его музыку совершенно по-новому.

Номинант конкурса Vision VR/AR 2017.

  • Добавляйте графику и визуальные эффекты в одно мгновение
  • Управляйте скоростью воспроизведения и зацикливанием одним щелчком
  • Сотрудничайте с разработчиками в Unity Connect
  • Получайте советы участников сообщества, ресурсы и идеи
  • Публикуйтесь на всех новейших VR-платформах.
  • Обновляйте проекты без повторной загрузки.
  • Создайте собственное приложение.
  • Получайте поддержку по кодекам, форматам и устройствам.
  • Перенесите свои миры в AR, MR и другие медиапространства.

«У Unity есть все шансы перевернуть мир постпродакшена».

«На мой взгляд, инструменты для создания панорам/VR должны давать возможность придумывать, экспериментировать и творить, и Unity — как раз такой инструмент».

  • Видеоплеер
  • Интерфейсные и графические объекты
  • Timeline
  • Источники пространственного звука
Раскройте весь потенциал панорамного видео
  • Создавайте сцены, мгновенно импортируя любые панорамные клипы.
  • Зацикливайте клипы, управляйте скоростью воспроизведения и другими параметрами благодаря видеоплееру Unity.
  • Используйте наш новый панорамный шейдер Skybox.
Создавайте яркие истории
  • Создавайте и изменяйте меню, текст, кнопки, виджеты и оверлеи, которые сделают ваши панорамные творения увлекательнее.
  • Добавляйте частицы, анимации и графические объекты для оживления сцены.
  • Реализуйте интерактивность с помощью конечных автоматов, логики поведения и т. д.
Сосредоточьтесь на повествовании
  • Используйте инструмент линейного монтажа для синхронизации и смешивания анимаций объектов, событий и звуков.
  • Создайте трейлер за мгновения, используя запись и экспорт.
  • Используйте функцию Control Track для управления многодорожечными интерфейсами.
Создайте ощущение присутствия
  • Реализуйте полноценный пространственный звук в видео с помощью пространственных звуковых клипов и плагинов декодирования.
  • Меняйте ориентацию звуковых полей в соответствии с пространственным положением пользователя, усиливая впечатления.

Крупнейший магазин панорамных видеоресурсов и инструментов

Helios

Создавайте прекрасные 3D-видео

Когда на вашей сцене включен Helios, вы можете автоматически создавать прекрасные 3D-видео с аудио и загружать их на популярные сайты вроде YouTube, VRideo, Milk VR и Facebook.

VR Easy

Эффективный набор инструментов для работы с VR

Этот ресурс позволяет архитекторам, разработчикам и инженерам строить VR-окружения с помощью простого перетаскивания (как в виджетах). Ресурс поддерживает все основные HMD-устройства, такие как Oculus, HTC Vive, Gear VR, Cardboard, Daydream.

Рендерер Panorama 360 Pro

Проверенная в деле рендеринговая система для работы вне сети

Эта система позволяет экспортировать 360- и 180-градусные стереопанорамы и видео с качеством до 8K. Это быстрый и простой способ отрисовки полностью функциональных стереоскопических 360-градусных панорамных видео и последовательностей изображений для VR.

Источники:

http://russianblogs.com/article/920962355/

http://docs.unity3d.com/Manual/VideoPanoramic.html

360 Video in Unity 5.6

http://tproger.ru/translations/create-vr-app-on-android/

http://habr.com/ru/post/512380/

http://unity.com/ru/solutions/360video

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector