306. Смешанная реальность и Azure: потоковое видеоMR and Azure 306: Streaming video


Примечание

Руководства Mixed Reality Academy были разработаны для иммерсивных гарнитур HoloLens (1-го поколения) и иммерсивных гарнитур Mixed Reality.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. Поэтому мы считаем, что важно оставить эти руководства для разработчиков, которые ищут рекомендации по разработке для этих устройств.As such, we feel it is important to leave these tutorials in place for developers who are still looking for guidance in developing for those devices. Данные руководства не будут обновляться с учетом последних наборов инструментов или возможностей взаимодействия для HoloLens 2.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. Они будут сохранены для работы на поддерживаемых устройствах.They will be maintained to continue working on the supported devices. Появится новая серия руководств, которые будут опубликованы в будущем, где будет показано, как разрабатывать данные для HoloLens 2.There will be a new series of tutorials that will be posted in the future that will demonstrate how to develop for HoloLens 2. Это уведомление будет обновлено ссылкой на эти учебники при их публикации.This notice will be updated with a link to those tutorials when they are posted.


окончательный продукт. запуск  окончательного продукта — запускfinal product -start final product -start

В этом курсе вы узнаете, как подключить службы мультимедиа Azure к операционной системе Windows Mixed Reality, чтобы разрешить воспроизведение видео в режиме потоковой передачи 360 на впечатляющих наушниках.In this course you will learn how connect your Azure Media Services to a Windows Mixed Reality VR experience to allow streaming 360 degree video playback on immersive headsets.

Службы мультимедиа Azure — это набор служб, которые предоставляют высококачественные службы потоковой передачи видео для достижения больших аудиторий на современных наиболее популярных мобильных устройствах.Azure Media Services are a collection of services that gives you broadcast-quality video streaming services to reach larger audiences on today’s most popular mobile devices. Дополнительные сведения см. на странице служб мультимедиа Azure.For more information, visit the Azure Media Services page.

Прополнив этот курс, вы получите иммерсивное приложение для наушников, которое сможет сделать следующее:Having completed this course, you will have a mixed reality immersive headset application, which will be able to do the following:

  1. Получите видео 360 градусов из службы хранилища Azure через службу мультимедиа Azure.Retrieve a 360 degree video from an Azure Storage, through the Azure Media Service.

  2. Отобразить полученное видео 360 градусов в сцене Unity.Display the retrieved 360 degree video within a Unity scene.

  3. Переход между двумя сценами с двумя различными видео.Navigate between two scenes, with two different videos.

В приложении вы будете выполнять интеграцию результатов с вашей структурой.In your application, it is up to you as to how you will integrate the results with your design. Этот курс предназначен для изучения того, как интегрировать службу Azure с проектом Unity.This course is designed to teach you how to integrate an Azure Service with your Unity Project. Это ваша задача использовать знания, полученные из этого курса, для улучшения приложения смешанной реальности.It is your job to use the knowledge you gain from this course to enhance your mixed reality application.

Поддержка устройствDevice support

КурсCourse HoloLensHoloLens Иммерсивные гарнитурыImmersive headsets
306. Смешанная реальность и Azure: потоковое видеоMR and Azure 306: Streaming video ✔️✔️

Предварительные требованияPrerequisites

Примечание

Этот учебник предназначен для разработчиков, имеющих базовый опыт работы с Unity и C#.This tutorial is designed for developers who have basic experience with Unity and C#. Также имейте в виду, что предварительные требования и письменные инструкции в этом документе отражают, что проверялось и проверено во время написания статьи (Май 2018).Please also be aware that the prerequisites and written instructions within this document represent what has been tested and verified at the time of writing (May 2018). Вы можете использовать новейшее программное обеспечение, как указано в статье Установка средств, но не следует предполагать, что информация в этом курсе будет полностью соответствовать тому, что вы найдете в более новом программном обеспечении, чем показано ниже.You are free to use the latest software, as listed within the install the tools article, though it should not be assumed that the information in this course will perfectly match what you'll find in newer software than what's listed below.

Для этого курса рекомендуется следующее оборудование и программное обеспечение:We recommend the following hardware and software for this course:

Перед началом работыBefore you start

  1. Чтобы избежать проблем при создании этого проекта, настоятельно рекомендуется создать проект, упомянутый в этом руководстве, в корневой или ближайшем к корневой папке (длинные пути к папкам могут вызвать проблемы во время сборки).To avoid encountering issues building this project, it is strongly suggested that you create the project mentioned in this tutorial in a root or near-root folder (long folder paths can cause issues at build-time).

  2. Настройка и тестирование иммерсивного наушников смешанной реальности.Set up and test your Mixed Reality Immersive Headset.

    Примечание

    Для этого курса не потребуется использовать контроллеры движения.You will not require Motion Controllers for this course. Если вам нужна поддержка настройки иммерсивного головного телефона, щелкните ссылку, чтобы настроить Windows Mixed Reality.If you need support setting up the Immersive Headset, please click link on how to set up Windows Mixed Reality.

Глава 1. Создание учетной записи хранения Azure с помощью портала AzureChapter 1 - The Azure Portal: creating the Azure Storage Account

Чтобы использовать службу хранилища Azure, вам потребуется создать и настроить учетную запись хранения в портал Azure.To use the Azure Storage Service, you will need to create and configure a Storage Account in the Azure portal.

  1. Войдите на портал Azure.Log in to the Azure Portal.

    Примечание

    Если у вас еще нет учетной записи Azure, необходимо создать ее.If you do not already have an Azure account, you will need to create one. Если вы используете этот учебник в учебной или лабораторной ситуации, обратитесь к своему преподавателю или к одной из прокторс, чтобы получить помощь в настройке новой учетной записи.If you are following this tutorial in a classroom or lab situation, ask your instructor or one of the proctors for help setting up your new account.

  2. После входа в меню слева щелкните учетные записи хранения .Once you are logged in, click on Storage accounts in the left menu.

    Настройка учетной записи хранения Azure

  3. На вкладке учетные записи хранения щелкните Добавить.On the Storage Accounts tab, click on Add.

    Настройка учетной записи хранения Azure

  4. На вкладке Создание учетной записи хранения выполните следующие действия.In the Create storage account tab:

    1. Введите имя для своей учетной записи. Имейте в виду, что это поле принимает только цифры и строчные буквы.Insert a Name for your account, be aware this field only accepts numbers, and lowercase letters.

    2. В качестве модели развертывания выберите Resource Manager.For Deployment model, select Resource manager.

    3. В качестве типа учетной записи выберите хранилище (общее назначение v1).For Account kind, select Storage (general purpose v1).

    4. Для повышения производительности выберите **стандартный *.**For Performance, select Standard*.

    5. Для репликации выберите локально избыточное хранилище (LRS).For Replication select Locally-redundant storage (LRS).

    6. Оставьте защищенное перемещение обязательным , как отключено.Leave Secure transfer required as Disabled.

    7. Выберите подписку.Select a Subscription.

    8. Выберите группу ресурсов или создайте новую.Choose a Resource group or create a new one. Группа ресурсов предоставляет способ мониторинга, контроля доступа, подготовки счетов и управления ими для коллекции ресурсов Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets.

    9. Определите Расположение группы ресурсов (при создании новой группы ресурсов).Determine the Location for your resource group (if you are creating a new Resource Group). В идеале это расположение будет находиться в регионе, в котором будет выполняться приложение.The location would ideally be in the region where the application would run. Некоторые ресурсы Azure доступны только в определенных регионах.Some Azure assets are only available in certain regions.

  5. Необходимо подтвердить, что вы поняли условия, примененные к этой службе.You will need to confirm that you have understood the Terms and Conditions applied to this Service.

    Настройка учетной записи хранения Azure

  6. После нажатия кнопки создать необходимо подождать, пока не будет создана служба, а это может занять некоторое время.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  7. После создания экземпляра службы на портале отобразится уведомление.A notification will appear in the portal once the Service instance is created.

    Настройка учетной записи хранения Azure

  8. На этом этапе вам не нужно следовать за ресурсом, просто перейдите к следующей главе.At this point you do not need to follow the resource, simply move to the next Chapter.

