MR e Azure 306: streaming de vídeoMR and Azure 306: Streaming video


Observação

Os tutoriais do Mixed Reality Academy foram projetados com o HoloLens (1ª geração) e os headsets imersivos de realidade misturada em mente.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. Dessa forma, achamos que é importante continuar disponibilizando esses tutoriais para os desenvolvedores que ainda buscam obter diretrizes para o desenvolvimento visando esses dispositivos.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. Esses tutoriais não serão atualizados com os conjuntos de ferramentas mais recentes nem com as interações usadas para o HoloLens 2.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. Eles serão mantidos para continuar funcionando nos dispositivos compatíveis.They will be maintained to continue working on the supported devices. Haverá uma nova série de tutoriais que serão publicados no futuro, que demonstrarão como desenvolver para o 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. Esse aviso será atualizado com um link para esses tutoriais quando eles forem postados.This notice will be updated with a link to those tutorials when they are posted.


produto final – início do  produto final-iníciofinal product -start final product -start

Neste curso, você aprenderá como conectar seus serviços de mídia do Azure a uma experiência do Windows Mixed Reality VR para permitir a reprodução de vídeo de streaming de 360 graus em headsets de imersão.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.

Os serviços de mídia do Azure são uma coleção de serviços que fornece serviços de streaming de vídeo de qualidade de difusão para alcançar públicos maiores nos dispositivos móveis mais populares de hoje.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. Para obter mais informações, visite a página dos serviços de mídia do Azure.For more information, visit the Azure Media Services page.

Após concluir este curso, você terá um aplicativo de headset de imersão de realidade misturada, que poderá fazer o seguinte:Having completed this course, you will have a mixed reality immersive headset application, which will be able to do the following:

  1. Recuperar um vídeo de 360 graus de um armazenamento do Azure por meio do serviço de mídia do Azure.Retrieve a 360 degree video from an Azure Storage, through the Azure Media Service.

  2. Exiba o vídeo de 360 graus recuperado em uma cena do Unity.Display the retrieved 360 degree video within a Unity scene.

  3. Navegue entre duas cenas, com dois vídeos diferentes.Navigate between two scenes, with two different videos.

Em seu aplicativo, cabe a você como você integrará os resultados com seu design.In your application, it is up to you as to how you will integrate the results with your design. Este curso foi projetado para ensinar a você como integrar um serviço do Azure com seu projeto do Unity.This course is designed to teach you how to integrate an Azure Service with your Unity Project. É seu trabalho usar o conhecimento obtido deste curso para aprimorar seu aplicativo de realidade misturada.It is your job to use the knowledge you gain from this course to enhance your mixed reality application.

Suporte a dispositivosDevice support

CursoCourse HoloLensHoloLens Headsets imersivosImmersive headsets
MR e Azure 306: streaming de vídeoMR and Azure 306: Streaming video ✔️✔️

Pré-requisitosPrerequisites

Observação

Este tutorial foi projetado para desenvolvedores que têm experiência básica com o Unity e o C#.This tutorial is designed for developers who have basic experience with Unity and C#. Além disso, lembre-se de que os pré-requisitos e as instruções escritas neste documento representam o que foi testado e verificado no momento da gravação (maio de 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). Você está livre para usar o software mais recente, conforme listado no artigo instalar as ferramentas, embora não seja recomendável que as informações neste curso irão se adequar perfeitamente ao que você encontrará em softwares mais recentes do que as listadas abaixo.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.

Recomendamos o seguinte hardware e software para este curso:We recommend the following hardware and software for this course:

Antes de começarBefore you start

  1. Para evitar problemas de criação desse projeto, é altamente recomendável que você crie o projeto mencionado neste tutorial em uma pasta raiz ou quase raiz (caminhos de pasta longos podem causar problemas em tempo de compilação).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. Configure e teste seu headset de imersão de realidade misturada.Set up and test your Mixed Reality Immersive Headset.

    Observação

    Você não precisará de controladores de animação para este curso.You will not require Motion Controllers for this course. Se você precisar de suporte para configurar o headset de imersão, clique em link sobre como configurar a realidade mista do Windows.If you need support setting up the Immersive Headset, please click link on how to set up Windows Mixed Reality.

Capítulo 1-o portal do Azure: criando a conta de armazenamento do AzureChapter 1 - The Azure Portal: creating the Azure Storage Account

