Usare le risorse del PC per alimentare l'app con l'app remota Holographic Remoting

Questo articolo illustra il caso d'uso seguente per Holographic Remoting:

  • Si vuole che le risorse di un PC possano alimentare l'app invece di basarsi sulle risorse di HoloLens a bordo: è possibile creare e compilare un'app con funzionalità di Holographic Remoting. L'utente sperimenta l'app in HoloLens, ma l'app viene effettivamente eseguita in un PC, che consente all'app di sfruttare le risorse più potenti del PC. Ciò può risultare particolarmente utile se l'app dispone di asset o modelli ad alta risoluzione e non si vuole che la frequenza dei fotogrammi subisca un problema. Questo nome è un'app remota Holographic Remoting. Gli input da HoloLens- sguardo fisso, movimento, voce e mapping spaziale- vengono inviati al PC, in cui viene eseguito il rendering del contenuto in una visualizzazione immersiva virtuale. I fotogrammi sottoposti a rendering vengono quindi inviati a HoloLens.

Questo tipo di Holographic Remoting è disponibile anche per visori VR immersive Windows Mixed Reality (WMR). Questo può essere utile se, ad esempio, il visore VR WMR è collegato a un PC zaino e vuoi trasmettere la tua app da un PC più potente al PC dello zaino.

Per altre informazioni su Holographic Remoting, vedere Holographic Remoting Overview (Panoramica di Holographic Remoting)

Tieni presente che puoi anche usare Holographic Remoting se vuoi visualizzare in anteprima ed eseguire il debug dell'app durante il processo di sviluppo.

Due modalità disponibili in Holographic Remoting

Modalità 1: app remota in esecuzione su PC in modalità Connetti, lettore in esecuzione sul HoloLens 2 in modalità di ascolto.

Il lettore rimane in ascolto delle connessioni in ingresso mentre l'app remota tenta di connettersi.

Modalità 2: app remota in esecuzione su PC in modalità di ascolto, lettore in esecuzione sul HoloLens 2 in modalità di connessione.

L'app remota è in ascolto delle connessioni in ingresso durante il tentativo di connessione del lettore.

Configurare l'app Holographic Remoting Player

Per usare Holographic Remoting in modalità 1 da solo, installare l'app Holographic Remoting Player da Microsoft Store nel HoloLens 2 (in questo articolo verrà fatto riferimento semplicemente come "lettore"). Come illustrato di seguito, dopo aver scaricato ed eseguito l'app, verrà visualizzato il numero di versione e l'indirizzo IP a cui connettersi. È consigliabile usare la versione più recente del lettore disponibile.

Holographic Remoting richiede un PC veloce e una connessione Wi-Fi. Altre informazioni sono disponibili nell'articolo Player collegato in precedenza.

Screenshot del lettore Holographic Remoting in esecuzione in HoloLens

Per usare Holographic Remoting in entrambe le modalità specificate in precedenza, è necessario clonare il lettore di esempio Holographic Remoting e distribuirlo nel HoloLens 2 usando Visual Studio.

Creare un'app remota in esecuzione su PC per Holographic Remoting usando Unity

  1. Nella barra dei menu selezionare Modifica > impostazioni progetto.

  2. Nella colonna a sinistra selezionare Gestione plug-in XR.

  3. Assicurarsi di essere nella scheda delle impostazioni piattaforma UWP (Universal Windows Platform).

    Screenshot che mostra la XR-Plug nella finestra Gestione con la scheda piattaforma UWP (Universal Windows Platform) selezionata.

  4. Nella sezione Plug-in OpenXR selezionare Microsoft HoloLens gruppo di funzionalità e gruppo di funzionalità dell'app remota Holographic Remoting.

    Screenshot che mostra il plug-in OpenXr con l'opzione

  5. Deselezionare la casella di controllo Inizializza XR all'avvio .

    Screenshot della finestra Gestione plug-in XR con l'opzione

  6. Scrivere codice per impostare la configurazione remota e attivare l'inizializzazione XR. L'app può chiamare la funzione Connect per la modalità 1 o chiamare la funzione Listen per la modalità 2. Per un esempio, scaricare gli esempi di Open XR Unity Realtà mista e quindi, nel progetto RemotingSample, visualizzare lo script AppRemoting.cs.

  7. Per la modalità 1, la modalità ConnettiMicrosoft.MixedReality.OpenXR.Remoting.AppRemoting.Connect chiama con un oggetto RemotingConfigurationcompilato. L'app di esempio espone questo oggetto nel controllo e mostra come compilare l'indirizzo IP da un campo di testo. La chiamata Connect imposta la configurazione e inizializza automaticamente XR, motivo per cui deve essere chiamata come coroutine:

    StartCoroutine(Remoting.AppRemoting.Connect(remotingConfiguration));
    
  8. Per la modalità 2, la modalità listen, chiamare Microsoft.MixedReality.OpenXR.Remoting.AppRemoting.Listen con un oggetto compilato.RemotingListenConfiguration L'app di esempio lo espone nel controllo. La chiamata Listen imposta la configurazione e attende una connessione dal lettore di esempio Holographic Remoting, motivo per cui deve essere chiamata come coroutine:

    StartCoroutine(Remoting.AppRemoting.Listen(remotingListenConfiguration));
    
  9. Durante l'esecuzione, è possibile ottenere lo stato di connessione corrente con l'API e, facoltativamente, disconnettere e annullare l'inizializzazione AppRemoting.TryGetConnectionState di XR usando AppRemoting.Disconnect(). Può essere usato per disconnettersi e riconnettersi a un dispositivo diverso all'interno della stessa sessione dell'app. L'app RemotingSample fornisce un cubo tappabile che disconnette la sessione remota se toccata.

