Panoramica dell'acquisizione di realtà mista

Nota

Per indicazioni su una nuova funzionalità MRC per HoloLens 2, vedere Eseguire il rendering dalla fotocamera fotovolta HoloLens 2.

È possibile acquisire una foto o un video mrc (Mixed Reality Capture) in qualsiasi momento, ma quando si sviluppa l'applicazione è necessario tenere presenti alcuni aspetti. Sono incluse le procedure consigliate per la qualità visiva mrc e la capacità di rispondere alle modifiche del sistema durante l'acquisizione di mrc.

Gli sviluppatori possono anche integrare facilmente l'acquisizione e l'inserimento di realtà mista nelle app.

MRC in HoloLens (prima generazione) supporta video e foto fino a 720p, mentre MRC su HoloLens 2 supporta video fino a 1080p e foto con risoluzione fino a 4K.

L'importanza della qualità di MRC

Che si tratta di screenshot di realtà mista nella pagina Microsoft Store o di altri utenti che condividono contenuti di acquisizione sui social network, i contenuti multimediali Acquisizione realtà mista spesso sono una prima esposizione degli utenti all'app. È possibile usare MRC per demoare l'app, informare gli utenti, invitare gli utenti a condividere le interazioni con il mondo misto e per la ricerca degli utenti e la risoluzione dei problemi.

Impatto di MRC sull'app

Abilitazione di MRC nell'app

Per impostazione predefinita, un'app non deve eseguire alcun tipo di operazione per consentire agli utenti di acquisire la realtà mista.

Abilitazione di un allineamento migliorato per MRC nell'app

Per impostazione predefinita, l'acquisizione di realtà mista combina l'output olografico dell'occhio destro con la fotocamera foto/video (PV). Queste due origini vengono combinate usando il punto attivo impostato dall'app immersiva attualmente in esecuzione.

Ciò significa che gli ologrammi all'esterno del piano di messa a fuoco non verranno allineati a causa della distanza fisica tra la fotocamera fotovoltaico e lo schermo destro.

Impostare il punto di attivazione

Le app immersive (HoloLens) devono impostare il punto di interesse in cui si vuole posizionare il piano di stabilizzazione. In questo modo si garantisce il miglior allineamento sia nel visore sia nell'acquisizione di realtà mista.

Se non è impostato un punto di messa a fuoco, il piano di stabilizzazione sarà impostato per impostazione predefinita su 2 metri.

Eseguire il rendering dalla fotocamera PV (consenso esplicito)

HoloLens 2 aggiunge la possibilità per un'app immersiva di eseguire il rendering dalla fotocamera PV mentre è in esecuzione l'acquisizione di realtà mista. Per assicurarsi che l'app supporti correttamente il rendering aggiuntivo, l'app deve acconsentire esplicitamente a questa funzionalità.

Il rendering dalla fotocamera PV offre i miglioramenti seguenti rispetto all'esperienza MRC predefinita:

  • L'allineamento dell'ologramma all'ambiente fisico e le mani per le interazioni vicine devono essere accurate a tutte le distanze. Evitare di avere un offset a distanze diverse dal punto di messa a fuoco, come si potrebbe vedere nel codice MRC predefinito.
  • L'occhio destro nel visore non verrà compromesso, perché non verrà usato per eseguire il rendering degli ologrammi per l'output MRC.

Altre informazioni sul rendering dalla fotocamera PV (DirectX).

Procedure consigliate (HoloLens specifiche)

MrC dovrebbe funzionare senza ulteriori attività di sviluppo, ma è necessario tenere presenti alcuni aspetti quando si offre la migliore esperienza di acquisizione di realtà mista.

MRC usa il canale alfa dell'ologramma per la fusione con le immagini della fotocamera

Il passaggio più importante consiste nell'assicurarsi che l'app sia trasparente sul nero anziché su nero opaco. In Unity questa operazione viene eseguita per impostazione predefinita con MixedRealityToolkit. Se si sviluppa in non Unity, potrebbe essere necessario apportare una modifica a una riga.

Di seguito sono riportati alcuni elementi che è possibile visualizzare in MRC se l'app non sta cancellando il colore nero trasparente:

Errori di esempio:bordi neri intorno al contenuto (non è possibile cancellare in nero trasparente)

Mancata cancellazione in nero trasparente: artefatti del bordo nero intorno agli ologrammi Mancata cancellazione al nero trasparente: artefatti del bordo nero intorno agli ologrammi

Errori di esempio:l'intera scena di sfondo dell'ologramma viene visualizzata in nero. L'impostazione di un valore alfa di sfondo pari a uno determina uno sfondo nero

L'impostazione di un valore alfa di sfondo pari a 1 determina uno sfondo nero

Risultato previsto:Ologrammi visualizzati correttamente con il mondo reale (risultato previsto se la cancellazione viene visualizzata in nero trasparente)

Risultato previsto in caso di cancellazione in nero trasparente

Soluzione:

  • Modificare qualsiasi contenuto visualizzato come nero opaco in modo che abbia un valore alfa pari a 0.
  • Assicurarsi che l'app sia trasparente in nero.
  • Unity usa per impostazione predefinita la cancellazione automatica con MixedRealityToolkit, ma se si tratta di un'app non Unity è necessario modificare il colore usato con ID3D11DeiceContext::ClearRenderTargetView(). Si vuole assicurarsi di impostare il colore nero trasparente (0,0,0,0) anziché il nero opaco (0,0,0,1).

