MR e Azure 306: Streaming videoMR and Azure 306: Streaming video


Nota

Le esercitazioni di Mixed Reality Academy sono state progettate in base a HoloLens (prima generazione) e ai visori VR immersive di realtà mista.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. Pertanto, riteniamo importante lasciarle a disposizione degli sviluppatori a cui serve ancora materiale sussidiario per lo sviluppo di questi dispositivi.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. Queste esercitazioni non verranno aggiornate con i set di strumenti o le interazioni più recenti usati per HoloLens 2.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. Rimarranno invariate per consentire di continuare a lavorare sui dispositivi supportati.They will be maintained to continue working on the supported devices. In futuro sarà disponibile una nuova serie di esercitazioni che illustrano come sviluppare per 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. Questo avviso verrà aggiornato con un collegamento a queste esercitazioni quando vengono pubblicate.This notice will be updated with a link to those tutorials when they are posted.


prodotto finale-avvio  prodotto finalefinal product -start final product -start

In questo corso si apprenderà come connettere i servizi multimediali di Azure a un'esperienza di VR per la realtà mista di Windows per consentire la riproduzione video in streaming di 360 gradi su cuffie immersive.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.

Servizi multimediali di Azure è una raccolta di servizi che offre servizi di streaming video di qualità broadcast per raggiungere un numero elevato di destinatari sui dispositivi mobili attualmente più diffusi.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. Per altre informazioni, visitare la pagina servizi multimediali di Azure.For more information, visit the Azure Media Services page.

Dopo aver completato questo corso, si disporrà di un'applicazione per cuffie immersiva mista, che sarà in grado di eseguire le operazioni seguenti:Having completed this course, you will have a mixed reality immersive headset application, which will be able to do the following:

  1. Recuperare un video di 360 Degree da un' archiviazione di Azure tramite il servizio multimediale di Azure.Retrieve a 360 degree video from an Azure Storage, through the Azure Media Service.

  2. Visualizza il video recuperato di 360 Degree in una scena Unity.Display the retrieved 360 degree video within a Unity scene.

  3. Spostarsi tra due scene, con due video diversi.Navigate between two scenes, with two different videos.

Nell'applicazione, spetta all'utente come integrare i risultati con la progettazione.In your application, it is up to you as to how you will integrate the results with your design. Questo corso è stato progettato per insegnare come integrare un servizio di Azure con il progetto Unity.This course is designed to teach you how to integrate an Azure Service with your Unity Project. Per migliorare l'applicazione di realtà mista, è compito dell'utente sfruttare le conoscenze acquisite in questo corso.It is your job to use the knowledge you gain from this course to enhance your mixed reality application.

Supporto di dispositiviDevice support

CorsoCourse HoloLensHoloLens Visori VR immersiveImmersive headsets
MR e Azure 306: Streaming videoMR and Azure 306: Streaming video ✔️✔️

PrerequisitiPrerequisites

Nota

Questa esercitazione è progettata per gli sviluppatori che hanno esperienza di base con Unity e C#.This tutorial is designed for developers who have basic experience with Unity and C#. Tenere inoltre presente che i prerequisiti e le istruzioni scritte in questo documento rappresentano gli elementi testati e verificati al momento della stesura del documento (maggio 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). È possibile utilizzare il software più recente, come indicato nell' articolo installare gli strumenti, ma non si presuppone che le informazioni in questo corso corrispondano perfettamente a quelle disponibili nel software più recente rispetto a quanto indicato di seguito.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.

Per questo corso è consigliabile usare i componenti hardware e software seguenti:We recommend the following hardware and software for this course:

Prima di iniziareBefore you start

  1. Per evitare che si verifichino problemi durante la compilazione di questo progetto, è consigliabile creare il progetto indicato in questa esercitazione in una cartella radice o quasi radice (i percorsi di cartella lunghi possono causare problemi in fase di compilazione).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. Configurare e testare l'auricolare immersiva della realtà mista.Set up and test your Mixed Reality Immersive Headset.

    Nota

    Non sarà necessario alcun controller di movimento per questo corso.You will not require Motion Controllers for this course. Se è necessario supportare la configurazione dell'auricolare immersivo, fare clic sul collegamento per configurare la realtà mista di Windows.If you need support setting up the Immersive Headset, please click link on how to set up Windows Mixed Reality.

Capitolo 1-portale di Azure: creazione dell'account di archiviazione di AzureChapter 1 - The Azure Portal: creating the Azure Storage Account