Глава 2. Создание службы мультимедиа на портале AzureChapter 2 - The Azure Portal: creating the Media Service

Чтобы использовать службу мультимедиа Azure, необходимо настроить экземпляр службы, чтобы сделать ее доступной для приложения (где владелец учетной записи должен быть администратором).To use the Azure Media Service, you will need to configure an instance of the service to be made available to your application (wherein the account holder needs to be an Admin).

  1. На портале Azure щелкните создать ресурс в левом верхнем углу экрана и найдите службу мультимедиа, нажав клавишу Ввод.In the Azure Portal, click on Create a resource in the top left corner, and search for Media Service, press Enter. В настоящий момент ресурс имеет розовый значок; Щелкните здесь, чтобы отобразить новую страницу.The resource you want currently has a pink icon; click this, to show a new page.

    портал Azure;

  2. На новой странице будет представлено описание службы мультимедиа.The new page will provide a description of the Media Service. В нижнем левом углу этого запроса нажмите кнопку " создать ", чтобы создать связь с этой службой.At the bottom left of this prompt, click the Create button, to create an association with this service.

    портал Azure;

  3. После нажатия кнопки создать панель появится место, где необходимо указать сведения о новой службе мультимедиа.Once you have clicked on Create a panel will appear where you need to provide some details about your new Media Service:

    1. Вставьте имя нужной учетной записи для этого экземпляра службы.Insert your desired Account Name for this service instance.

    2. Выберите подписку.Select a Subscription.

    3. Выберите группу ресурсов или создайте новую.Choose a Resource Group or create a new one. Группа ресурсов предоставляет способ мониторинга, контроля доступа, подготовки счетов и управления ими для коллекции ресурсов Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. Рекомендуется, чтобы все службы Azure, связанные с одним проектом (например, в этих лабораториях), были в общей группе ресурсов.It is recommended to keep all the Azure services associated with a single project (e.g. such as these labs) under a common resource group).

    Если вы хотите ознакомиться с дополнительными сведениями о группах ресурсов Azure, перейдите по этой ссылке, чтобы управлять группами ресурсов Azure.If you wish to read more about Azure Resource Groups, please follow this link on how to manage Azure Resource Groups.

    1. Определите Расположение группы ресурсов (при создании новой группы ресурсов).Determine the Location for your resource group (if you are creating a new Resource Group). В идеале это расположение будет находиться в регионе, в котором будет выполняться приложение.The location would ideally be in the region where the application would run. Некоторые ресурсы Azure доступны только в определенных регионах.Some Azure assets are only available in certain regions.

    2. В разделе учетная запись хранения щелкните раздел выберите... , а затем щелкните учетную запись хранения , созданную в последней главе.For the Storage Account section, click the Please select... section, then click the Storage Account you created in the last Chapter.

    3. Также необходимо подтвердить, что вы поняли условия, примененные к этой службе.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    4. Нажмите кнопку Создать.Click Create.

      портал Azure;

  4. После нажатия кнопки создать необходимо подождать, пока не будет создана служба, а это может занять некоторое время.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  5. После создания экземпляра службы на портале отобразится уведомление.A notification will appear in the portal once the Service instance is created.

    портал Azure;

  6. Щелкните уведомление, чтобы просмотреть новый экземпляр службы.Click on the notification to explore your new Service instance.

    портал Azure;

  7. Нажмите кнопку " Переход к ресурсу " в уведомлении, чтобы изучить новый экземпляр службы.Click the Go to resource button in the notification to explore your new Service instance.

  8. На странице Новая служба мультимедиа на панели слева щелкните ссылку ресурсы , что находится примерно в середине.Within the new Media service page, within the panel on the left, click on the Assets link, which is about halfway down.

  9. На следующей странице в левом верхнем углу страницы щелкните Отправить.On the next page, in the top-left corner of the page, click Upload.

    портал Azure;

  10. Щелкните значок папки , чтобы просмотреть файлы и выбрать первое 360 видео, которое требуется передать в поток.Click on the Folder icon to browse your files and select the first 360 Video that you would like to stream.

    Можно перейти по этой ссылке, чтобы скачать пример видео.You can follow this link to download a sample video.

    портал Azure;

Предупреждение

