Microsoft ha presentato la sua nuova piattaforma di realtà mista, Mesh, all’evento Ignite del marzo 2021. Il lancio non è entrato in dettagli tecnici significativi, sebbene abbia mostrato esperienze condivise, multipiattaforma, virtuali e aumentate e un servizio di conferenza avatar basato su HoloLens.

Nonostante questa scarsità di dettagli, è abbastanza facile fare un’ipotesi plausibile sui componenti di Mesh. Negli ultimi due anni abbiamo visto Microsoft svelare la maggior parte dei servizi necessari per creare Mesh e Mesh riunisce tutti questi elementi, raggruppandoli in un set comune di API e strumenti di sviluppo. A differenza di molte altre piattaforme di realtà aumentata, Microsoft ha già molta esperienza in questo ambito, dall’HoloLens di prima generazione alle fotocamere Azure Kinect 3D fino al framework Mixed Reality integrato in Windows 10.

Costruire sulle basi di HoloLens

Se guardate le slide della sessione Mesh a Ignite, non sorprende che gli scenari per i quali è stato progettato siano familiari. Dopotutto sono lo stesso insieme di applicazioni collaborative e di realtà mista che Microsoft ha mostrato per diversi anni, dall’esperienza remota alle riunioni coinvolgenti e dalle informazioni basate sulla posizione ai servizi di progettazione collaborativa. Sebbene siano tutti familiari, sono diventati ancora più rilevanti a causa dei vincoli che il COVID-19 ha aggiunto al moderno ambiente di lavoro.

Negli anni in cui Microsoft ha creato strumenti di realtà mista, ha preso in considerazione tutta una serie di sfide chiave per gli sviluppatori che creano le proprie applicazioni di realtà mista, soprattutto quando si tratta di creare ambienti collaborativi. Gli ostacoli risalgono ai primi ambienti di realtà virtuale condivisi e si trattava di problemi che impedivano a servizi come Second Life di scalare come inizialmente promesso o che frenavano le applicazioni di realtà aumentata basate sulla posizione.

Innanzitutto, è difficile fornire immagini 3D ad alta definizione dalla maggior parte dei formati di file CAD. In secondo luogo, mettere le persone in un ambiente 3D richiede una notevole capacità di elaborazione. Terzo, è difficile mantenere un oggetto stabile in una posizione nel tempo e tra i dispositivi. Infine, dobbiamo trovare un modo per supportare la sincronizzazione delle azioni su più dispositivi e aree geografiche. Tutti questi problemi rendono la fornitura di realtà mista su larga scala un problema di elaborazione distribuita estremamente complesso.

È tutto calcolo distribuito

I problemi di elaborazione distribuita complessi sono una cosa che i grandi cloud come Azure hanno fatto molto per risolvere. La creazione di strutture di dati distribuite come Microsoft Graph su servizi come Cosmos DB e l’utilizzo di framework transazionali come Orleans forniscono un framework comprovato di elaborazione distribuita che supporta già eventi in tempo reale in giochi come Halo.

Un altro aspetto di Mesh è la sua integrazione con Microsoft 365, con Azure Active Directory e OneDrive inseriti nel prototipo dell’app HoloLens Mesh. Il grafo alla base di Microsoft 365 è la chiave per l’implementazione di app collaborative all’interno di Mesh, poiché è qui che potete collegare utenti e contenuti, nonché avere sessioni persistenti su dispositivi.

A Ignite Microsoft ha discusso della piattaforma per sviluppatori Mesh. Al centro c’è una piattaforma molto simile ad Azure, con strumenti per la gestione di utenti e sessioni e la gestione della fatturazione. È tutto integrato con Microsoft Graph per i servizi incentrati sull’utente e il servizio dati comune di Dynamics 365 (insieme al Dataverse di Power Platform) per la parte commerciale. Strettamente allineati sono i servizi per la gestione dell’identità dell’utente, una piattaforma audio e video e l’infrastruttura ospitata nel cloud necessaria per fornire tutto questo.

hololens

 

I servizi di Mesh