Per usare il servizio di archiviazione di Azure, è necessario creare e configurare un account di archiviazione nell'portale di Azure.To use the Azure Storage Service, you will need to create and configure a Storage Account in the Azure portal.

  1. Accedere al portale di Azure.Log in to the Azure Portal.

    Nota

    Se non si dispone già di un account Azure, sarà necessario crearne uno.If you do not already have an Azure account, you will need to create one. Se si segue questa esercitazione in una classe o in una situazione di laboratorio, rivolgersi all'insegnante o a uno dei Proctor per ottenere assistenza nella configurazione del nuovo account.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. Una volta effettuato l'accesso, fare clic su account di archiviazione nel menu a sinistra.Once you are logged in, click on Storage accounts in the left menu.

    Configurazione dell'account di archiviazione di Azure

  3. Nella scheda account di archiviazione fare clic su Aggiungi.On the Storage Accounts tab, click on Add.

    Configurazione dell'account di archiviazione di Azure

  4. Nella scheda Crea account di archiviazione :In the Create storage account tab:

    1. Inserire un nome per l'account, tenere presente che questo campo accetta solo numeri e lettere minuscole.Insert a Name for your account, be aware this field only accepts numbers, and lowercase letters.

    2. Per modello di distribuzione selezionare Resource Manager.For Deployment model, select Resource manager.

    3. Per tipo di account selezionare archiviazione (utilizzo generico V1).For Account kind, select Storage (general purpose v1).

    4. Per prestazioni, selezionare **standard *.**For Performance, select Standard*.

    5. Per la replica selezionare archiviazione con ridondanza locale (con ridondanza locale).For Replication select Locally-redundant storage (LRS).

    6. Lasciare il trasferimento sicuro necessario come disabilitato.Leave Secure transfer required as Disabled.

    7. Selezionare una Sottoscrizione.Select a Subscription.

    8. Scegliere un gruppo di risorse o crearne uno nuovo.Choose a Resource group or create a new one. Un gruppo di risorse consente di monitorare, controllare l'accesso, effettuare il provisioning e gestire la fatturazione per una raccolta di asset di Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets.

    9. Determinare il percorso del gruppo di risorse (se si sta creando un nuovo gruppo di risorse).Determine the Location for your resource group (if you are creating a new Resource Group). Il percorso dovrebbe trovarsi idealmente nell'area in cui verrà eseguita l'applicazione.The location would ideally be in the region where the application would run. Alcune risorse di Azure sono disponibili solo in determinate aree geografiche.Some Azure assets are only available in certain regions.

  5. È necessario confermare di aver compreso i termini e le condizioni applicati a questo servizio.You will need to confirm that you have understood the Terms and Conditions applied to this Service.

    Configurazione dell'account di archiviazione di Azure

  6. Una volta fatto clic su Crea, sarà necessario attendere il completamento della creazione del servizio. l'operazione potrebbe richiedere un minuto.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  7. Dopo la creazione dell'istanza del servizio, verrà visualizzata una notifica nel portale.A notification will appear in the portal once the Service instance is created.

    Configurazione dell'account di archiviazione di Azure

  8. A questo punto non è necessario seguire la risorsa, ma è sufficiente passare al capitolo successivo.At this point you do not need to follow the resource, simply move to the next Chapter.

Capitolo 2-portale di Azure: creazione del servizio multimedialeChapter 2 - The Azure Portal: creating the Media Service