Длинные имена файлов могут вызвать проблемы с кодировщиком: так, чтобы в видеороликах не было проблем, рекомендуется сократить длину имен видеофайлов.Long filenames may cause an issue with the encoder: so to ensure videos do not have issues, consider shortening the length of your video file names.

  1. Индикатор выполнения будет зеленым после отправки видео.The progress bar will turn green when the video has finished uploading.

    портал Azure;

  2. Щелкните приведенный выше текст (йоурсервиценаме-Assets), чтобы вернуться на страницу " активы ".Click on the text above (yourservicename - Assets) to return to the Assets page.

  3. Вы увидите, что видео успешно отправлено.You will notice that your video has been successfully uploaded. Щелкните ее.Click on it.

    портал Azure;

  4. На странице, на которую вы перенаправляетесь, отобразятся подробные сведения о видео.The page you are redirected to will show you detailed information about your video. Чтобы иметь возможность использовать видео, необходимо его кодировать, нажав кнопку " Кодировка " в верхней левой части страницы.To be able to use your video you need to encode it, by clicking the Encode button at the top-left of the page.

    портал Azure;

  5. Справа появится новая панель, где можно будет задать параметры кодировки для файла.A new panel will appear to the right, where you will be able to set encoding options for your file. Задайте следующие свойства (некоторые будут уже заданы по умолчанию):Set the following properties (some will be already set by default):

    1. Имя кодировщика мультимедиа Media Encoder StandardMedia encoder name Media Encoder Standard

    2. Кодирование предустановленного содержимого Адаптивная многоскоростная скорость MP4Encoding preset Content Adaptive Multiple Bitrate MP4

    3. Имя задания , Media Encoder Standard обработка Video1.mp4Job name Media Encoder Standard processing of Video1.mp4

    4. Имя выходного ресурса мультимедиа Video1.mp4--Media Encoder Standard в кодировкеOutput media asset name Video1.mp4 -- Media Encoder Standard encoded

      портал Azure;

  6. Нажмите кнопку Создать .Click the Create button.

  7. Вы увидите строку с добавленным заданием кодирования, щелкните эту панель, и появится панель со сведениями о ходе кодирования.You will notice a bar with Encoding job added, click on that bar and a panel will appear with the Encoding progress displayed in it.

    портал Azure;

    портал Azure;

  8. Дождитесь завершения задания.Wait for the Job to be completed. После этого вы можете закрыть панель с крестиком в правом верхнем углу этой панели.Once it is done, feel free to close the panel with the 'X' at the top right of that panel.

    портал Azure;

    портал Azure;

    Важно!

    Время, необходимое для этого, зависит от размера файла видео.The time this takes, depends on the file size of your video. Этот процесс может занять довольно много времени.This process can take quite some time.

  9. Теперь, когда закодированная версия видео создана, ее можно опубликовать, чтобы сделать доступной.Now that the encoded version of the video has been created, you can publish it to make it accessible. Для этого щелкните ссылку "синие ресурсы ", чтобы вернуться на страницу "активы".To do so, click the blue link Assets to go back to the assets page.

    портал Azure;

  10. Вы увидите видео вместе с другим, который относится к типу ресурса с несколькими скоростями MP4.You will see your video along with another, which is of Asset Type Multi-Bitrate MP4.

    портал Azure;

    Примечание

    Вы можете заметить, что новый ресурс, рядом с исходным видео, неизвестен и имеет значение 0 байт для его размера. просто обновите окно, чтобы обновить его.You may notice that the new asset, alongside your initial video, is Unknown, and has '0' bytes for it's Size, just refresh your window for it to update.

  11. Щелкните этот новый ресурс.Click this new asset.

    портал Azure;

  12. Вы увидите аналогичную панель, которая использовалась ранее, а только это другой ресурс.You will see a similar panel to the one you used before, just this is a different asset. Нажмите кнопку опубликовать , расположенную в верхней части страницы.Click the Publish button located at the top-center of the page.

    портал Azure;

  13. Вам будет предложено задать указатель, который является точкой входа, к файлу/s в ваших ресурсах.You will be prompted to set a Locator, which is the entry point, to file/s in your Assets. Для сценария задайте следующие свойства:For your scenario set the following properties:

    1. Тип указателя > Прогрессивный.Locator type > Progressive.

    2. Дата и время будут установлены для вас, от текущей даты до времени в будущем (в данном случае 100 лет).The date and time will be set for you, from your current date, to a time in the future (one hundred years in this case). Оставьте "как есть" или измените его на "масть".Leave as is or change it to suit.

    Примечание

    Дополнительные сведения об указателях и о том, что можно выбрать, см. в документации по службам мультимедиа Azure.For more information about Locators, and what you can choose, visit the Azure Media Services Documentation.

  14. В нижней части этой панели нажмите кнопку Добавить .At the bottom of that panel, click on the Add button.

    портал Azure;

  15. Теперь ваше видео Опубликовано, и его можно перепотокировать с помощью конечной точки.Your video is now published and can be streamed by using its endpoint. Ниже приведен раздел « файлы ».Further down the page is a Files section. Именно здесь будут использоваться разные закодированные версии вашего видео.This is where the different encoded versions of your video will be. Выберите наибольшее возможное разрешение (на изображении ниже, это файл 1920x960), после чего появится панель справа.Select the highest possible resolution one (in the image below it is the 1920x960 file), and then a panel to the right will appear. Здесь вы найдете URL-адрес для скачивания.There you will find a Download URL. Скопируйте эту конечную точку , так как она будет использоваться позже в коде.Copy this Endpoint as you will use it later in your code.

    портал Azure;

    портал Azure;

    Примечание

    Можно также нажать кнопку Воспроизведение , чтобы воспроизвести видео и протестировать его.You can also press the Play button to play your video and test it.

  16. Теперь необходимо отправить второе видео, которое будет использоваться в этой лаборатории.You now need to upload the second video that you will use in this Lab. Выполните описанные выше действия, повторив тот же процесс для второго видео.Follow the steps above, repeating the same process for the second video. Убедитесь, что вы также скопировали вторую конечную точку .Ensure you copy the second Endpoint also. Чтобы скачать второе видео, используйте следующую ссылку.Use the following link to download a second video.

  17. После публикации обоих видео вы можете перейти к следующей главе.Once both videos have been published, you are ready to move to the next Chapter.

Глава 3. Настройка проекта UnityChapter 3 - Setting up the Unity Project