In cima alla piattaforma core si trova una serie di funzionalità: presenza immersiva, mappe spaziali, rendering olografico e sincronizzazione multiutente. La presenza immersiva è forse l’unico aspetto veramente nuovo della piattaforma Mesh, che si basa sui già noti strumenti di oloportazione di HoloLens. Tuttavia, invece di un’immagine dettagliata, Microsoft fornisce avatar meno dettagliati per la maggior parte delle applicazioni, riducendo al minimo l’utilizzo della larghezza di banda. Se utilizzate HoloLens 2 o un dispositivo simile, le fotocamere per il tracciamento del viso forniscono la mappatura delle espressioni di base, insieme al tracciamento delle mani per le braccia.

Gli avatar sono posizionati all’interno dell’ambiente virtuale in modo che tutti gli utenti possano interagire senza collisioni. È possibile fornire mesh utente più complesse e dettagliate quando si aggiungono strumenti come i sensori Kinect di Azure, sebbene ciò richieda hardware aggiuntivo e un ambiente configurato per la realtà mista. Questo dovrebbe fornire i dettagli mostrati dalle demo dell’oloportazione, in quanto consente l’acquisizione in tempo reale di immagini 3D in movimento e le mappa su un modello scheletrico di base con tracciamento dei punti chiave di articolazione.

Le mappe spaziali sono un’estensione degli ancoraggi spaziali esistenti di Azure, che consentono di fissare un oggetto 3D a una posizione del mondo reale. Tuttavia, le cose vanno oltre, con il supporto per ancoraggi dinamici che fissano un modello a una sovrapposizione di mesh su un oggetto fisico. Non è ancora chiaro come verrà fornito l’allineamento, se cioè dipenderà dal rilevamento della mesh da fotocamere 3D o lidar o se può essere fornito utilizzando segni di allineamento e codici QR. I dati sui contenuti e sulla posizione vengono forniti utilizzando servizi cloud, riducendo al minimo i requisiti di elaborazione locali.

Questo approccio si adatta bene al rendering olografico di Mesh. Anche in questo caso, si basa su un servizio Azure esistente: Remote Rendering. Invece di richiedere ai dispositivi degli utenti finali di supportare un’ampia selezione di motori di rendering e formati di file, insieme all’hardware per fornire contenuto 3D, i modelli possono essere consegnati ad Azure utilizzando formati standard prima di essere sottoposti a rendering in Azure per la consegna ai dispositivi secondo necessità, utilizzando il numero appropriato di poligoni per il dispositivo e l’applicazione.

Infine, la sincronizzazione multiutente utilizza un mix di hardware del dispositivo per mappare le posizioni correnti del corpo e le espressioni facciali su avatar o mesh scheletriche. Ogni utente riceve le immagini che sono rilevanti per la loro posizione attuale, ancora una volta, mantenendo al minimo i requisiti di larghezza di banda. Forse l’aspetto più importante di questa funzione è il suo supporto per l’audio spaziale. Uno dei maggiori problemi con l’attuale generazione di videoconferenze è che non si può individuare facilmente chi sta parlando. Utilizzando l’audio spaziale, il suono viene trasformato, utilizzando la posizione della persona nello spazio virtuale per consentire di localizzare la fonte.

Mettere tutto insieme: una toolchain di realtà mista

Potrebbe essere meglio pensare a Mesh come una semplificazione di tutti gli strumenti che abbiamo utilizzato per creare applicazioni di realtà mista attorno a Windows. Scaricare gran parte della complessità in Azure ha molto senso, in quanto fornisce un hub per dati e servizi condivisi. Abbiamo già molte delle API e dei toolkit, ma vengono tutti forniti separatamente. Mesh dovrebbe riunirli tutti in un unico SDK, fornendo un set comune di controlli ed elementi dell’interfaccia utente per offrire un’esperienza utente coerente.

L’uso dei servizi cognitivi di Azure dovrebbe migliorare il riconoscimento degli oggetti, aiutare con le gesture e il tracciamento facciale e produrre mappe ambientali per l’audio spaziale. Microsoft ha dimostrato il supporto per la visione 3D con il suo Azure Kinect SDK, con sensori simili integrati in HoloLens e disponibili a terze parti.

È chiaro che gran parte di questo sarà costruito in strumenti familiari in Unity per cominciare, aggiungendo il supporto per Unreal durante il prossimo anno, insieme a un ulteriore supporto per Unity. Il supporto di Unity coprirà Windows (sia desktop che in realtà mista), HoloLens e Android. Unreal supporterà tutto questo e aggiungerà iOS e macOS. Gli sviluppatori web potranno sfruttare i framework 3D come Babylon e con React Native per i componenti dell’interfaccia utente.