Para usar o serviço de armazenamento do Azure, você precisará criar e configurar uma conta de armazenamento no portal do Azure.To use the Azure Storage Service, you will need to create and configure a Storage Account in the Azure portal.

  1. Faça logon no portal do Azure.Log in to the Azure Portal.

    Observação

    Se você ainda não tiver uma conta do Azure, será necessário criar uma.If you do not already have an Azure account, you will need to create one. Se você estiver seguindo este tutorial em uma situação de sala de aula ou laboratório, peça ao instrutor ou a uma das proctors para obter ajuda para configurar sua nova conta.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. Depois de fazer logon, clique em contas de armazenamento no menu à esquerda.Once you are logged in, click on Storage accounts in the left menu.

    Configuração da conta de armazenamento do Azure

  3. Na guia contas de armazenamento , clique em Adicionar.On the Storage Accounts tab, click on Add.

    Configuração da conta de armazenamento do Azure

  4. Na guia criar conta de armazenamento :In the Create storage account tab:

    1. Insira um nome para sua conta, lembre-se de que esse campo aceita apenas números e letras minúsculas.Insert a Name for your account, be aware this field only accepts numbers, and lowercase letters.

    2. Para modelo de implantação, selecione Gerenciador de recursos.For Deployment model, select Resource manager.

    3. Para tipo de conta, selecione armazenamento (uso geral v1).For Account kind, select Storage (general purpose v1).

    4. Para desempenho, selecione **standard *.**For Performance, select Standard*.

    5. Para replicação , selecione armazenamento com REDUNDÂNCIA local (LRS).For Replication select Locally-redundant storage (LRS).

    6. Deixe a transferência segura necessária como desabilitada.Leave Secure transfer required as Disabled.

    7. Selecione uma Assinatura.Select a Subscription.

    8. Escolha um grupo de recursos ou crie um novo.Choose a Resource group or create a new one. Um grupo de recursos fornece uma maneira de monitorar, controlar o acesso, provisionar e gerenciar a cobrança de uma coleção de ativos do Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets.

    9. Determine o local do seu grupo de recursos (se você estiver criando um novo grupo de recursos).Determine the Location for your resource group (if you are creating a new Resource Group). O local ideal seria na região em que o aplicativo seria executado.The location would ideally be in the region where the application would run. Alguns ativos do Azure só estão disponíveis em determinadas regiões.Some Azure assets are only available in certain regions.

  5. Você precisará confirmar que entendeu os termos e condições aplicados a este serviço.You will need to confirm that you have understood the Terms and Conditions applied to this Service.

    Configuração da conta de armazenamento do Azure

  6. Depois de clicar em criar, você precisará aguardar até que o serviço seja criado, isso pode levar um minuto.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  7. Uma notificação será exibida no portal assim que a instância do serviço for criada.A notification will appear in the portal once the Service instance is created.

    Configuração da conta de armazenamento do Azure

  8. Neste ponto, você não precisa seguir o recurso, simplesmente vá para o próximo capítulo.At this point you do not need to follow the resource, simply move to the next Chapter.

Capítulo 2-o portal do Azure: criando o serviço de mídiaChapter 2 - The Azure Portal: creating the Media Service

Para usar o serviço de mídia do Azure, você precisará configurar uma instância do serviço a ser disponibilizada para seu aplicativo (onde o titular da conta precisa ser um administrador).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. No portal do Azure, clique em criar um recurso no canto superior esquerdo e procure serviço de mídia, pressione Enter.In the Azure Portal, click on Create a resource in the top left corner, and search for Media Service, press Enter. O recurso que você deseja atualmente tem um ícone rosa; Clique aqui para mostrar uma nova página.The resource you want currently has a pink icon; click this, to show a new page.

    O portal do Azure

  2. A nova página fornecerá uma descrição do serviço de mídia.The new page will provide a description of the Media Service. Na parte inferior esquerda desse prompt, clique no botão criar para criar uma associação com esse serviço.At the bottom left of this prompt, click the Create button, to create an association with this service.

    O portal do Azure

  3. Depois de clicar em criar um painel, aparecerá onde você precisa fornecer alguns detalhes sobre o novo serviço de mídia:Once you have clicked on Create a panel will appear where you need to provide some details about your new Media Service:

    1. Insira o nome da conta desejada para esta instância de serviço.Insert your desired Account Name for this service instance.

    2. Selecione uma Assinatura.Select a Subscription.

    3. Escolha um grupo de recursos ou crie um novo.Choose a Resource Group or create a new one. Um grupo de recursos fornece uma maneira de monitorar, controlar o acesso, provisionar e gerenciar a cobrança de uma coleção de ativos do Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. É recomendável manter todos os serviços do Azure associados a um único projeto (por exemplo, esses laboratórios) em um grupo de recursos comum).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).

    Se você quiser ler mais sobre grupos de recursos do Azure, siga este link sobre como gerenciar grupos de recursos do Azure.If you wish to read more about Azure Resource Groups, please follow this link on how to manage Azure Resource Groups.

    1. Determine o local do seu grupo de recursos (se você estiver criando um novo grupo de recursos).Determine the Location for your resource group (if you are creating a new Resource Group). O local ideal seria na região em que o aplicativo seria executado.The location would ideally be in the region where the application would run. Alguns ativos do Azure só estão disponíveis em determinadas regiões.Some Azure assets are only available in certain regions.

    2. Para a seção conta de armazenamento , clique na seção selecionar... e clique na conta de armazenamento que você criou no último capítulo.For the Storage Account section, click the Please select... section, then click the Storage Account you created in the last Chapter.

    3. Você também precisará confirmar que entendeu os termos e condições aplicados a esse serviço.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    4. Clique em Criar.Click Create.

      O portal do Azure

  4. Depois de clicar em criar, você precisará aguardar até que o serviço seja criado, isso pode levar um minuto.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  5. Uma notificação será exibida no portal assim que a instância do serviço for criada.A notification will appear in the portal once the Service instance is created.

    O portal do Azure

  6. Clique na notificação para explorar sua nova instância de serviço.Click on the notification to explore your new Service instance.

    O portal do Azure

  7. Clique no botão ir para recurso na notificação para explorar sua nova instância de serviço.Click the Go to resource button in the notification to explore your new Service instance.

  8. Na página novo serviço de mídia, no painel à esquerda, clique no link ativos , que está sobre a metade para baixo.Within the new Media service page, within the panel on the left, click on the Assets link, which is about halfway down.

  9. Na página seguinte, no canto superior esquerdo da página, clique em carregar.On the next page, in the top-left corner of the page, click Upload.

    O portal do Azure

  10. Clique no ícone de pasta para procurar os arquivos e selecione o primeiro vídeo 360 que você deseja transmitir.Click on the Folder icon to browse your files and select the first 360 Video that you would like to stream.

    Você pode seguir este link para baixar um vídeo de exemplo.You can follow this link to download a sample video.

    O portal do Azure