Ниже приведена типичная Настройка для разработки с использованием смешанной реальности, которая является хорошим шаблоном для других проектов.The following is a typical set up for developing with the Mixed Reality, and as such, is a good template for other projects.

  1. Откройте Unity и нажмите кнопку создать.Open Unity and click New.

    портал Azure;

  2. Теперь необходимо указать имя проекта Unity, вставить MR _ 360VideoStreaming..You will now need to provide a Unity Project name, insert MR_360VideoStreaming.. Убедитесь, что для типа проекта задано значение 3D.Make sure the project type is set to 3D. Задайте для расположения нужное расположение (Помните, что ближе к корневым каталогам лучше).Set the Location to somewhere appropriate for you (remember, closer to root directories is better). Затем нажмите кнопку создать проект.Then, click Create project.

    портал Azure;

  3. При открытом Unity стоит проверить, что для редактора скриптов по умолчанию задано значение Visual Studio.With Unity open, it is worth checking the default Script Editor is set to Visual Studio. Перейдите к разделу изменение настроек , а затем в новом окне перейдите к разделу Внешние инструменты.Go to Edit Preferences and then from the new window, navigate to External Tools. Измените Редактор внешних скриптов на Visual Studio 2017.Change External Script Editor to Visual Studio 2017. Закройте окно настройки .Close the Preferences window.

    портал Azure;

  4. Затем перейдите в раздел параметры сборки файлов и переключите платформу на универсальная платформа Windows, нажав кнопку коммутатора на платформе .Next, go to File Build Settings and switch the platform to Universal Windows Platform, by clicking on the Switch Platform button.

  5. Также убедитесь, что:Also make sure that:

    1. Целевое устройство настроено для любого устройства.Target Device is set to Any Device.

    2. Для типа сборки задано значение D3D.Build Type is set to D3D.

    3. Пакет SDK установлен в значение " Последняя установка".SDK is set to Latest installed.

    4. Установлена последняя установленная версия Visual Studio .Visual Studio Version is set to Latest installed.

    5. Сборка и запуск настроены на локальный компьютер.Build and Run is set to Local Machine.

    6. Не беспокойтесь о настройке сцен прямо сейчас, так как они будут настроены позже.Do not worry about setting up Scenes right now, as you will set these up later.

    7. Остальные параметры должны остаться в данный момент по умолчанию.The remaining settings should be left as default for now.

      Настройка проекта Unity

  6. В окне параметры сборки нажмите кнопку Параметры проигрывателя , чтобы открыть связанную панель в пространстве, где находится инспектор .In the Build Settings window, click on the Player Settings button, this will open the related panel in the space where the Inspector is located.

  7. На этой панели необходимо проверить несколько параметров:In this panel, a few settings need to be verified:

    1. На вкладке другие параметры выполните следующие действия.In the Other Settings tab:

      1. Версия среды выполнения сценариев должна быть стабильной (эквивалент .NET 3,5).Scripting Runtime Version should be Stable (.NET 3.5 Equivalent).

      2. Серверная часть сценариев должна быть .NET.Scripting Backend should be .NET.

      3. Уровень совместимости API должен быть .NET 4,6.API Compatibility Level should be .NET 4.6.

        Настройка проекта Unity

    2. На более низких панели в параметрах XR (см. ниже Параметры публикации), поддерживаемая виртуальная реальность Tick, убедитесь, что добавлен пакет SDK для Windows Mixed Reality .Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added.

      Настройка проекта Unity

    3. На вкладке Параметры публикации в разделе возможности установите флажок:Within the Publishing Settings tab, under Capabilities, check:

      • InternetClient;InternetClient

        Настройка проекта Unity

  8. После внесения этих изменений закройте окно параметры сборки .Once you have made those changes, close the Build Settings window.

  9. Сохраните проект *файл * сохранить проект * *.Save your Project *File *Save Project**.

Глава 4. Импорт пакета Unity ИнсидеаутсфереChapter 4 - Importing the InsideOutSphere Unity package

Важно!

Если вы хотите пропустить компонент установки Unity, установленный в этом курсе, и продолжить работу с кодом, скачайте этот файл . пакет unitypackage, импортируйте его в проект как пользовательский пакет, а затем продолжайте в главе 5.If you wish to skip the Unity Set up component of this course, and continue straight into code, feel free to download this .unitypackage, import it into your project as a Custom Package, and then continue from Chapter 5. Вам все равно придется создать проект Unity.You will still need to create a Unity Project.

Для этого курса необходимо скачать пакет ресурса Unity с именем инсидеаутсфере. пакет unitypackage.For this course you will need to download a Unity Asset Package called InsideOutSphere.unitypackage.

Как импортировать пакет unitypackage:How-to import the unitypackage:

  1. Теперь, когда панель мониторинга Unity находится перед вами, щелкните ресурсы в меню в верхней части экрана, а затем щелкните Импорт пакета > настраиваемый пакет.With the Unity dashboard in front of you, click on Assets in the menu at the top of the screen, then click on Import Package > Custom Package.

    Импорт пакета Unity Инсидеаутсфере

  2. Используйте средство выбора файлов, чтобы выбрать пакет инсидеаутсфере. пакет unitypackage , и нажмите кнопку Открыть.Use the file picker to select the InsideOutSphere.unitypackage package and click Open. Отобразится список компонентов для этого актива.A list of components for this asset will be displayed to you. Подтвердите импорт, нажав кнопку Импорт.Confirm the import by clicking Import.

    Импорт пакета Unity Инсидеаутсфере

  3. После завершения импорта вы увидите три новые папки, материалы, модели и Prefabs, добавленные в папку Assets .Once it has finished importing, you will notice three new folders, Materials, Models, and Prefabs, have been added to your Assets folder. Такой тип структуры папок является типичным для проекта Unity.This kind of folder structure is typical for a Unity project.

    Импорт пакета Unity Инсидеаутсфере

    1. Откройте папку Models , и вы увидите, что модель инсидеаутсфере была импортирована.Open the Models folder, and you will see that the InsideOutSphere model has been imported.

    2. В папке Materials вы найдете инсидеаутсферес Material lambert1, а также материал с именем буттонматериал, который используется газебуттон, который вы увидите в ближайшее время.Within the Materials folder you will find the InsideOutSpheres material lambert1, along with a material called ButtonMaterial, which is used by the GazeButton, which you will see soon.

    3. Папка Prefabs содержит инсидеаутсфере prefab, который содержит модель инсидеаутсфере и газебуттон.The Prefabs folder contains the InsideOutSphere prefab which contains both the InsideOutSphere model and the GazeButton.

    4. Код не включается, вы пишете код, следуя этому курсу.No code is included, you will write the code by following this course.

  4. В иерархии выберите основной объект Camera и обновите следующие компоненты:Within the Hierarchy, select the Main Camera object, and update the following components:

    1. ПреобразованиеTransform

      1. Положением = X: 0, Y: 0, Z: 0.Position = X: 0, Y: 0, Z: 0.

      2. Поворот = X: 0, Y: 0, Z: 0.Rotation = X: 0, Y: 0, Z: 0.

      3. Масштаб X: 1, Y: 1, Z: 1.Scale X: 1, Y: 1, Z: 1.

    2. КамераCamera

      1. Снять флаги: сплошной цвет.Clear Flags: Solid Color.

      2. Обтравочные плоскости: Near: 0,1, дальнее: 6.Clipping Planes: Near: 0.1, Far: 6.

        Импорт пакета Unity Инсидеаутсфере

  5. Перейдите в папку prefab , а затем перетащите инсидеаутсфере prefab на панель Иерархия .Navigate to the Prefab folder, and then drag the InsideOutSphere prefab into the Hierarchy Panel.

    Импорт пакета Unity Инсидеаутсфере

  6. Разверните объект инсидеаутсфере в иерархии , щелкнув маленькую стрелку рядом с ней.Expand the InsideOutSphere object within the Hierarchy by clicking the little arrow next to it. Вы увидите дочерний объект под ним под названием газебуттон.You will see a child object beneath it called GazeButton. Это будет использоваться для изменения сцен и, таким как, видео.This will be used to change scenes and thus videos.

    Импорт пакета Unity Инсидеаутсфере

  7. В окне инспектора щелкните компонент преобразования инсидеаутсфере, убедитесь, что установлены следующие свойства:In the Inspector Window click on the InsideOutSphere's Transform component, ensure that the following properties are set:

    TRANSFORM-ПОЗИЦИОНИРОВАНИЕTRANSFORM - POSITION
    X 0X 0 Y 0Y 0 Z 0Z 0
    ПОВОРОТ ПРЕОБРАЗОВАНИЯTRANSFORM - ROTATION
    X 0X 0 Y -50Y -50 Z 0Z 0
    ПРЕОБРАЗОВАНИЕ — МАСШТАБИРОВАНИЕTRANSFORM - SCALE
    X 1X 1 Y 1Y 1 Z 1Z 1

    Импорт пакета Unity Инсидеаутсфере

  8. Щелкните дочерний объект газебуттон и задайте его Преобразование следующим образом:Click on the GazeButton child object, and set its Transform as follows:

    TRANSFORM-ПОЗИЦИОНИРОВАНИЕTRANSFORM - POSITION
    X 3,6X 3.6 Y 1,3Y 1.3 Z 0Z 0
    ПОВОРОТ ПРЕОБРАЗОВАНИЯTRANSFORM - ROTATION
    X 0X 0 Y 0Y 0 Z 0Z 0
    ПРЕОБРАЗОВАНИЕ — МАСШТАБИРОВАНИЕTRANSFORM - SCALE
    X 1X 1 Y 1Y 1 Z 1Z 1

    Импорт пакета Unity Инсидеаутсфере