È ora possibile ottimizzare i valori alfa degli asset, se lo si desidera, ma in genere non è necessario. Nella maggior parte dei casi, i mrc saranno sempre all'erta. MRC presuppone un valore alfa pre-moltiplicato. I valori alfa influiranno solo sull'acquisizione MRC.

Cosa aspettarsi quando MRC è abilitato HoloLens

Quanto segue si applica a HoloLens (prima generazione) e HoloLens 2, se non diversamente specificato:

  • Il sistema limitaterà l'applicazione al rendering a 30 Hz. In questo modo si crea un po' di spazio per l'esecuzione di MRC in modo che l'app non deve mantenere una riserva di budget costante e corrisponde anche al framerate di record video MRC di 30 fps
  • Il contenuto dell'ologramma nell'occhio destro del dispositivo può apparire "sparkle" durante la registrazione/streaming di MRC: il testo potrebbe diventare più difficile da leggere e i bordi dell'ologramma potrebbero apparire più incisivi (acconsentendo esplicitamente al rendering della terza fotocamera su HoloLens 2 evita questo compromesso)
  • Le foto e i video MRC rispetteranno il punto di interesse dell'applicazione se l'applicazione l'ha abilitata, in modo da garantire un posizionamento accurato degli ologrammi. Per i video, il punto di messa a fuoco viene smussato in modo che gli ologrammi appaiano lentamente in posizione se la profondità del punto di messa a fuoco cambia in modo significativo. Ologrammi a profondità diverse dal punto di messa a fuoco possono apparire offset rispetto al mondo reale (vedere l'esempio seguente in cui il punto di messa a fuoco è impostato a 2 metri ma l'ologramma è posizionato a 1 metro).

Ologrammi a 2 metri apparirà perfettamente registrato nel mondo. Ologrammi a distanze vicine o molto lunghe può essere leggermente offset.

Integrazione della funzionalità MRC dall'interno dell'app

L'app di realtà mista può avviare l'acquisizione di foto o video MRC dall'interno dell'app e il contenuto acquisito viene reso disponibile per l'app senza essere archiviato nel "rullino" del dispositivo. È possibile creare un registratore MRC personalizzato o sfruttare l'interfaccia utente incorporata per l'acquisizione della fotocamera.

MRC con interfaccia utente della fotocamera incorporata

Gli sviluppatori possono usare l'API dell'interfaccia utente acquisizione fotocamera per ottenere una foto o un video di realtà mista acquisita dall'utente con poche righe di codice.

Questa API avvia l'interfaccia utente della fotocamera MRC incorporata in cui gli utenti possono scattare una foto o un video e restituisce l'acquisizione risultante all'app. È possibile creare un registratore Acquisizione realtà mista personalizzato se è necessario aggiungere la propria interfaccia utente della fotocamera o l'accesso di livello inferiore per acquisire i flussi.

Creazione di un registratore MRC personalizzato

Anche se l'utente può sempre attivare una foto o un video usando il servizio di acquisizione MRC di sistema, un'applicazione potrebbe voler creare un'app fotocamera personalizzata che includa ologrammi nel flusso della fotocamera proprio come MRC. In questo modo l'applicazione può avviare le acquisizioni dall'input dell'utente, compilare un'interfaccia utente di registrazione personalizzata o personalizzare le impostazioni MRC per citarne alcuni esempi.

HoloStudio aggiunge una fotocamera MRC personalizzata usando gli effetti MRC

HoloStudio aggiunge una fotocamera MRC personalizzata usando gli effetti MRC

Unity Applications dovrebbe visualizzare Locatable_camera_in_Unity per la proprietà per abilitare gli ologrammi.

Altre applicazioni possono eseguire questa operazione usando le API di acquisizione multimediale di Windows per controllare la fotocamera e aggiungere un effetto mrc video e audio per includere ologrammi virtuali e audio dell'applicazione in immagini e video.

Altre informazioni sulla creazione di un registratore MRC personalizzato (DirectX).

Limitazioni simultanee di MRC

È necessario essere a conoscenza di determinate limitazioni quando più app accedono a MRC contemporaneamente.

Accesso a foto/videocamere

Nella HoloLens 1, MRC non riuscirà ad acquisire una foto o a acquisire un video mentre un processo sta registrando un video o scattando una foto. Anche il contrario è vero: se MRC è in esecuzione, l'applicazione non riuscirà ad accedere alla fotocamera.

Con HoloLens 2, è possibile condividere l'accesso alla fotocamera. Se non è necessario controllare direttamente la risoluzione o la frequenza dei fotogrammi, è possibile inizializzare MediaCapture usando la proprietà SharedMode con SharedReadOnly.

Accesso alle foto e alle videocamere MRC incorporato

Informazioni sull'accesso alle foto e alle videocamere MRC (DirectX)incorporato.

Accesso MRC per gli sviluppatori

È consigliabile richiedere sempre il controllo esclusivo per la fotocamera quando si usa MRC. In questo modo l'applicazione avrà il controllo completo delle impostazioni per la fotocamera, purché si siano a conoscenza delle limitazioni elencate in precedenza.

Altre informazioni sull'accesso MRC per sviluppatori (DirectX).

Vedere anche