Aviso

Nomes de arquivo longos podem causar um problema com o codificador: para garantir que os vídeos não tenham problemas, considere reduzir o tamanho dos nomes de arquivos de vídeo.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. A barra de progresso ficará verde quando o vídeo terminar de ser carregado.The progress bar will turn green when the video has finished uploading.

    O portal do Azure

  2. Clique no texto acima (yourservicename-assets) para retornar à página ativos .Click on the text above (yourservicename - Assets) to return to the Assets page.

  3. Você observará que o vídeo foi carregado com êxito.You will notice that your video has been successfully uploaded. Clique nele.Click on it.

    O portal do Azure

  4. A página para a qual você será redirecionado mostrará informações detalhadas sobre o vídeo.The page you are redirected to will show you detailed information about your video. Para poder usar seu vídeo, você precisa codificá-lo clicando no botão codificar na parte superior esquerda da página.To be able to use your video you need to encode it, by clicking the Encode button at the top-left of the page.

    O portal do Azure

  5. Um novo painel será exibido à direita, onde você poderá definir as opções de codificação para o arquivo.A new panel will appear to the right, where you will be able to set encoding options for your file. Defina as propriedades a seguir (algumas já estarão definidas por padrão):Set the following properties (some will be already set by default):

    1. Nome do codificador de mídia Media Encoder StandardMedia encoder name Media Encoder Standard

    2. Codificação de taxa de bits múltipla adaptável com conteúdo predefinidoEncoding preset Content Adaptive Multiple Bitrate MP4

    3. Nome do trabalho Media Encoder Standard processamento de Video1.mp4Job name Media Encoder Standard processing of Video1.mp4

    4. Nome do ativo de mídia de saídaVideo1.mp4--Media Encoder Standard codificadoOutput media asset name Video1.mp4 -- Media Encoder Standard encoded

      O portal do Azure

  6. Selecione o botão Criar.Click the Create button.

  7. Você notará uma barra com o trabalho de codificação adicionado, clicará nessa barra e um painel será exibido com o andamento da codificação exibido nela.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.

    O portal do Azure

    O portal do Azure

  8. Aguarde a conclusão do trabalho.Wait for the Job to be completed. Quando terminar, fique à vontade para fechar o painel com o ' X ' na parte superior direita desse painel.Once it is done, feel free to close the panel with the 'X' at the top right of that panel.

    O portal do Azure

    O portal do Azure

    Importante

    O tempo que isso leva, depende do tamanho do arquivo do seu vídeo.The time this takes, depends on the file size of your video. Esse processo pode levar muito tempo.This process can take quite some time.

  9. Agora que a versão codificada do vídeo foi criada, você pode publicá-la para torná-la acessível.Now that the encoded version of the video has been created, you can publish it to make it accessible. Para fazer isso, clique nos ativos do link azul para voltar para a página ativos.To do so, click the blue link Assets to go back to the assets page.

    O portal do Azure

  10. Você verá seu vídeo junto com outro, que é do tipo de ativo MP4 com múltiplas taxas de bits.You will see your video along with another, which is of Asset Type Multi-Bitrate MP4.

    O portal do Azure

    Observação

    Você pode notar que o novo ativo, junto com o vídeo inicial, é desconhecido e tem ' 0 ' bytes para seu tamanho, basta atualizar sua janela para que ele seja atualizado.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. Clique nesse novo ativo.Click this new asset.

    O portal do Azure

  12. Você verá um painel semelhante ao que você usou antes, apenas esse é um ativo diferente.You will see a similar panel to the one you used before, just this is a different asset. Clique no botão publicar localizado na parte superior central da página.Click the Publish button located at the top-center of the page.

    O portal do Azure

  13. Você será solicitado a definir um localizador, que é o ponto de entrada, para arquivos/s em seus ativos.You will be prompted to set a Locator, which is the entry point, to file/s in your Assets. Para seu cenário, defina as seguintes propriedades:For your scenario set the following properties:

    1. Tipo de localizador Locator type > Progressivo.Locator type > Progressive.

    2. A Data e a hora serão definidas para você, da data atual, para uma hora no futuro (100 anos, nesse caso).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). Deixe como está ou altere-o para o naipe.Leave as is or change it to suit.

    Observação

    Para obter mais informações sobre localizadores e o que você pode escolher, visite a documentação dos serviços de mídia do Azure.For more information about Locators, and what you can choose, visit the Azure Media Services Documentation.

  14. Na parte inferior do painel, clique no botão Adicionar .At the bottom of that panel, click on the Add button.

    O portal do Azure

  15. Seu vídeo agora está publicado e pode ser transmitido usando seu ponto de extremidade.Your video is now published and can be streamed by using its endpoint. Além disso, a página é uma seção de arquivos .Further down the page is a Files section. É aí que as diferentes versões codificadas do seu vídeo serão.This is where the different encoded versions of your video will be. Selecione a resolução mais alta possível (na imagem abaixo dele é o arquivo 1920x960) e, em seguida, um painel à direita será exibido.Select the highest possible resolution one (in the image below it is the 1920x960 file), and then a panel to the right will appear. Lá, você encontrará uma URL de download.There you will find a Download URL. Copie esse ponto de extremidade , pois você o usará posteriormente em seu código.Copy this Endpoint as you will use it later in your code.

    O portal do Azure

    O portal do Azure

    Observação

    Você também pode pressionar o botão reproduzir para reproduzir seu vídeo e testá-lo.You can also press the Play button to play your video and test it.

  16. Agora você precisa carregar o segundo vídeo que será usado neste laboratório.You now need to upload the second video that you will use in this Lab. Siga as etapas acima, repetindo o mesmo processo para o segundo vídeo.Follow the steps above, repeating the same process for the second video. Certifique-se de copiar o segundo ponto de extremidade também.Ensure you copy the second Endpoint also. Use o link a seguir para baixar um segundo vídeo.Use the following link to download a second video.

  17. Depois que os dois vídeos tiverem sido publicados, você estará pronto para ir para o próximo capítulo.Once both videos have been published, you are ready to move to the next Chapter.