Глава 5. Создание класса видеоконтроллерChapter 5 - Create the VideoController class

Класс Видеоконтроллер содержит две конечные точки видео, которые будут использоваться для потоковой передачи содержимого из службы мультимедиа Azure.The VideoController class hosts the two video endpoints that will be used to stream the content from the Azure Media Service.

Чтобы создать этот класс, сделайте следующее:To create this class:

  1. Щелкните правой кнопкой мыши папку Asset, расположенную на панели проект , и выберите пункт создать > папку.Right-click in the Asset Folder, located in the Project Panel, and click Create > Folder. Назовите папку Scripts.Name the folder Scripts.

    Создание класса видеоконтроллер

    Создание класса видеоконтроллер

  2. Дважды щелкните папку Scripts , чтобы открыть ее.Double click on the Scripts folder to open it.

  3. Щелкните правой кнопкой мыши внутри папки и выберите команду создать > # Сценарий C.Right-click inside the folder, then click Create > C# Script. Назовите сценарий Видеоконтроллер.Name the script VideoController.

    Создание класса видеоконтроллер

  4. Дважды щелкните новый скрипт Видеоконтроллер , чтобы открыть его в Visual Studio 2017.Double click on the new VideoController script to open it with Visual Studio 2017.

    Создание класса видеоконтроллер

  5. Обновите пространства имен в верхней части файла кода следующим образом:Update the namespaces at the top of the code file as follows:

    using System.Collections;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    using UnityEngine.Video;
    
  6. Введите следующие переменные в класс Видеоконтроллер вместе с методом спящего режима () :Enter the following variables in the VideoController class, along with the Awake() method:

        /// <summary> 
        /// Provides Singleton-like behaviour to this class. 
        /// </summary> 
        public static VideoController instance; 
    
        /// <summary> 
        /// Reference to the Camera VideoPlayer Component.
        /// </summary> 
        private VideoPlayer videoPlayer; 
    
        /// <summary>
        /// Reference to the Camera AudioSource Component.
        /// </summary> 
        private AudioSource audioSource; 
    
        /// <summary> 
        /// Reference to the texture used to project the video streaming 
        /// </summary> 
        private RenderTexture videoStreamRenderTexture;
    
        /// <summary>
        /// Insert here the first video endpoint
        /// </summary>
        private string video1endpoint = "-- Insert video 1 Endpoint here --";
    
        /// <summary>
        /// Insert here the second video endpoint
        /// </summary>
        private string video2endpoint = "-- Insert video 2 Endpoint here --";
    
        /// <summary> 
        /// Reference to the Inside-Out Sphere. 
        /// </summary> 
        public GameObject sphere;
    
        void Awake()
        {
            instance = this;
        }
    
  7. Теперь пора ввести конечные точки из видео службы мультимедиа Azure:Now is the time to enter the endpoints from your Azure Media Service videos:

    1. Первый объект в переменной video1endpoint .The first into the video1endpoint variable.

    2. Второй объект в переменной video2endpoint .The second into the video2endpoint variable.

    Предупреждение

    Существует известная ошибка, связанная с использованием протокола HTTPS в Unity с версией 2017.4.1 F1.There is a known issue with using https within Unity, with version 2017.4.1f1. Если видео выдает ошибку при воспроизведении, попробуйте использовать вместо него "http".If the videos provide an error on play, try using 'http' instead.

  8. Затем необходимо изменить метод Start () .Next, the Start() method needs to be edited. Этот метод будет запускаться каждый раз, когда пользователь переключает сцену (в результате переключается видео) с помощью кнопки "Взгляните".This method will be triggered every time the user switches scene (consequently switching the video) by looking at the Gaze Button.

        // Use this for initialization
        void Start()
        {
            Application.runInBackground = true;
            StartCoroutine(PlayVideo());
        }
    
  9. После метода Start () вставьте метод PlayVideo () IEnumerator , который будет использоваться для легкого запуска видео (Поэтому перебои не отображается).Following the Start() method, insert the PlayVideo() IEnumerator method, which will be used to start videos seamlessly (so no stutter is seen).

        private IEnumerator PlayVideo()
        {
            // create a new render texture to display the video 
            videoStreamRenderTexture = new RenderTexture(2160, 1440, 32, RenderTextureFormat.ARGB32);
    
            videoStreamRenderTexture.Create();
    
            // assign the render texture to the object material 
            Material sphereMaterial = sphere.GetComponent<Renderer>().sharedMaterial;
    
            //create a VideoPlayer component 
            videoPlayer = gameObject.AddComponent<VideoPlayer>();
    
            // Set the video to loop. 
            videoPlayer.isLooping = true;
    
            // Set the VideoPlayer component to play the video from the texture 
            videoPlayer.renderMode = VideoRenderMode.RenderTexture;
    
            videoPlayer.targetTexture = videoStreamRenderTexture;
    
            // Add AudioSource 
            audioSource = gameObject.AddComponent<AudioSource>();
    
            // Pause Audio play on Awake 
            audioSource.playOnAwake = true;
            audioSource.Pause();
    
            // Set Audio Output to AudioSource 
            videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
            videoPlayer.source = VideoSource.Url;
    
            // Assign the Audio from Video to AudioSource to be played 
            videoPlayer.EnableAudioTrack(0, true);
            videoPlayer.SetTargetAudioSource(0, audioSource);
    
            // Assign the video Url depending on the current scene 
            switch (SceneManager.GetActiveScene().name)
            {
                case "VideoScene1":
                    videoPlayer.url = video1endpoint;
                    break;
    
                case "VideoScene2":
                    videoPlayer.url = video2endpoint;
                    break;
    
                default:
                    break;
            }
    
            //Set video To Play then prepare Audio to prevent Buffering 
            videoPlayer.Prepare();
    
            while (!videoPlayer.isPrepared)
            {
                yield return null;
            }
    
            sphereMaterial.mainTexture = videoStreamRenderTexture;
    
            //Play Video 
            videoPlayer.Play();
    
            //Play Sound 
            audioSource.Play();
    
            while (videoPlayer.isPlaying)
            {
                yield return null;
            }
        }
    
  10. Последний метод, необходимый для этого класса, — это метод чанжесцене () , который будет использоваться для переключения между сценами.The last method you need for this class is the ChangeScene() method, which will be used to swap between scenes.

        public void ChangeScene()
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().name == "VideoScene1" ? "VideoScene2" : "VideoScene1");
        }
    

    Совет

    Метод чанжесцене () использует удобный # компонент C, называемый условным оператором.The ChangeScene() method uses a handy C# feature called the Conditional Operator. Это позволяет проверять условия, а затем значения, возвращаемые в зависимости от результата проверки, в пределах одной инструкции.This allows for conditions to be checked, and then values returned based on the outcome of the check, all within a single statement. Чтобы узнать больше об условном операторе, перейдите по этой ссылке.Follow this link to learn more about Conditional Operator.

  11. Сохраните изменения в Visual Studio перед возвратом в Unity.Save your changes in Visual Studio before returning to Unity.

  12. В редакторе Unity щелкните и перетащите класс Видеоконтроллер [from] {. подчеркнутый} в папку Scripts для основного объекта Camera на панели Иерархия .Back in the Unity Editor, click and drag the VideoController class [from]{.underline} the Scripts folder to the Main Camera object in the Hierarchy Panel.

  13. Щелкните основную камеру и посмотрите на Панель инспектора.Click on the Main Camera and look at the Inspector Panel. Вы заметите, что в вновь добавленном компоненте скрипта есть поле с пустым значением.You will notice that within the newly added Script component, there is a field with an empty value. Это ссылочное поле, которое предназначено для открытых переменных в коде.This is a reference field, which targets the public variables within your code.

  14. Перетащите объект инсидеаутсфере с панели Иерархия в область Сфера , как показано на рисунке ниже.Drag the InsideOutSphere object from the Hierarchy Panel to the Sphere slot, as shown in the image below.

    Создание класса видеоконтроллер  Создание класса видеоконтроллерCreate the VideoController class Create the VideoController class