Eseguire l'app remota Holographic Remoting e l'app Player nelle modalità descritte in precedenza

Modalità 1: eseguire l'app remota Holographic Remoting nel PC in modalità Connetti e il lettore in modalità ascolto:

  1. Se il lettore è già installato dallo Store nel HoloLens 2, ignorare i numeri di passaggio 2 e 3 seguenti in cui si compila ed esegue l'app Sample Player. Eseguire invece Player installato e continuare con il passaggio 4.

  2. Aprire l'app Holographic Remoting Sample Player usando VS 2019 e quindi eseguire una delle operazioni seguenti:

    Per l'esecuzione su un HoloLens 2 utilizzando un cavo USB:

    • Configurare le opzioni di compilazione come illustrato di seguito:

    Screenshot delle impostazioni di compilazione di Visual Studio per se l'utente è connesso tramite cavo USB.

    • Aprire la pagina Proprietà per il progetto e quindi passare a Proprietà> di configurazioneDebug.
    • Fare clic sull'elenco a discesa Debugger per avviare e quindi selezionare Dispositivo.
    • Nel campo Argomenti della riga di comando aggiungere "-listen".

    Screenshot degli argomenti della riga di comando per la compilazione tramite un cavo USB.

    Per l'esecuzione in un HoloLens 2 tramite Wifi:

    • Configurare le opzioni di compilazione come illustrato di seguito:

    Screenshot delle impostazioni di compilazione di Visual Studio per se l'utente che esegue la compilazione in HoloLens tramite Wifi.

    • Aprire la pagina Proprietà per il progetto e quindi passare a Proprietà> di configurazioneDebug.
    • Fare clic sull'elenco a discesa Debugger per avviare e quindi selezionare Computer remoto.
    • Nel campo Argomenti della riga di comando aggiungere l'indirizzo IP Wifi di HoloLens.
  3. Per distribuire la soluzione SamplePlayer nel HoloLens 2, premere il pulsante riproduci in Visual Studio. Sarà possibile visualizzare il lettore HAR Sample in esecuzione su HoloLens 2, visualizzando che è "In attesa di una connessione sull'indirizzo IP di HoloLens 2".

  4. Nell'app remota in esecuzione nel PC host aggiungere l'indirizzo IP del HoloLens 2 visualizzato in precedenza e quindi selezionare Connetti.

  5. Dopo aver stabilito la connessione, il lettore in esecuzione in HoloLens 2 avvierà "Ricezione".

Modalità 2: eseguire l'app remota nel PC in modalità ascolto e l'app lettore HAR in modalità Connetti:

  • Nella schermata dell'interfaccia utente 2D nell'app remota in esecuzione nel PC fare clic su Ascolta.

    Screenshot delle impostazioni di compilazione di Visual Studio per se l'utente è connesso tramite cavo USB.

  • Aprire la pagina Proprietà per il progetto e quindi passare a Proprietà> di configurazioneDebug.

  • Fare clic sull'elenco a discesa Debugger per avviare e quindi selezionare Dispositivo.

  • Nel campo Argomenti della riga di comando aggiungere l'indirizzo IP del PC host.

Screenshot degli argomenti della riga di comando per la compilazione tramite un cavo USB.

  • Per distribuire la soluzione SamplePlayer nel HoloLens 2, nella soluzione Visual Studio fare clic sul pulsante Riproduci. Sarà possibile visualizzare il lettore HAR Sample in esecuzione nel HoloLens 2, visualizzando che si tratta di "Connessione all'indirizzo IP specificato negli argomenti della riga di comando".

  • Dopo aver stabilito la connessione, l'app Holographic Remoting Sample Player in esecuzione nel HoloLens 2 avvierà "Ricezione".

Suggerimento

Per ottenere risultati ottimali, assicurarsi che l'app imposti correttamente . . /focus point. Ciò consente a Holographic Remoting di adattare al meglio la scena alla latenza della connessione wireless.

Eseguire la migrazione dalle API Holographic Remoting precedenti

Per altre informazioni su Holographic Remoting, vedere Holographic Remoting Overview (Panoramica di Holographic Remoting)

UnityEngine.XR.WSA.HolographicRemoting

Dal codice di esempio nella documentazione di Unity:

XR. WSA. OlograficoRemoting OpenXR.Remoting.AppRemoting
HolographicRemoting.ConnectRemotingSession() AppRemoting.Connect(RemotingConfiguration)
HolographicRemoting.DisconnectRemotingSession() AppRemoting.Disconnect()
HolographicRemoting.ConnectionState AppRemoting.TryGetConnectionState(out ConnectionState, out DisconnectReason)

UnityEngine.XR.WindowsMR. WindowsMRRemoting

XR.WindowsMR. WindowsMRRemoting OpenXR.Remoting.AppRemoting
WindowsMRRemoting.Connect() AppRemoting.Connect(RemotingConfiguration)
WindowsMRRemoting.Listen() AppRemoting.Listen(RemotingListenConfiguration)
WindowsMRRemoting.Disconnect() AppRemoting.Disconnect()
WindowsMRRemoting.TryGetConnectionState(out ConnectionState) e WindowsMRRemoting.TryGetConnectionFailureReason(out ConnectionFailureReason) AppRemoting.TryGetConnectionState(out ConnectionState, out DisconnectReason)
WindowsMRRemoting.isAudioEnabled, WindowsMRRemoting.maxBitRateKbps, WindowsMRRemoting.remoteMachineName Passato a AppRemoting.Connect tramite lo RemotingConfiguration struct
WindowsMRRemoting.isConnected AppRemoting.TryGetConnectionState(out ConnectionState state, out _) && state == ConnectionState.Connected

Vedere anche