Capítulo 3-Configurando o projeto do UnityChapter 3 - Setting up the Unity Project

A seguir está uma configuração típica para o desenvolvimento com a realidade misturada e, como tal, é um bom modelo para outros projetos.The following is a typical set up for developing with the Mixed Reality, and as such, is a good template for other projects.

  1. Abra o Unity e clique em novo.Open Unity and click New.

    O portal do Azure

  2. Agora, você precisará fornecer um nome de projeto de Unity, inserir Mr _ 360VideoStreaming..You will now need to provide a Unity Project name, insert MR_360VideoStreaming.. Verifique se o tipo de projeto está definido como 3D.Make sure the project type is set to 3D. Defina o local como algum lugar apropriado para você (Lembre-se de que, mais próximo de diretórios raiz é melhor).Set the Location to somewhere appropriate for you (remember, closer to root directories is better). Em seguida, clique em criar projeto.Then, click Create project.

    O portal do Azure

  3. Com o Unity Open, vale a pena verificar se o Editor de script padrão está definido como Visual Studio.With Unity open, it is worth checking the default Script Editor is set to Visual Studio. Vá para Editar preferências e, em seguida, na janela novo, navegue até Ferramentas externas.Go to Edit Preferences and then from the new window, navigate to External Tools. Altere o Editor de script externo para o Visual Studio 2017.Change External Script Editor to Visual Studio 2017. Feche a janela preferências .Close the Preferences window.

    O portal do Azure

  4. Em seguida, vá para arquivo configurações de compilação e alterne a plataforma para plataforma universal do Windows, clicando no botão alternar plataforma .Next, go to File Build Settings and switch the platform to Universal Windows Platform, by clicking on the Switch Platform button.

  5. Verifique também se:Also make sure that:

    1. O dispositivo de destino está definido como qualquer dispositivo.Target Device is set to Any Device.

    2. O tipo de compilação está definido como D3D.Build Type is set to D3D.

    3. O SDK está definido para o mais recente instalado.SDK is set to Latest installed.

    4. A versão do Visual Studio está definida como mais recente instalada.Visual Studio Version is set to Latest installed.

    5. Compilar e executar é definido como computador local.Build and Run is set to Local Machine.

    6. Não se preocupe com a configuração de cenas no momento, pois você as configurará posteriormente.Do not worry about setting up Scenes right now, as you will set these up later.

    7. As configurações restantes devem ser deixadas como padrão por enquanto.The remaining settings should be left as default for now.

      Configurando o projeto do Unity

  6. Na janela configurações de compilação , clique no botão configurações do Player , isso abrirá o painel relacionado no espaço onde o Inspetor está localizado.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. Nesse painel, algumas configurações precisam ser verificadas:In this panel, a few settings need to be verified:

    1. Na guia outras configurações :In the Other Settings tab:

      1. A versão de tempo de execução de script deve ser estável (.net 3,5 equivalente).Scripting Runtime Version should be Stable (.NET 3.5 Equivalent).

      2. O back-end de script deve ser .net.Scripting Backend should be .NET.

      3. O nível de compatibilidade da API deve ser .NET 4,6.API Compatibility Level should be .NET 4.6.

        Configurando o projeto do Unity

    2. Mais adiante no painel, em configurações de XR (encontradas abaixo de configurações de publicação), suporte à realidade virtual em escala, verifique se o SDK do Windows Mixed Reality foi adicionado.Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added.

      Configurando o projeto do Unity

    3. Na guia configurações de publicação , em recursos, marque:Within the Publishing Settings tab, under Capabilities, check:

      • InternetClientInternetClient

        Configurando o projeto do Unity

  8. Depois de fazer essas alterações, feche a janela configurações de compilação .Once you have made those changes, close the Build Settings window.

  9. Salve seu projeto *arquivo * salvar projeto * *.Save your Project *File *Save Project**.

Capítulo 4-importando o pacote do InsideOutSphere UnityChapter 4 - Importing the InsideOutSphere Unity package

Importante

Se você quiser ignorar o componente de configuração do Unity deste curso e continuar diretamente no código, fique à vontade para baixar esse . unitypackage, importe-o para seu projeto como um pacote personalizadoe, em seguida, continue no capítulo 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. Você ainda precisará criar um projeto do Unity.You will still need to create a Unity Project.

Para este curso, você precisará baixar um pacote de ativos de Unity chamado InsideOutSphere. unitypackage.For this course you will need to download a Unity Asset Package called InsideOutSphere.unitypackage.