Глава 6. Создание класса «взгляд»Chapter 6 - Create the Gaze class

Этот класс отвечает за создание райкаст , который будет проецирован вперед с основной камеры для определения объекта, на котором пользователь смотрит.This class is responsible for creating a Raycast that will be projected forward from the Main Camera, to detect which object the user is looking at. В этом случае райкаст потребуется выяснить, просматривает ли пользователь объект газебуттон в сцене и инициирует поведение.In this case, the Raycast will need to identify if the user is looking at the GazeButton object in the scene and trigger a behavior.

Чтобы создать этот класс, сделайте следующее:To create this Class:

  1. Перейдите к созданной ранее папке Scripts .Go to the Scripts folder you created previously.

  2. Щелкните правой кнопкой мыши на панели проекта , *Создайте * C # script * *.Right-click in the Project Panel, *Create *C# Script**. Присвойте скрипту имя « взгляд».Name the script Gaze.

  3. Дважды щелкните новый скрипт " **Взгляните_", чтобы открыть его с помощью _* Visual Studio 2017.*Double click on the new **Gaze_ script to open it with _* Visual Studio 2017.*

  4. Убедитесь, что в начале скрипта находится следующее пространство имен, и удалите все остальные:Ensure the following namespace is at the top of the script, and remove any others:

    using UnityEngine;
    
  5. Затем добавьте следующие переменные в класс Взгляните :Then add the following variables inside the Gaze class:

        /// <summary> 
        /// Provides Singleton-like behaviour to this class. 
        /// </summary> 
        public static Gaze instance;
    
        /// <summary> 
        /// Provides a reference to the object the user is currently looking at. 
        /// </summary> 
        public GameObject FocusedGameObject { get; private set; }
    
        /// <summary> 
        /// Provides a reference to compare whether the user is still looking at 
        /// the same object (and has not looked away). 
        /// </summary> 
        private GameObject oldFocusedObject = null;
    
        /// <summary> 
        /// Max Ray Distance 
        /// </summary> 
        float gazeMaxDistance = 300;
    
        /// <summary> 
        /// Provides whether an object has been successfully hit by the raycast. 
        /// </summary> 
        public bool Hit { get; private set; }
    
  6. Теперь необходимо добавить код для методов спящего режима () и Start () .Code for the Awake() and Start() methods now needs to be added.

        private void Awake()
        {
            // Set this class to behave similar to singleton 
            instance = this;
        }
    
        void Start()
        {
            FocusedGameObject = null;
        }
    
  7. Добавьте следующий код в метод Update () для проецирования райкаст и обнаружения попадания целевого объекта:Add the following code in the Update() method to project a Raycast and detect the target hit:

        void Update()
        {
            // Set the old focused gameobject. 
            oldFocusedObject = FocusedGameObject;
            RaycastHit hitInfo;
    
            // Initialise Raycasting. 
            Hit = Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hitInfo, gazeMaxDistance);
    
            // Check whether raycast has hit. 
            if (Hit == true)
            {
                // Check whether the hit has a collider. 
                if (hitInfo.collider != null)
                {
                    // Set the focused object with what the user just looked at. 
                    FocusedGameObject = hitInfo.collider.gameObject;
                }
                else
                {
                    // Object looked on is not valid, set focused gameobject to null. 
                    FocusedGameObject = null;
                }
            }
            else
            {
                // No object looked upon, set focused gameobject to null.
                FocusedGameObject = null;
            }
    
            // Check whether the previous focused object is this same 
            // object (so to stop spamming of function). 
            if (FocusedGameObject != oldFocusedObject)
            {
                // Compare whether the new Focused Object has the desired tag we set previously. 
                if (FocusedGameObject.CompareTag("GazeButton"))
                {
                    FocusedGameObject.SetActive(false);
                    VideoController.instance.ChangeScene();
                }
            }
        }
    
  8. Сохраните изменения в Visual Studio перед возвратом в Unity.Save your changes in Visual Studio before returning to Unity.

  9. Щелкните и Перетащите класс «указатель» из папки «скрипты» в основной объект Camera на панели « Иерархия ».Click and drag the Gaze class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