Per usare il servizio multimediale di Azure, è necessario configurare un'istanza del servizio da rendere disponibile all'applicazione (dove il titolare dell'account deve essere un amministratore).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. Nel portale di Azure fare clic su Crea una risorsa nell'angolo in alto a sinistra e cercare servizio multimediale, quindi premere invio.In the Azure Portal, click on Create a resource in the top left corner, and search for Media Service, press Enter. La risorsa desiderata dispone attualmente di un'icona rosa; fare clic su questo pulsante per visualizzare una nuova pagina.The resource you want currently has a pink icon; click this, to show a new page.

    Portale di Azure

  2. La nuova pagina fornirà una descrizione del servizio multimediale.The new page will provide a description of the Media Service. Nella parte inferiore sinistra del prompt, fare clic sul pulsante Crea per creare un'associazione con il servizio.At the bottom left of this prompt, click the Create button, to create an association with this service.

    Portale di Azure

  3. Una volta fatto clic su Crea , verrà visualizzato un pannello in cui è necessario fornire alcuni dettagli sul nuovo servizio multimediale:Once you have clicked on Create a panel will appear where you need to provide some details about your new Media Service:

    1. Inserire il nome dell'account desiderato per questa istanza del servizio.Insert your desired Account Name for this service instance.

    2. Selezionare una Sottoscrizione.Select a Subscription.

    3. Scegliere un gruppo di risorse o crearne uno nuovo.Choose a Resource Group or create a new one. Un gruppo di risorse consente di monitorare, controllare l'accesso, effettuare il provisioning e gestire la fatturazione per una raccolta di asset di Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. Si consiglia di lasciare tutti i servizi di Azure associati a un singolo progetto (ad esempio questi Lab) in un gruppo di risorse comune).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).

    Per altre informazioni sui gruppi di risorse di Azure, seguire questo collegamento per informazioni su come gestire i gruppi di risorse di Azure.If you wish to read more about Azure Resource Groups, please follow this link on how to manage Azure Resource Groups.

    1. Determinare il percorso del gruppo di risorse (se si sta creando un nuovo gruppo di risorse).Determine the Location for your resource group (if you are creating a new Resource Group). Il percorso dovrebbe trovarsi idealmente nell'area in cui verrà eseguita l'applicazione.The location would ideally be in the region where the application would run. Alcune risorse di Azure sono disponibili solo in determinate aree geografiche.Some Azure assets are only available in certain regions.

    2. Per la sezione account di archiviazione , fare clic sulla sezione selezionare... , quindi fare clic sull'account di archiviazione creato nell'ultimo capitolo.For the Storage Account section, click the Please select... section, then click the Storage Account you created in the last Chapter.

    3. Sarà inoltre necessario confermare di aver compreso i termini e le condizioni applicati a questo servizio.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    4. Fare clic su Crea.Click Create.

      Portale di Azure

  4. Una volta fatto clic su Crea, sarà necessario attendere il completamento della creazione del servizio. l'operazione potrebbe richiedere un minuto.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  5. Dopo la creazione dell'istanza del servizio, verrà visualizzata una notifica nel portale.A notification will appear in the portal once the Service instance is created.

    Portale di Azure

  6. Fare clic sulla notifica per esplorare la nuova istanza del servizio.Click on the notification to explore your new Service instance.

    Portale di Azure

  7. Fare clic sul pulsante Vai alla risorsa nella notifica per esplorare la nuova istanza del servizio.Click the Go to resource button in the notification to explore your new Service instance.

  8. Nella pagina nuovo servizio multimediale, all'interno del pannello a sinistra, fare clic sul collegamento Asset , che è circa a metà.Within the new Media service page, within the panel on the left, click on the Assets link, which is about halfway down.

  9. Nella pagina successiva, nell'angolo in alto a sinistra della pagina, fare clic su carica.On the next page, in the top-left corner of the page, click Upload.

    Portale di Azure

  10. Fare clic sull'icona della cartella per sfogliare i file e selezionare il primo video 360 che si desidera trasmettere in streaming.Click on the Folder icon to browse your files and select the first 360 Video that you would like to stream.

    È possibile seguire questo collegamento per scaricare un video di esempio.You can follow this link to download a sample video.

    Portale di Azure

Avviso

I nomi di file lunghi possono causare un problema con il codificatore: pertanto, per assicurarsi che i video non richiedano problemi, è consigliabile abbreviare la lunghezza dei nomi dei file video.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. L'indicatore di stato diventerà verde al termine del caricamento del video.The progress bar will turn green when the video has finished uploading.

    Portale di Azure

  2. Fai clic sul testo precedente (yourservicename-assets) per tornare alla pagina Asset .Click on the text above (yourservicename - Assets) to return to the Assets page.

  3. Si noterà che il video è stato caricato correttamente.You will notice that your video has been successfully uploaded. Fare clic su di esso.Click on it.

    Portale di Azure

  4. Nella pagina a cui si è reindirizzati verranno visualizzate informazioni dettagliate sul video.The page you are redirected to will show you detailed information about your video. Per poter usare il video, è necessario codificarlo facendo clic sul pulsante Encode ( codifica ) nella parte superiore sinistra della pagina.To be able to use your video you need to encode it, by clicking the Encode button at the top-left of the page.

    Portale di Azure

  5. Verrà visualizzato un nuovo pannello a destra, in cui sarà possibile impostare le opzioni di codifica per il file.A new panel will appear to the right, where you will be able to set encoding options for your file. Impostare le proprietà seguenti (alcune saranno già impostate per impostazione predefinita):Set the following properties (some will be already set by default):

    1. Nome codificatore multimediale Media Encoder standardMedia encoder name Media Encoder Standard

    2. Codifica del contenuto preimpostato contenuto MP4 a più velocità in bitEncoding preset Content Adaptive Multiple Bitrate MP4

    3. Nome processo Media Encoder standard elaborazione di Video1.mp4Job name Media Encoder Standard processing of Video1.mp4

    4. Nome asset del supporto di OutputVideo1.mp4--Media Encoder standard codificatoOutput media asset name Video1.mp4 -- Media Encoder Standard encoded

      Portale di Azure

  6. Fare clic sul pulsante Create (Crea).Click the Create button.

  7. Si noterà una barra con il processo di codifica aggiunto, si fa clic su tale barra e viene visualizzato un pannello con lo stato di codifica visualizzato.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.

    Portale di Azure

    Portale di Azure

  8. Attendere il completamento del processo.Wait for the Job to be completed. Al termine, è possibile chiudere il pannello con ' X ' nella parte superiore destra del pannello.Once it is done, feel free to close the panel with the 'X' at the top right of that panel.

    Portale di Azure

    Portale di Azure

    Importante

    Il tempo necessario dipende dalla dimensione del file del video.The time this takes, depends on the file size of your video. Questo processo può richiedere molto tempo.This process can take quite some time.

  9. Ora che è stata creata la versione codificata del video, è possibile pubblicarla per renderla accessibile.Now that the encoded version of the video has been created, you can publish it to make it accessible. A tale scopo, fare clic sulle risorse dei collegamenti blu per tornare alla pagina asset.To do so, click the blue link Assets to go back to the assets page.

    Portale di Azure

  10. Il video verrà visualizzato insieme a un altro, che è di tipo asset con MP4 a bitrate multipli.You will see your video along with another, which is of Asset Type Multi-Bitrate MP4.

    Portale di Azure

    Nota

    È possibile notare che il nuovo asset, insieme al video iniziale, è sconosciuto e contiene ' 0' byte per la dimensione, ma è sufficiente aggiornare la finestra affinché venga aggiornata.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. Fare clic su questo nuovo asset.Click this new asset.

    Portale di Azure

  12. Verrà visualizzato un pannello simile a quello usato in precedenza, ma si tratta di un asset diverso.You will see a similar panel to the one you used before, just this is a different asset. Fare clic sul pulsante pubblica nella parte superiore del centro della pagina.Click the Publish button located at the top-center of the page.

    Portale di Azure

  13. Verrà richiesto di impostare un localizzatore, ovvero il punto di ingresso, per file/s negli asset.You will be prompted to set a Locator, which is the entry point, to file/s in your Assets. Per lo scenario, impostare le proprietà seguenti:For your scenario set the following properties:

    1. Tipo di localizzatore > Progressive.Locator type > Progressive.

    2. La Data e l' ora verranno impostate per l'utente, dalla data corrente, a un'ora futura (100 anni in questo 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). Lasciarlo invariato o modificarlo in base alle esigenze.Leave as is or change it to suit.

    Nota

    Per altre informazioni sui localizzatori e sulle opzioni che è possibile scegliere, vedere la documentazione di servizi multimediali di Azure.For more information about Locators, and what you can choose, visit the Azure Media Services Documentation.

  14. Nella parte inferiore del pannello fare clic sul pulsante Aggiungi .At the bottom of that panel, click on the Add button.

    Portale di Azure

  15. Il video è ora pubblicato e può essere trasmesso tramite il relativo endpoint.Your video is now published and can be streamed by using its endpoint. La pagina è una sezione di file .Further down the page is a Files section. Questo è il punto in cui saranno le diverse versioni codificate del video.This is where the different encoded versions of your video will be. Selezionare la risoluzione più alta possibile (nell'immagine seguente è il file 1920x960) e quindi verrà visualizzato un pannello a destra.Select the highest possible resolution one (in the image below it is the 1920x960 file), and then a panel to the right will appear. Qui sarà disponibile un URL di download.There you will find a Download URL. Copiare questo endpoint come verrà usato in un secondo momento nel codice.Copy this Endpoint as you will use it later in your code.

    Portale di Azure

    Portale di Azure

    Nota

    È anche possibile premere il pulsante Riproduci per riprodurre il video e testarlo.You can also press the Play button to play your video and test it.

  16. È ora necessario caricare il secondo video che verrà usato in questo Lab.You now need to upload the second video that you will use in this Lab. Seguire i passaggi precedenti, ripetendo lo stesso processo per il secondo video.Follow the steps above, repeating the same process for the second video. Assicurarsi di copiare anche il secondo endpoint .Ensure you copy the second Endpoint also. Usare il collegamento seguente per scaricare un secondo video.Use the following link to download a second video.

  17. Dopo la pubblicazione di entrambi i video, è possibile passare al capitolo successivo.Once both videos have been published, you are ready to move to the next Chapter.

Capitolo 3-configurazione del progetto UnityChapter 3 - Setting up the Unity Project

Di seguito è riportata una configurazione tipica per lo sviluppo con la realtà mista e, di conseguenza, un modello valido per altri progetti.The following is a typical set up for developing with the Mixed Reality, and as such, is a good template for other projects.

  1. Aprire Unity e fare clic su New.Open Unity and click New.

    Portale di Azure

  2. A questo punto sarà necessario specificare un nome di progetto Unity, inserire Mr _ 360VideoStreaming.You will now need to provide a Unity Project name, insert MR_360VideoStreaming.. Verificare che il tipo di progetto sia impostato su 3D.Make sure the project type is set to 3D. Impostare il percorso su un punto appropriato (ricordare che più vicino alle directory radice è migliore).Set the Location to somewhere appropriate for you (remember, closer to root directories is better). Fare quindi clic su Crea progetto.Then, click Create project.

    Portale di Azure

  3. Con Unity aperto, vale la pena controllare che l' editor di script predefinito sia impostato su Visual Studio.With Unity open, it is worth checking the default Script Editor is set to Visual Studio. Passare a modifica Preferenze e quindi dalla nuova finestra passare a strumenti esterni.Go to Edit Preferences and then from the new window, navigate to External Tools. Modificare l' editor di script esterno in Visual Studio 2017.Change External Script Editor to Visual Studio 2017. Chiudere la finestra delle Preferenze .Close the Preferences window.

    Portale di Azure

  4. Passare quindi a impostazioni di compilazione File e passare alla piattaforma piattaforma UWP (Universal Windows Platform), facendo clic sul pulsante Switch Platform .Next, go to File Build Settings and switch the platform to Universal Windows Platform, by clicking on the Switch Platform button.

  5. Assicurarsi inoltre che:Also make sure that:

    1. Il dispositivo di destinazione è impostato su qualsiasi dispositivo.Target Device is set to Any Device.

    2. Il tipo di compilazione è impostato su D3D.Build Type is set to D3D.

    3. SDK è impostato sull' ultima versione installata.SDK is set to Latest installed.

    4. La versione di Visual Studio è impostata su installazione più recente.Visual Studio Version is set to Latest installed.

    5. Compilazione ed esecuzione è impostato su computer locale.Build and Run is set to Local Machine.

    6. Non preoccuparti di configurare le scene in questo momento, perché verranno impostate in un secondo momento.Do not worry about setting up Scenes right now, as you will set these up later.

    7. Per il momento le impostazioni rimanenti devono essere lasciate come predefinite.The remaining settings should be left as default for now.

      Configurazione del progetto Unity

  6. Nella finestra impostazioni di compilazione fare clic sul pulsante Impostazioni lettore . verrà aperto il pannello correlato nello spazio in cui si trova il controllo .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 questo pannello è necessario verificare alcune impostazioni:In this panel, a few settings need to be verified:

    1. Nella scheda altre impostazioni :In the Other Settings tab:

      1. La versione di runtime di Scripting deve essere stabile (equivalente a .NET 3,5).Scripting Runtime Version should be Stable (.NET 3.5 Equivalent).

      2. Il back-end di scripting deve essere .NET.Scripting Backend should be .NET.

      3. Il livello di compatibilità API deve essere .NET 4,6.API Compatibility Level should be .NET 4.6.

        Configurazione del progetto Unity

    2. Nella parte inferiore del pannello, nelle impostazioni di XR (disponibili sotto le impostazioni di pubblicazione), verificare la realtà virtuale supportata, verificare che sia stato aggiunto Windows Mixed Reality SDK .Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added.

      Configurazione del progetto Unity

    3. Nella scheda impostazioni di pubblicazione , in funzionalità, selezionare:Within the Publishing Settings tab, under Capabilities, check:

      • InternetClientInternetClient

        Configurazione del progetto Unity

  8. Dopo aver apportato queste modifiche, chiudere la finestra impostazioni di compilazione .Once you have made those changes, close the Build Settings window.

  9. Salvare il progetto *file * Salva progetto * *.Save your Project *File *Save Project**.

Capitolo 4-importazione del pacchetto InsideOutSphere UnityChapter 4 - Importing the InsideOutSphere Unity package

Importante

Se si desidera ignorare il componente di configurazione di Unity di questo corso e continuare direttamente con il codice, è possibile scaricarlo . file unitypackage Tools, importarlo nel progetto come pacchetto personalizzatoe continuare dal capitolo 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. Sarà comunque necessario creare un progetto Unity.You will still need to create a Unity Project.

Per questo corso sarà necessario scaricare un pacchetto di asset Unity denominato InsideOutSphere. file unitypackage Tools.For this course you will need to download a Unity Asset Package called InsideOutSphere.unitypackage.

Procedura: importare il file unitypackage Tools:How-to import the unitypackage:

  1. Con il dashboard Unity, fare clic su Asset nel menu nella parte superiore della schermata, quindi fare clic su Importa pacchetto > pacchetto personalizzato.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.

    Importazione del pacchetto InsideOutSphere Unity

  2. Usare il selettore file per selezionare il pacchetto InsideOutSphere. file unitypackage Tools e fare clic su Apri.Use the file picker to select the InsideOutSphere.unitypackage package and click Open. Verrà visualizzato un elenco di componenti per questo asset.A list of components for this asset will be displayed to you. Confermare l'importazione facendo clic su Importa.Confirm the import by clicking Import.

    Importazione del pacchetto InsideOutSphere Unity

  3. Una volta completata l'importazione, si noterà che nella cartella assets sono state aggiunte tre nuove cartelle, materiali, modelli e prefabbricati.Once it has finished importing, you will notice three new folders, Materials, Models, and Prefabs, have been added to your Assets folder. Questo tipo di struttura di cartelle è tipico per un progetto Unity.This kind of folder structure is typical for a Unity project.

    Importazione del pacchetto InsideOutSphere Unity

    1. Aprire la cartella Models (modelli ). si noterà che il modello InsideOutSphere è stato importato.Open the Models folder, and you will see that the InsideOutSphere model has been imported.

    2. All'interno della cartella Materials (materiali ) troverete il materiale InsideOutSpheres lambert1, insieme a un materiale denominato ButtonMaterial, che viene usato da GazeButton, che verrà visualizzato a 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. La cartella Prefabbricates contiene la prefabbricazione InsideOutSphere che contiene il modello InsideOutSphere e GazeButton.The Prefabs folder contains the InsideOutSphere prefab which contains both the InsideOutSphere model and the GazeButton.

    4. Non è incluso alcun codice, il codice verrà scritto seguendo questo corso.No code is included, you will write the code by following this course.

  4. All'interno della gerarchia selezionare l'oggetto principale della fotocamera e aggiornare i componenti seguenti:Within the Hierarchy, select the Main Camera object, and update the following components:

    1. TrasformareTransform

      1. Position = 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. Scala X: 1, Y: 1, Z: 1.Scale X: 1, Y: 1, Z: 1.

    2. FotocameraCamera

      1. Cancella flag: colore a tinta unita.Clear Flags: Solid Color.

      2. Piani di ritaglio: Near: 0,1, lontano: 6.Clipping Planes: Near: 0.1, Far: 6.

        Importazione del pacchetto InsideOutSphere Unity

  5. Passare alla cartella prefabbricata , quindi trascinare la prefabbricata InsideOutSphere nel pannello gerarchia .Navigate to the Prefab folder, and then drag the InsideOutSphere prefab into the Hierarchy Panel.

    Importazione del pacchetto InsideOutSphere Unity

  6. Espandere l'oggetto InsideOutSphere all'interno della gerarchia facendo clic sulla piccola freccia accanto.Expand the InsideOutSphere object within the Hierarchy by clicking the little arrow next to it. Verrà visualizzato un oggetto figlio sotto il nome GazeButton.You will see a child object beneath it called GazeButton. Questa operazione verrà usata per modificare le scene e quindi i video.This will be used to change scenes and thus videos.

    Importazione del pacchetto InsideOutSphere Unity

  7. Nella finestra di controllo fare clic sul componente di trasformazione di InsideOutSphere, verificare che siano impostate le proprietà seguenti:In the Inspector Window click on the InsideOutSphere's Transform component, ensure that the following properties are set:

    TRASFORMAZIONE-POSIZIONETRANSFORM - POSITION
    X 0X 0 Y 0Y 0 Z 0Z 0
    TRASFORMAZIONE-ROTAZIONETRANSFORM - ROTATION
    X 0X 0 Y -50Y -50 Z 0Z 0
    TRASFORMAZIONE-RIDIMENSIONATRANSFORM - SCALE
    X 1X 1 Y 1Y 1 Z 1Z 1

    Importazione del pacchetto InsideOutSphere Unity

  8. Fare clic sull'oggetto figlio GazeButton e impostare la relativa trasformazione come segue:Click on the GazeButton child object, and set its Transform as follows:

    TRASFORMAZIONE-POSIZIONETRANSFORM - POSITION
    X 3,6X 3.6 Y 1,3Y 1.3 Z 0Z 0
    TRASFORMAZIONE-ROTAZIONETRANSFORM - ROTATION
    X 0X 0 Y 0Y 0 Z 0Z 0
    TRASFORMAZIONE-RIDIMENSIONATRANSFORM - SCALE
    X 1X 1 Y 1Y 1 Z 1Z 1

    Importazione del pacchetto InsideOutSphere Unity

Capitolo 5: creare la classe VideoControllerChapter 5 - Create the VideoController class

La classe VideoController ospita i due endpoint video che verranno usati per lo streaming del contenuto da servizi multimediali di Azure.The VideoController class hosts the two video endpoints that will be used to stream the content from the Azure Media Service.

Per creare questa classe:To create this class:

  1. Fare clic con il pulsante destro del mouse nella cartella Asset, che si trova nel pannello progetto , quindi fare clic su Crea > cartella.Right-click in the Asset Folder, located in the Project Panel, and click Create > Folder. Denominare gli script della cartella.Name the folder Scripts.

    Creazione della classe VideoController

    Creazione della classe VideoController

  2. Fare doppio clic sulla cartella script per aprirla.Double click on the Scripts folder to open it.

  3. Fare clic con il pulsante destro del mouse all'interno della cartella, quindi fare clic su crea > # script C.Right-click inside the folder, then click Create > C# Script. Denominare lo script VideoController.Name the script VideoController.

    Creazione della classe VideoController

  4. Fare doppio clic sul nuovo script VideoController per aprirlo con Visual Studio 2017.Double click on the new VideoController script to open it with Visual Studio 2017.

    Creazione della classe VideoController

  5. Aggiornare gli spazi dei nomi all'inizio del file di codice nel modo seguente:Update the namespaces at the top of the code file as follows:

    using System.Collections;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    using UnityEngine.Video;
    
  6. Immettere le variabili seguenti nella classe VideoController insieme al metodo svegli () :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. A questo punto è possibile immettere gli endpoint dai video di servizi multimediali di Azure:Now is the time to enter the endpoints from your Azure Media Service videos:

    1. Primo oggetto nella variabile video1endpoint .The first into the video1endpoint variable.

    2. Il secondo oggetto nella variabile video2endpoint .The second into the video2endpoint variable.

    Avviso

    Si è verificato un problema noto relativo all'uso di https in Unity, con la versione 2017.4.1 F1.There is a known issue with using https within Unity, with version 2017.4.1f1. Se i video forniscono un errore di riproduzione, provare a usare "http".If the videos provide an error on play, try using 'http' instead.

  8. Successivamente, è necessario modificare il metodo Start () .Next, the Start() method needs to be edited. Questo metodo verrà attivato ogni volta che l'utente passa dalla scena (quindi passa il video) esaminando il pulsante con lo sguardo.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. Dopo il metodo Start () , inserire il metodo PlayVideo () IEnumerator , che verrà usato per avviare i video senza interruzioni (pertanto non viene visualizzata alcuna balbuzie).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. L'ultimo metodo necessario per questa classe è il metodo ChangeScene () , che verrà usato per scambiare tra le scene.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");
        }
    

    Suggerimento

    Il metodo ChangeScene () usa una funzionalità C utile # chiamata operatore condizionale.The ChangeScene() method uses a handy C# feature called the Conditional Operator. In questo modo è possibile controllare le condizioni e i valori restituiti in base al risultato del controllo, il tutto all'interno di un'unica istruzione.This allows for conditions to be checked, and then values returned based on the outcome of the check, all within a single statement. Seguire questo collegamento per altre informazioni sull'operatore condizionale.Follow this link to learn more about Conditional Operator.

  11. Salvare le modifiche in Visual Studio prima di tornare a Unity.Save your changes in Visual Studio before returning to Unity.

  12. Nell'editor di Unity fare clic e trascinare la classe VideoController [from] {. Underline} la cartella Scripts nell'oggetto principale della fotocamera nel pannello gerarchia .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. Fare clic sulla fotocamera principale ed esaminare il pannello Inspector.Click on the Main Camera and look at the Inspector Panel. Si noterà che all'interno del componente script appena aggiunto è presente un campo con un valore vuoto.You will notice that within the newly added Script component, there is a field with an empty value. Si tratta di un campo di riferimento, che ha come destinazione le variabili pubbliche all'interno del codice.This is a reference field, which targets the public variables within your code.

  14. Trascinare l'oggetto InsideOutSphere dal Pannello gerarchia allo slot Sphere , come illustrato nell'immagine seguente.Drag the InsideOutSphere object from the Hierarchy Panel to the Sphere slot, as shown in the image below.

    Creare la classe VideoController  creare la classe VideoControllerCreate the VideoController class Create the VideoController class

Capitolo 6: creare la classe sguardiChapter 6 - Create the Gaze class

Questa classe è responsabile della creazione di un Raycast che verrà proiettato in futuro dalla fotocamera principale, per individuare l'oggetto analizzato dall'utente.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 questo caso, Raycast dovrà identificare se l'utente sta esaminando l'oggetto GazeButton nella scena e attivare un 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.

Per creare questa classe:To create this Class:

  1. Passare alla cartella Scripts creata in precedenza.Go to the Scripts folder you created previously.

  2. Fare clic con il pulsante destro del mouse nel pannello del progetto , *Crea * C # script * *.Right-click in the Project Panel, *Create *C# Script**. Denominare lo script.Name the script Gaze.

  3. Fare doppio clic sul nuovo script di sguardo _ per aprirlo con _ Visual Studio 2017.Double click on the new **Gaze_ script to open it with _* Visual Studio 2017.*

  4. Verificare che lo spazio dei nomi seguente si trovi nella parte superiore dello script e rimuovere gli altri:Ensure the following namespace is at the top of the script, and remove any others:

    using UnityEngine;
    
  5. Aggiungere quindi le variabili seguenti all'interno della classe sguardi :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. È ora necessario aggiungere il codice per i metodi svegli () e 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. Aggiungere il codice seguente nel metodo Update () per proiettare un Raycast e rilevare il raggiungimento della destinazione: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. Salvare le modifiche in Visual Studio prima di tornare a Unity.Save your changes in Visual Studio before returning to Unity.

  9. Fare clic e trascinare la classe sguardi dalla cartella Scripts all'oggetto principale della fotocamera nel pannello gerarchia .Click and drag the Gaze class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

Capitolo 7: configurare le due scene UnityChapter 7 - Setup the two Unity Scenes

Lo scopo di questo capitolo è quello di configurare le due scene, ciascuna delle quali ospita un video da trasmettere.The purpose of this Chapter is to setup the two scenes, each hosting a video to stream. Si duplica la scena che è già stata creata, in modo che non sia necessario configurarla di nuovo, anche se si modifica la nuova scena, in modo che l'oggetto GazeButton si trovi in una posizione diversa e abbia un aspetto diverso.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. In questo modo viene illustrato come passare da una scena all'altra.This is to show how to change between scenes.

  1. A tale scopo, passare a File > Salva scena con nome.... Verrà visualizzata una finestra Salva.Do this by going to File > Save Scene as.... A save window will appear. Fare clic sul pulsante nuova cartella .Click the New folder button.

    Capitolo 7: configurare le due scene Unity

  2. Denominare la cartella Scenes.Name the folder Scenes.

  3. La finestra Salva scena sarà ancora aperta.The Save Scene window will still be open. Aprire la cartella scene appena create.Open your newly created Scenes folder.

  4. Nel campo nome file: testo digitare VideoScene1 e quindi fare clic su Salva.In the File name: text field, type VideoScene1, then press Save.

  5. Tornare in Unity, aprire la cartella Scenes e fare clic sul file VideoScene1 .Back in Unity, open your Scenes folder, and left-click your VideoScene1 file. Utilizzare la tastiera e premere CTRL + D per duplicare la scenaUse your keyboard, and press Ctrl + D you will duplicate that scene

    Suggerimento

    Il comando duplicato può essere eseguito anche passando a modifica > duplicato.The Duplicate command can also be performed by navigating to Edit > Duplicate.

  6. Unity incrementerà automaticamente il numero di nomi di scena, ma ne verificherà comunque il numero per assicurarsi che corrisponda al codice inserito in precedenza.Unity will automatically increment the scene names number, but check it anyway, to ensure it matches the previously inserted code.

    Sono presenti VideoScene1 e VideoScene2.You should have VideoScene1 and VideoScene2.

  7. Con le due scene, passare a File > impostazioni di compilazione.With your two scenes, go to File > Build Settings. Con la finestra impostazioni di compilazione aperta, trascinare le scene nella sezione scene della compilazione .With the Build Settings window open, drag your scenes to the Scenes in Build section.

    Capitolo 7: configurare le due scene Unity

    Suggerimento

    È possibile selezionare entrambe le scene dalla cartella Scenes tenendo premuto il pulsante CTRL , quindi fare clic su ciascuna scena e infine trascinare entrambe le scene.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. Chiudere la finestra impostazioni di compilazione e fare doppio clic su VideoScene2.Close the Build Settings window, and double click on VideoScene2.

  9. Con la seconda scena aperta, fare clic sull'oggetto figlio GazeButton di InsideOutSphere e impostare la relativa trasformazione come segue:With the second scene open, click on the GazeButton child object of the InsideOutSphere, and set its Transform as follows:

    TRASFORMAZIONE-POSIZIONETRANSFORM - POSITION
    X 0X 0 Y 1,3Y 1.3 Z 3,6Z 3.6
    TRASFORMAZIONE-ROTAZIONETRANSFORM - ROTATION
    X 0X 0 Y 0Y 0 Z 0Z 0
    TRASFORMAZIONE-RIDIMENSIONATRANSFORM - SCALE
    X 1X 1 Y 1Y 1 Z 1Z 1
  10. Con l'elemento figlio GazeButton ancora selezionato, esaminare il controllo e il Filtro Mesh.With the GazeButton child still selected, look at the Inspector and at the Mesh Filter. Fare clic sulla piccola destinazione accanto al campo riferimento mesh :Click the little target next to the Mesh reference field:

    Capitolo 7: configurare le due scene Unity

  11. Verrà visualizzata una finestra popup Seleziona mesh .A Select Mesh popup window will appear. Fare doppio clic sulla mesh del cubo dall'elenco degli Asset.Double click the Cube mesh from the list of Assets.

    Capitolo 7: configurare le due scene Unity

  12. Il Filtro Mesh verrà aggiornato ed è ora costituito da un cubo.The Mesh Filter will update, and now be a Cube. A questo punto, fare clic sull'icona a forma di ingranaggio accanto a Sphere Collider , quindi fare clic su Rimuovi componente per eliminare il Collider da questo oggetto.Now, click the Gear icon next to Sphere Collider and click Remove Component, to delete the collider from this object.

    Capitolo 7: configurare le due scene Unity

  13. Con il GazeButton ancora selezionato, fare clic sul pulsante Aggiungi componente nella parte inferiore del controllo.With the GazeButton still selected, click the Add Component button at the bottom of the Inspector. Nel campo di ricerca digitare Box e Box Collider sarà un'opzione: fare clic su di essa per aggiungere un Collider di box all'oggetto 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.

    Capitolo 7: configurare le due scene Unity

  14. Il GazeButton è stato aggiornato parzialmente, per un aspetto diverso, tuttavia, verrà creato un nuovo materiale, in modo che appaia completamente diverso ed è più facile da riconoscere come oggetto diverso rispetto all'oggetto nella prima scena.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. Passare alla cartella Materials , all'interno del Pannello Project.Navigate to your Materials folder, within the Project Panel. Duplicare il materiale ButtonMaterial (premere CTRL + D sulla tastiera o fare clic con il pulsante destro del mouse sul materiale, quindi scegliere duplicato dall'opzione di menu Modifica file).Duplicate the ButtonMaterial Material (press Ctrl + D on the keyboard, or left-click the Material, then from the Edit file menu option, select Duplicate).

    Capitolo 7: configurare le due scene Unity  capitolo 7--configurare le due scene UnityChapter 7 -- Setup the two Unity Scenes Chapter 7 -- Setup the two Unity Scenes

  16. Selezionare il nuovo materiale ButtonMaterial (qui denominato ButtonMaterial 1) e, all'interno del controllo, fare clic sulla finestra del colore albedo .Select the new ButtonMaterial Material (here named ButtonMaterial 1), and within the Inspector, click the Albedo color window. Verrà visualizzata una finestra popup in cui è possibile selezionare un altro colore (scegliere il tipo desiderato), quindi chiudere il popup.A popup will appear, where you can select another color (choose whichever you like), then close the popup. Il materiale sarà una propria istanza e diverso dall'originale.The Material will be its own instance, and different to the original.

    Capitolo 7: configurare le due scene Unity

  17. Trascinare il nuovo materiale nell'elemento figlio GazeButton , per aggiornare completamente l'aspetto, in modo che sia facilmente distinguibile dal pulsante First Scenes.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.

    Capitolo 7: configurare le due scene Unity

  18. A questo punto è possibile testare il progetto nell'editor prima di compilare il progetto UWP.At this point you can test the project in the Editor before building the UWP project.

    • Premere il pulsante Riproduci nell' Editor e utilizzare l'auricolare.Press the Play button in the Editor and wear your headset.

      Capitolo 7: configurare le due scene Unity

  19. Esaminare i due oggetti GazeButton per passare tra il primo e il secondo video.Look at the two GazeButton objects to switch between the first and second video.

Capitolo 8: compilare la soluzione UWPChapter 8 - Build the UWP Solution

Dopo aver verificato che l'editor non abbia errori, è possibile procedere alla compilazione.Once you have ensured that the editor has no errors, you are ready to Build.

Per compilare:To Build:

  1. Salvare la scena corrente facendo clic su File > Salva.Save the current scene by clicking on File > Save.

  2. Selezionare la casella denominata # progetti Unity C (questo aspetto è importante perché consente di modificare le classi al termine della compilazione).Check the box called Unity C# Projects (this is important because it will allow you to edit the classes after build is completed).

  3. Passare a File > impostazioni di compilazione, fare clic su Compila.Go to File > Build Settings, click on Build.

  4. Verrà richiesto di selezionare la cartella in cui si vuole compilare la soluzione.You will be prompted to select the folder where you want to build the Solution.

  5. Creare una cartella compilazioni e all'interno di tale cartella creare un'altra cartella con un nome appropriato.Create a BUILDS folder and within that folder create another folder with an appropriate name of your choice.

  6. Fare clic sulla nuova cartella e quindi fare clic su Seleziona cartella, quindi scegliere la cartella per iniziare la compilazione in quel percorso.Click your new folder and then click Select Folder, so to choose that folder, to begin the build at that location.

    Capitolo 8: compilare il capitolo 8 della soluzione UWP  . compilare la soluzione UWPChapter 8 -- Build the UWP Solution Chapter 8 -- Build the UWP Solution

  7. Una volta completata la compilazione di Unity (potrebbe richiedere del tempo), verrà aperta una finestra Esplora file nel percorso della compilazione.Once Unity has finished building (it might take some time), it will open a File Explorer window at the location of your build.

Capitolo 9: eseguire la distribuzione nel computer localeChapter 9 - Deploy on Local Machine

Una volta completata la compilazione, nella posizione della compilazione verrà visualizzata una finestra Esplora file .Once the build has been completed, a File Explorer window will appear at the location of your build. Aprire la cartella denominata e compilata, quindi fare doppio clic sul file di soluzione (con estensione sln) all'interno della cartella per aprire la soluzione con 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.

L'unica cosa che rimane da fare è distribuire l'app nel computer (o nel computer locale).The only thing left to do is deploy your app to your computer (or Local Machine).

Per eseguire la distribuzione nel computer locale:To deploy to Local Machine:

  1. In Visual Studio 2017 aprire il file di soluzione appena creato.In Visual Studio 2017, open the solution file that has just been created.

  2. Nella piattaforma soluzione selezionare x86, computer locale.In the Solution Platform, select x86, Local Machine.

  3. Nella configurazione della soluzione selezionare debug.In the Solution Configuration select Debug.

    Capitolo 9-distribuzione nel computer locale

  4. A questo punto sarà necessario ripristinare tutti i pacchetti nella soluzione.You will now need to restore any packages to your solution. Fare clic con il pulsante destro del mouse sulla soluzione e scegliere Ripristina pacchetti NuGet per la soluzione...Right-click on your Solution, and click Restore NuGet Packages for Solution...

    Nota

    Questa operazione viene eseguita perché i pacchetti compilati da Unity devono essere destinati a funzionare con i riferimenti dei computer locali.This is done because the packages which Unity built need to be targeted to work with your local machines references.

  5. Passare al menu Compila e fare clic su Distribuisci soluzione per sideload l'applicazione al computer.Go to Build menu and click on Deploy Solution to sideload the application to your machine. Visual Studio compilerà prima di tutto e distribuirà l'applicazione.Visual Studio will first build and then deploy your application.

  6. L'app verrà visualizzata nell'elenco delle app installate, pronte per l'avvio.Your App should now appear in the list of installed apps, ready to be launched.

    Capitolo 9-distribuzione nel computer locale

Quando si esegue l'applicazione di realtà mista, si sarà all'interno del modello InsideOutSphere usato nell'app.When you run the Mixed Reality application, you will you be within the InsideOutSphere model which you used within your app. Questa sfera è la posizione in cui verrà trasmesso il video, fornendo una visualizzazione di 360 gradi, del video in arrivo (filmato per questo tipo di prospettiva).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). Non sorprendere se il video richiede un paio di secondi per il caricamento, l'app è soggetta alla velocità Internet disponibile, perché il video deve essere recuperato e quindi scaricato, quindi per eseguire lo streaming nell'app.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 si è pronti, modificare le scene e aprire il secondo video, guardando la sfera rossa.When you are ready, change scenes and open your second video, by gazing at the red sphere! Quindi, è possibile tornare indietro, usando il cubo blu nella seconda scena.Then feel free to go back, using the blue cube in the second scene!

Applicazione di servizi multimediali di Azure completataYour finished Azure Media Service application

Congratulazioni, è stata creata un'app per realtà mista che sfrutta il servizio multimediale di Azure per lo streaming di video di 360.Congratulations, you built a mixed reality app that leverages the Azure Media Service to stream 360 videos.

risultato Lab

risultato Lab

Esercizi bonusBonus Exercises

Esercizio 1Exercise 1

Per modificare i video in questa esercitazione è possibile usare solo una singola scena.It is entirely possible to only use a single scene to change videos within this tutorial. Prova la tua applicazione e creala in un'unica scena.Experiment with your application and make it into a single scene! Forse anche aggiungere un altro video alla combinazione.Perhaps even add another video to the mix.

Esercizio 2Exercise 2

Sperimentare Azure e Unity e provare a implementare la possibilità per l'app di selezionare automaticamente un video con dimensioni di file diverse, a seconda del livello di attendibilità di una connessione 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.