Como importar o unitypackage:How-to import the unitypackage:

  1. Com o painel do Unity na frente, clique em ativos no menu na parte superior da tela e, em seguida, clique em Importar pacote > pacote personalizado.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.

    Importando o pacote do InsideOutSphere Unity

  2. Use o seletor de arquivos para selecionar o pacote InsideOutSphere. unitypackage e clique em abrir.Use the file picker to select the InsideOutSphere.unitypackage package and click Open. Uma lista de componentes para este ativo será exibida para você.A list of components for this asset will be displayed to you. Confirme a importação clicando em importar.Confirm the import by clicking Import.

    Importando o pacote do InsideOutSphere Unity

  3. Depois de concluir a importação, você notará três novas pastas, materiais, modelos e pré-fabricados, foram adicionados à sua pasta de ativos .Once it has finished importing, you will notice three new folders, Materials, Models, and Prefabs, have been added to your Assets folder. Esse tipo de estrutura de pastas é típico para um projeto do Unity.This kind of folder structure is typical for a Unity project.

    Importando o pacote do InsideOutSphere Unity

    1. Abra a pasta modelos e você verá que o modelo InsideOutSphere foi importado.Open the Models folder, and you will see that the InsideOutSphere model has been imported.

    2. Na pasta materiais , você encontrará o material de InsideOutSpheres LAMBERT1, junto com um material chamado ButtonMaterial, que é usado pelo GazeButton, que será exibido em breve.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. A pasta pré-fabricados contém o InsideOutSphere pré-fabricado que contém o modelo InsideOutSphere model e o GazeButton.The Prefabs folder contains the InsideOutSphere prefab which contains both the InsideOutSphere model and the GazeButton.

    4. Nenhum código está incluído, você escreverá o código seguindo este curso.No code is included, you will write the code by following this course.

  4. Na hierarquia, selecione o objeto de câmera principal e atualize os seguintes componentes:Within the Hierarchy, select the Main Camera object, and update the following components:

    1. TransformaçãoTransform

      1. Posição = X: 0, Y: 0, Z: 0.Position = X: 0, Y: 0, Z: 0.

      2. Rotation = X: 0, Y: 0, Z: 0.Rotation = X: 0, Y: 0, Z: 0.

      3. Escala X: 1, Y: 1, Z: 1.Scale X: 1, Y: 1, Z: 1.

    2. CâmeraCamera

      1. Limpar sinalizadores: cor sólida.Clear Flags: Solid Color.

      2. Planos de recorte: perto de: 0,1, longe: 6.Clipping Planes: Near: 0.1, Far: 6.

        Importando o pacote do InsideOutSphere Unity

  5. Navegue até a pasta pré-fabricado e, em seguida, arraste o InsideOutSphere pré-fabricado para o painel hierarquia .Navigate to the Prefab folder, and then drag the InsideOutSphere prefab into the Hierarchy Panel.

    Importando o pacote do InsideOutSphere Unity

  6. Expanda o objeto InsideOutSphere dentro da hierarquia clicando na pequena seta ao lado dele.Expand the InsideOutSphere object within the Hierarchy by clicking the little arrow next to it. Você verá um objeto filho abaixo dele chamado GazeButton.You will see a child object beneath it called GazeButton. Isso será usado para alterar cenas e vídeos assim.This will be used to change scenes and thus videos.

    Importando o pacote do InsideOutSphere Unity

  7. Na janela do Inspetor, clique no componente de transformação do InsideOutSphere, verifique se as seguintes propriedades estão definidas:In the Inspector Window click on the InsideOutSphere's Transform component, ensure that the following properties are set:

    TRANSFORMAÇÃO-POSIÇÃOTRANSFORM - POSITION
    X 0X 0 Y 0Y 0 Z 0Z 0
    TRANSFORMAÇÃO-ROTAÇÃOTRANSFORM - ROTATION
    X 0X 0 Y -50Y -50 Z 0Z 0
    TRANSFORMAR EM ESCALATRANSFORM - SCALE
    X 1X 1 Y 1Y 1 Z 1Z 1

    Importando o pacote do InsideOutSphere Unity

  8. Clique no objeto filho GazeButton e defina sua transformação da seguinte maneira:Click on the GazeButton child object, and set its Transform as follows:

    TRANSFORMAÇÃO-POSIÇÃOTRANSFORM - POSITION
    X 3,6X 3.6 Y 1,3Y 1.3 Z 0Z 0
    TRANSFORMAÇÃO-ROTAÇÃOTRANSFORM - ROTATION
    X 0X 0 Y 0Y 0 Z 0Z 0
    TRANSFORMAR EM ESCALATRANSFORM - SCALE
    X 1X 1 Y 1Y 1 Z 1Z 1

    Importando o pacote do InsideOutSphere Unity

Capítulo 5 – criar a classe VideoControllerChapter 5 - Create the VideoController class

A classe VideoController hospeda os dois pontos de extremidade de vídeo que serão usados para transmitir o conteúdo do serviço de mídia do Azure.The VideoController class hosts the two video endpoints that will be used to stream the content from the Azure Media Service.