Глава 7. Настройка двух сцен UnityChapter 7 - Setup the two Unity Scenes

Целью этой главы является настройка двух сцен, каждый из которых размещает видео в потоке.The purpose of this Chapter is to setup the two scenes, each hosting a video to stream. Вы создадите уже созданную сцену, поэтому вам больше не нужно настраивать ее, хотя вы измените новую сцену, чтобы объект газебуттон настроился в другом расположении и имел другой внешний вид.You will duplicate the scene you have already created, so that you do not need to set it up again, though you will then edit the new scene, so that the GazeButton object is in a different location and has a different appearance. Это показывает, как изменить между сценами.This is to show how to change between scenes.

  1. Для этого перейдите в файл > сохранить сцену как.... Появится окно сохранения.Do this by going to File > Save Scene as.... A save window will appear. Нажмите кнопку создать папку .Click the New folder button.

    Глава 7. Настройка двух сцен Unity

  2. Присвойте папке имя " сцены".Name the folder Scenes.

  3. Окно сохранить сцену по-прежнему будет открыто.The Save Scene window will still be open. Откройте только что созданную папку сцен .Open your newly created Scenes folder.

  4. В текстовом поле имя файла введите VideoScene1, а затем нажмите кнопку сохранить.In the File name: text field, type VideoScene1, then press Save.

  5. Вернувшись в Unity, откройте папку сцены и щелкните файл VideoScene1 левой кнопкой мыши.Back in Unity, open your Scenes folder, and left-click your VideoScene1 file. Используйте клавиатуру и нажмите клавиши CTRL + D , чтобы дублировать сценуUse your keyboard, and press Ctrl + D you will duplicate that scene

    Совет

    Повторяющуюся команду также можно выполнить, перейдя в Edit > дублировать.The Duplicate command can also be performed by navigating to Edit > Duplicate.

  6. Unity автоматически увеличит номер названия сцены, но проверьте его все равно, чтобы убедиться, что он соответствует ранее вставленному коду.Unity will automatically increment the scene names number, but check it anyway, to ensure it matches the previously inserted code.

    У вас должны быть VideoScene1 и VideoScene2.You should have VideoScene1 and VideoScene2.

  7. В двух сценах перейдите в раздел файл > параметры сборки.With your two scenes, go to File > Build Settings. Открыв окно параметры сборки , перетащите фоновый кадр в раздел сцены в сборке .With the Build Settings window open, drag your scenes to the Scenes in Build section.

    Глава 7. Настройка двух сцен Unity

    Совет

    Вы можете выбрать оба монтажных кадра из папки « сцены », удерживая нажатой клавишу CTRL , а затем выделив каждую из них левой кнопкой мыши, и, наконец, перетащите обе эти сцены.You can select both of your scenes from your Scenes folder through holding the Ctrl button, and then left-clicking each scene, and finally drag both across.

  8. Закройте окно " параметры сборки " и дважды щелкните VideoScene2.Close the Build Settings window, and double click on VideoScene2.

  9. После открытия второй сцены щелкните дочерний объект газебуттон объекта инсидеаутсфере и задайте его преобразование следующим образом:With the second scene open, click on the GazeButton child object of the InsideOutSphere, and set its Transform as follows:

    TRANSFORM-ПОЗИЦИОНИРОВАНИЕTRANSFORM - POSITION
    X 0X 0 Y 1,3Y 1.3 Z 3,6Z 3.6
    ПОВОРОТ ПРЕОБРАЗОВАНИЯTRANSFORM - ROTATION
    X 0X 0 Y 0Y 0 Z 0Z 0
    ПРЕОБРАЗОВАНИЕ — МАСШТАБИРОВАНИЕTRANSFORM - SCALE
    X 1X 1 Y 1Y 1 Z 1Z 1
  10. Если дочерний элемент газебуттон все еще выбран, Взгляните на инспектор и Фильтр сетки.With the GazeButton child still selected, look at the Inspector and at the Mesh Filter. Щелкните небольшое целевое поле рядом с полем ссылка на сетку :Click the little target next to the Mesh reference field:

    Глава 7. Настройка двух сцен Unity

  11. Появится всплывающее окно Выбор сетки .A Select Mesh popup window will appear. Дважды щелкните сетку куба в списке ресурсов.Double click the Cube mesh from the list of Assets.

    Глава 7. Настройка двух сцен Unity

  12. Фильтр сетки будет обновлен и теперь станет кубом.The Mesh Filter will update, and now be a Cube. Теперь щелкните значок шестеренки рядом с полем " Сфера ", а затем щелкните удалить компонент, чтобы удалить его из этого объекта.Now, click the Gear icon next to Sphere Collider and click Remove Component, to delete the collider from this object.

    Глава 7. Настройка двух сцен Unity

  13. Выбрав газебуттон , нажмите кнопку Добавить компонент в нижней части инспектора.With the GazeButton still selected, click the Add Component button at the bottom of the Inspector. В поле поиска введите Box, а в поле " конфликт" будет выбран параметр, чтобы добавить в объект газебуттон рамку .In the search field, type box, and Box Collider will be an option -- click that, to add a Box Collider to your GazeButton object.

    Глава 7. Настройка двух сцен Unity

  14. Газебуттон теперь частично обновляется, чтобы выглядеть иначе, вы создадите новый материал, чтобы он полностью отличался, и проще распознать его как другой объект, чем объект в первой сцене.The GazeButton is now partially updated, to look different, however, you will now create a new Material, so that it looks completely different, and is easier to recognize as a different object, than the object in the first scene.

  15. Перейдите в папку « материалы » на панели «проект».Navigate to your Materials folder, within the Project Panel. Дублировать материал буттонматериал (нажмите клавиши CTRL + D на клавиатуре или щелкните его левой кнопкой мыши , а затем в меню изменить файл выберите пункт дублировать).Duplicate the ButtonMaterial Material (press Ctrl + D on the keyboard, or left-click the Material, then from the Edit file menu option, select Duplicate).

    Глава 7. Настройка двух сцен Unity.  глава 7. Настройка двух сцен UnityChapter 7 -- Setup the two Unity Scenes Chapter 7 -- Setup the two Unity Scenes

  16. Выберите новый материал буттонматериал (под названием буттонматериал 1) и в инспекторе щелкните окно цвета албедо .Select the new ButtonMaterial Material (here named ButtonMaterial 1), and within the Inspector, click the Albedo color window. Появится всплывающее окно, где можно выбрать другой цвет (выберите любой из них), а затем закрыть всплывающее окно.A popup will appear, where you can select another color (choose whichever you like), then close the popup. Материал будет его собственным экземпляром и отличаться от исходного.The Material will be its own instance, and different to the original.

    Глава 7. Настройка двух сцен Unity

  17. Перетащите новый материал на дочерний элемент газебуттон , чтобы полностью обновить его внешний вид, чтобы его можно было легко отличать от первой кнопки сцены.Drag the new Material onto the GazeButton child, to now completely update its look, so that it is easily distinguishable from the first scenes button.

    Глава 7. Настройка двух сцен Unity

  18. На этом этапе можно протестировать проект в редакторе перед созданием проекта UWP.At this point you can test the project in the Editor before building the UWP project.

    • Нажмите кнопку Воспроизведение в редакторе и обменяйте гарнитуру.Press the Play button in the Editor and wear your headset.

      Глава 7. Настройка двух сцен Unity

  19. Взгляните на два объекта газебуттон для переключения между первым и вторым видео.Look at the two GazeButton objects to switch between the first and second video.