Para criar esta classe:To create this class:

  1. Clique com o botão direito do mouse na pasta ativo, localizada no painel projeto , e clique em criar > pasta.Right-click in the Asset Folder, located in the Project Panel, and click Create > Folder. Nomeie a pasta scripts.Name the folder Scripts.

    Criar a classe VideoController

    Criar a classe VideoController

  2. Clique duas vezes na pasta scripts para abri-la.Double click on the Scripts folder to open it.

  3. Clique com o botão direito do mouse dentro da pasta e clique em criar > # script C.Right-click inside the folder, then click Create > C# Script. Nomeie o script VideoController.Name the script VideoController.

    Criar a classe VideoController

  4. Clique duas vezes no novo script VideoController para abri-lo com o Visual Studio 2017.Double click on the new VideoController script to open it with Visual Studio 2017.

    Criar a classe VideoController

  5. Atualize os namespaces na parte superior do arquivo de código da seguinte maneira:Update the namespaces at the top of the code file as follows:

    using System.Collections;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    using UnityEngine.Video;
    
  6. Insira as variáveis a seguir na classe VideoController , juntamente com o método ativo () :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. Agora é o momento de inserir os pontos de extremidade dos vídeos do serviço de mídia do Azure:Now is the time to enter the endpoints from your Azure Media Service videos:

    1. O primeiro na variável video1endpoint .The first into the video1endpoint variable.

    2. O segundo na variável video2endpoint .The second into the video2endpoint variable.

    Aviso

    Há um problema conhecido com o uso de https no Unity, com a versão 2017.4.1 F1.There is a known issue with using https within Unity, with version 2017.4.1f1. Se os vídeos fornecerem um erro na reprodução, tente usar "http" em seu lugar.If the videos provide an error on play, try using 'http' instead.

  8. Em seguida, o método Start () precisa ser editado.Next, the Start() method needs to be edited. Esse método será disparado sempre que o usuário alternar a cena (consequentemente, alternando o vídeo) examinando o botão olhar.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. Após o método Start () , insira o método PlayVideo () IEnumerator , que será usado para iniciar vídeos diretamente (portanto, nenhum stutter é visto).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. O último método necessário para essa classe é o método ChangeScene () , que será usado para alternar entre cenas.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");
        }
    

    Dica

    O método ChangeScene () usa um recurso C útil # chamado operador condicional.The ChangeScene() method uses a handy C# feature called the Conditional Operator. Isso permite que as condições sejam verificadas e, em seguida, os valores retornados com base no resultado da verificação, tudo dentro de uma única instrução.This allows for conditions to be checked, and then values returned based on the outcome of the check, all within a single statement. Siga este link para saber mais sobre o operador condicional.Follow this link to learn more about Conditional Operator.

  11. Salve suas alterações no Visual Studio antes de retornar ao Unity.Save your changes in Visual Studio before returning to Unity.

  12. De volta ao editor do Unity, clique e arraste a classe VideoController [de] {. Underline} a pasta scripts para o objeto da câmera principal no painel hierarquia .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. Clique na câmera principal e examine o painel Inspetor.Click on the Main Camera and look at the Inspector Panel. Você observará que, dentro do componente de script recém-adicionado, há um campo com um valor vazio.You will notice that within the newly added Script component, there is a field with an empty value. Este é um campo de referência, que tem como alvo as variáveis públicas no seu código.This is a reference field, which targets the public variables within your code.

  14. Arraste o objeto InsideOutSphere do painel hierarquia para o slot de esfera , conforme mostrado na imagem abaixo.Drag the InsideOutSphere object from the Hierarchy Panel to the Sphere slot, as shown in the image below.

    Criar a classe VideoController  criar a classe VideoControllerCreate the VideoController class Create the VideoController class

Capítulo 6-criar a classe olharChapter 6 - Create the Gaze class

Essa classe é responsável por criar um Raycast que será projetado para a frente da câmera principal, para detectar qual objeto o usuário está olhando.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. Nesse caso, o Raycast precisará identificar se o usuário está olhando para o objeto GazeButton na cena e disparar um comportamento.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.

Para criar esta classe:To create this Class:

  1. Vá para a pasta scripts que você criou anteriormente.Go to the Scripts folder you created previously.

  2. Clique com o botão direito do mouse no painel projeto , *criar * C # script * *.Right-click in the Project Panel, *Create *C# Script**. Nomeie o script olhar.Name the script Gaze.

  3. Clique duas vezes no novo **script olhar_ para abri-lo com _* Visual Studio 2017.*Double click on the new **Gaze_ script to open it with _* Visual Studio 2017.*

  4. Verifique se o namespace a seguir está na parte superior do script e remova todos os outros:Ensure the following namespace is at the top of the script, and remove any others:

    using UnityEngine;
    
  5. Em seguida, adicione as seguintes variáveis dentro da classe olhar :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. Agora, o código para os métodos ativo () e Iniciar () precisa ser adicionado.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. Adicione o código a seguir no método Update () para projetar um Raycast e detectar o destino atingido: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. Salve suas alterações no Visual Studio antes de retornar ao Unity.Save your changes in Visual Studio before returning to Unity.

  9. Clique e arraste a classe olhar da pasta scripts para o objeto de câmera principal no painel hierarquia .Click and drag the Gaze class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

Capítulo 7-configurar as duas cenas de UnityChapter 7 - Setup the two Unity Scenes

A finalidade deste capítulo é configurar as duas cenas, cada uma hospedando um vídeo para transmitir.The purpose of this Chapter is to setup the two scenes, each hosting a video to stream. Você duplicará a cena que já criou, para que não seja necessário configurá-la novamente, embora você editará a nova cena, para que o objeto GazeButton esteja em um local diferente e tenha uma aparência diferente.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. Isso é para mostrar como alterar entre cenas.This is to show how to change between scenes.

  1. Faça isso indo para arquivo > salvar cena como.... Uma janela salvar será exibida.Do this by going to File > Save Scene as.... A save window will appear. Clique no botão nova pasta .Click the New folder button.

    Capítulo 7-configurar as duas cenas de Unity

  2. Nomeie a pasta como cenas.Name the folder Scenes.

  3. A janela salvar cena ainda estará aberta.The Save Scene window will still be open. Abra sua pasta de cenas recém-criada.Open your newly created Scenes folder.

  4. No campo nome do arquivo: texto, digite VideoScene1 e pressione salvar.In the File name: text field, type VideoScene1, then press Save.

  5. De volta ao Unity, abra a pasta cenas e clique com o botão esquerdo do mouse no arquivo VideoScene1 .Back in Unity, open your Scenes folder, and left-click your VideoScene1 file. Use o teclado e pressione Ctrl + D para duplicar essa cenaUse your keyboard, and press Ctrl + D you will duplicate that scene

    Dica

    O comando duplicado também pode ser executado navegando para Editar > duplicado.The Duplicate command can also be performed by navigating to Edit > Duplicate.

  6. O Unity incrementará automaticamente o número de nomes de cena, mas o verificará de qualquer forma, para garantir que ele corresponda ao código inserido anteriormente.Unity will automatically increment the scene names number, but check it anyway, to ensure it matches the previously inserted code.

    Você deve ter VideoScene1 e VideoScene2.You should have VideoScene1 and VideoScene2.

  7. Com seus dois bastidores, vá para arquivo > configurações de Build.With your two scenes, go to File > Build Settings. Com a janela configurações de compilação aberta, arraste suas cenas para a seção cenas na compilação .With the Build Settings window open, drag your scenes to the Scenes in Build section.

    Capítulo 7 – configurar as duas cenas de Unity

    Dica

    Você pode selecionar os dois bastidores da sua pasta de cenas pressionando o botão Ctrl e, em seguida, clicando em cada uma das cenas e, por fim, arrastando ambos.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. Feche a janela configurações de Build e clique duas vezes em VideoScene2.Close the Build Settings window, and double click on VideoScene2.

  9. Com a segunda cena aberta, clique no objeto filho GazeButton do InsideOutSphere e defina sua transformação da seguinte maneira:With the second scene open, click on the GazeButton child object of the InsideOutSphere, and set its Transform as follows:

    TRANSFORMAÇÃO-POSIÇÃOTRANSFORM - POSITION
    X 0X 0 Y 1,3Y 1.3 Z 3,6Z 3.6
    TRANSFORMAÇÃO-ROTAÇÃOTRANSFORM - ROTATION
    X 0X 0 Y 0Y 0 Z 0Z 0
    TRANSFORMAR EM ESCALATRANSFORM - SCALE
    X 1X 1 Y 1Y 1 Z 1Z 1
  10. Com o filho GazeButton ainda selecionado, examine o Inspetor e o filtro de malha.With the GazeButton child still selected, look at the Inspector and at the Mesh Filter. Clique no pequeno destino ao lado do campo de referência de malha :Click the little target next to the Mesh reference field:

    Capítulo 7 – configurar as duas cenas de Unity

  11. Uma janela pop-up selecionar malha será exibida.A Select Mesh popup window will appear. Clique duas vezes na malha do cubo na lista de ativos.Double click the Cube mesh from the list of Assets.

    Capítulo 7 – configurar as duas cenas de Unity

  12. O filtro de malha será atualizado e agora será um cubo.The Mesh Filter will update, and now be a Cube. Agora, clique no ícone de engrenagem ao lado de Colisor de esfera e clique em remover componente para excluir o colisor desse objeto.Now, click the Gear icon next to Sphere Collider and click Remove Component, to delete the collider from this object.

    Capítulo 7 – configurar as duas cenas de Unity

  13. Com o GazeButton ainda selecionado, clique no botão Adicionar componente na parte inferior do Inspetor.With the GazeButton still selected, click the Add Component button at the bottom of the Inspector. No campo de pesquisa, digite Box e o colisor do box será uma opção – clique nele para adicionar um Colisor de caixa ao seu objeto GazeButton .In the search field, type box, and Box Collider will be an option -- click that, to add a Box Collider to your GazeButton object.

    Capítulo 7 – configurar as duas cenas de Unity

  14. O GazeButton agora é parcialmente atualizado, para parecer diferente, no entanto, agora você criará um novo material, para que ele pareça completamente diferente e seja mais fácil de reconhecer como um objeto diferente do objeto na primeira cena.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. Navegue até a pasta materiais , no painel Projeto.Navigate to your Materials folder, within the Project Panel. Duplique o material ButtonMaterial (pressione Ctrl + D no teclado ou clique com o botão esquerdo do mouse no material e, em seguida, na opção de menu Editar arquivo, selecione duplicar).Duplicate the ButtonMaterial Material (press Ctrl + D on the keyboard, or left-click the Material, then from the Edit file menu option, select Duplicate).

    Capítulo 7 – configurar os dois bastidores do Unity  capítulo 7 – configurar as duas cenas do UnityChapter 7 -- Setup the two Unity Scenes Chapter 7 -- Setup the two Unity Scenes

  16. Selecione o novo material de ButtonMaterial (aqui chamado ButtonMaterial 1) e, dentro do Inspetor, clique na janela de cores albedo .Select the new ButtonMaterial Material (here named ButtonMaterial 1), and within the Inspector, click the Albedo color window. Um pop-up será exibido, no qual você pode selecionar outra cor (escolha o que desejar) e, em seguida, feche o pop-up.A popup will appear, where you can select another color (choose whichever you like), then close the popup. O material será sua própria instância e diferente do original.The Material will be its own instance, and different to the original.

    Capítulo 7 – configurar as duas cenas de Unity

  17. Arraste o novo material para o filho do GazeButton , para agora atualizar completamente sua aparência, de modo que seja facilmente distinguivel do primeiro botão de cenas.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.

    Capítulo 7 – configurar as duas cenas de Unity

  18. Neste ponto, você pode testar o projeto no editor antes de criar o projeto UWP.At this point you can test the project in the Editor before building the UWP project.

    • Pressione o botão reproduzir no Editor e desgaste do headset.Press the Play button in the Editor and wear your headset.

      Capítulo 7 – configurar as duas cenas de Unity

  19. Examine os dois objetos GazeButton para alternar entre o primeiro e o segundo vídeo.Look at the two GazeButton objects to switch between the first and second video.