Глава 8. Создание решения UWPChapter 8 - Build the UWP Solution

После проверки того, что в редакторе нет ошибок, можно приступать к сборке.Once you have ensured that the editor has no errors, you are ready to Build.

Для сборки:To Build:

  1. Сохраните текущую сцену, щелкнув файл > сохранить.Save the current scene by clicking on File > Save.

  2. Установите флажок # проекты Unity C (это важно, так как он позволит изменять классы после завершения сборки).Check the box called Unity C# Projects (this is important because it will allow you to edit the classes after build is completed).

  3. Последовательно выберите файл > параметры сборки, щелкните Сборка.Go to File > Build Settings, click on Build.

  4. Вам будет предложено выбрать папку, в которой нужно построить решение.You will be prompted to select the folder where you want to build the Solution.

  5. Создайте папку Builds и в этой папке создайте другую папку с соответствующим именем по своему усмотрению.Create a BUILDS folder and within that folder create another folder with an appropriate name of your choice.

  6. Щелкните новую папку, а затем выберите пункт выбрать папку, чтобы выбрать эту папку, чтобы начать сборку в этом расположении.Click your new folder and then click Select Folder, so to choose that folder, to begin the build at that location.

    Глава 8-Создание решения UWP  глава 8 — Создание решения UWPChapter 8 -- Build the UWP Solution Chapter 8 -- Build the UWP Solution

  7. После завершения сборки Unity (может занять некоторое время) он откроет окно проводника в расположении сборки.Once Unity has finished building (it might take some time), it will open a File Explorer window at the location of your build.

Глава 9. развертывание на локальном компьютереChapter 9 - Deploy on Local Machine

После завершения сборки в расположение сборки появится окно проводника файлов .Once the build has been completed, a File Explorer window will appear at the location of your build. Откройте папку с именем и построением, а затем дважды щелкните файл решения (SLN) в этой папке, чтобы открыть решение с помощью Visual Studio 2017.Open the Folder you named and built to, then double click on the solution (.sln) file within that folder, to open your solution with Visual Studio 2017.

Осталось всего лишь развернуть приложение на компьютере (или на локальном компьютере).The only thing left to do is deploy your app to your computer (or Local Machine).

Чтобы выполнить развертывание на локальном компьютере, выполните следующие действия.To deploy to Local Machine:

  1. В Visual Studio 2017 откройте только что созданный файл решения.In Visual Studio 2017, open the solution file that has just been created.

  2. На платформе решения выберите x86, локальный компьютер.In the Solution Platform, select x86, Local Machine.

  3. В конфигурации решения выберите Отладка.In the Solution Configuration select Debug.

    Глава 9--развертывание на локальном компьютере

  4. Теперь необходимо восстановить все пакеты в решении.You will now need to restore any packages to your solution. Щелкните решение правой кнопкой мыши и выберите команду восстановить пакеты NuGet для решения...Right-click on your Solution, and click Restore NuGet Packages for Solution...

    Примечание

    Это делается потому, что пакеты, для которых построен Unity должен быть предназначен для работы со ссылками на локальные компьютеры.This is done because the packages which Unity built need to be targeted to work with your local machines references.

  5. Перейдите в меню "сборка " и щелкните " Развернуть решение ", чтобы загружать неопубликованные приложение на компьютере.Go to Build menu and click on Deploy Solution to sideload the application to your machine. Visual Studio сначала построит и развернет приложение.Visual Studio will first build and then deploy your application.

  6. Теперь приложение должно отобразиться в списке установленных приложений, готовых к запуску.Your App should now appear in the list of installed apps, ready to be launched.

    Глава 9--развертывание на локальном компьютере

При запуске приложения Mixed Reality вы будете находиться в модели инсидеаутсфере , используемой в приложении.When you run the Mixed Reality application, you will you be within the InsideOutSphere model which you used within your app. Эта сфера будет использоваться для потоковой передачи видео, предоставляя представление в 360 градусов для входящего видео (которое было на пленке для этого типа перспективы).This sphere will be where the video will be streamed to, providing a 360-degree view, of the incoming video (which was filmed for this kind of perspective). Не удивит, если видео занимает несколько секунд для загрузки, ваше приложение зависит от доступной скорости Интернета, так как требуется получить и загрузить видео, чтобы выполнить потоковую передачу в приложение.Do not be surprised if the video takes a couple of seconds to load, your app is subject to your available Internet speed, as the video needs to be fetched and then downloaded, so to stream into your app. Когда вы будете готовы, измените сцены и откройте второе видео, облаками на красную шар!When you are ready, change scenes and open your second video, by gazing at the red sphere! Затем вы можете вернуться назад, используя синий куб во второй сцене!Then feel free to go back, using the blue cube in the second scene!

Законченное приложение службы мультимедиа AzureYour finished Azure Media Service application

Поздравляем! вы создали приложение смешанной реальности, которое использует службу мультимедиа Azure для потоковой передачи видео 360.Congratulations, you built a mixed reality app that leverages the Azure Media Service to stream 360 videos.

результат лаборатории

результат лаборатории

Премиальные упражненияBonus Exercises

Упражнение 1Exercise 1

Для изменения видео в рамках этого руководства можно использовать только одну сцену.It is entirely possible to only use a single scene to change videos within this tutorial. Поэкспериментируйте с приложением и сделайте его одним монтажным кадром!Experiment with your application and make it into a single scene! Возможно, даже добавить еще одно видео в набор.Perhaps even add another video to the mix.

Упражнение 2Exercise 2

Поэкспериментируйте с Azure и Unity и попытайтесь реализовать возможность приложения автоматически выбирать видео с другим размером файла в зависимости от надежности подключения к Интернету.Experiment with Azure and Unity, and attempt to implement the ability for the app to automatically select a video with a different file size, depending on the strength of an Internet connection.