Capítulo 8-compilar a solução UWPChapter 8 - Build the UWP Solution

Depois de garantir que o editor não tem erros, você estará pronto para compilar.Once you have ensured that the editor has no errors, you are ready to Build.

Para compilar:To Build:

  1. Salve a cena atual clicando em arquivo > salvar.Save the current scene by clicking on File > Save.

  2. Marque a caixa chamado # projetos do Unity C (isso é importante porque ele permitirá que você edite as classes após a conclusão da compilação).Check the box called Unity C# Projects (this is important because it will allow you to edit the classes after build is completed).

  3. Vá para arquivo > configurações de compilação, clique em Compilar.Go to File > Build Settings, click on Build.

  4. Você será solicitado a selecionar a pasta na qual deseja criar a solução.You will be prompted to select the folder where you want to build the Solution.

  5. Crie uma pasta Builds e dentro dessa pasta crie outra pasta com um nome apropriado de sua escolha.Create a BUILDS folder and within that folder create another folder with an appropriate name of your choice.

  6. Clique na nova pasta e, em seguida, clique em Selecionar pasta, para escolher essa pasta, para iniciar a compilação nesse local.Click your new folder and then click Select Folder, so to choose that folder, to begin the build at that location.

    Capítulo 8--criar a solução UWP  capítulo 8--criar a solução UWPChapter 8 -- Build the UWP Solution Chapter 8 -- Build the UWP Solution

  7. Depois que o Unity terminar a compilação (pode levar algum tempo), ele abrirá uma janela do Explorador de arquivos no local de sua compilação.Once Unity has finished building (it might take some time), it will open a File Explorer window at the location of your build.

Capítulo 9 – implantar no computador localChapter 9 - Deploy on Local Machine

Depois que a compilação for concluída, uma janela Explorador de arquivos será exibida no local da sua compilação.Once the build has been completed, a File Explorer window will appear at the location of your build. Abra a pasta que você nomeou e criou e clique duas vezes no arquivo da solução (. sln) dentro dessa pasta para abrir sua solução com o 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.

A única coisa que resta fazer é implantar seu aplicativo em seu computador (ou computador local).The only thing left to do is deploy your app to your computer (or Local Machine).

Para implantar no computador local:To deploy to Local Machine:

  1. No Visual Studio 2017, abra o arquivo de solução que acabou de ser criado.In Visual Studio 2017, open the solution file that has just been created.

  2. Na plataforma da solução, selecione x86, computador local.In the Solution Platform, select x86, Local Machine.

  3. Na configuração da solução , selecione depurar.In the Solution Configuration select Debug.

    Capítulo 9 – implantar no computador local

  4. Agora, você precisará restaurar todos os pacotes para sua solução.You will now need to restore any packages to your solution. Clique com o botão direito do mouse em sua solução e clique em restaurar pacotes NuGet para solução...Right-click on your Solution, and click Restore NuGet Packages for Solution...

    Observação

    Isso é feito porque os pacotes que o Unity criou precisam ser destinados para trabalhar com suas referências de computadores locais.This is done because the packages which Unity built need to be targeted to work with your local machines references.

  5. Vá para o menu Compilar e clique em implantar solução para Sideload o aplicativo em seu computador.Go to Build menu and click on Deploy Solution to sideload the application to your machine. O Visual Studio primeiro compilará e, em seguida, implantará seu aplicativo.Visual Studio will first build and then deploy your application.

  6. Seu aplicativo agora deve aparecer na lista de aplicativos instalados, pronto para ser iniciado.Your App should now appear in the list of installed apps, ready to be launched.

    Capítulo 9 – implantar no computador local

Ao executar o aplicativo de realidade misturada, você estará dentro do modelo de InsideOutSphere que você usou em seu aplicativo.When you run the Mixed Reality application, you will you be within the InsideOutSphere model which you used within your app. Essa esfera será onde o vídeo será transmitido, fornecendo uma exibição de 360 graus do vídeo de entrada (que foi cofilme para esse tipo de perspectiva).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). Não se surpreenda se o vídeo levar alguns segundos para ser carregado, seu aplicativo estará sujeito à velocidade da Internet disponível, uma vez que o vídeo precisa ser buscado e então baixado, portanto, para transmitir em seu aplicativo.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. Quando estiver pronto, altere as cenas e abra o segundo vídeo, por nuvens na esfera vermelha!When you are ready, change scenes and open your second video, by gazing at the red sphere! Em seguida, fique à vontade para voltar, usando o cubo azul na segunda cena!Then feel free to go back, using the blue cube in the second scene!

Seu aplicativo de serviço de mídia do Azure concluídoYour finished Azure Media Service application

Parabéns, você criou um aplicativo de realidade misturada que aproveita o serviço de mídia do Azure para transmitir vídeos 360.Congratulations, you built a mixed reality app that leverages the Azure Media Service to stream 360 videos.

resultado do laboratório

resultado do laboratório

Exercícios de bônusBonus Exercises

Exercício 1Exercise 1

É totalmente possível usar apenas uma única cena para alterar vídeos dentro deste tutorial.It is entirely possible to only use a single scene to change videos within this tutorial. Experimente seu aplicativo e torne-o em uma única cena!Experiment with your application and make it into a single scene! Talvez até mesmo Adicione outro vídeo à combinação.Perhaps even add another video to the mix.

Exercício 2Exercise 2

Experimente com o Azure e o Unity e tente implementar a capacidade para o aplicativo selecionar automaticamente um vídeo com um tamanho de arquivo diferente, dependendo da força de uma conexão com a Internet.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.