Informazioni sulle scene

La comprensione della scena fornisce agli sviluppatori Realtà mista una rappresentazione di ambiente strutturata e di alto livello progettata per rendere intuitivo lo sviluppo per applicazioni compatibili con l'ambiente. La comprensione della scena esegue questa operazione combinando la potenza dei runtime di realtà mista esistenti, ad esempio il mapping spaziale altamente accurato ma meno strutturato e i nuovi runtime basati sull'intelligenza artificiale. Combinando queste tecnologie, la comprensione della scena genera rappresentazioni di ambienti 3D simili a quelli usati in framework come Unity o ARKit/ARCore. Il punto di ingresso Di comprensione della scena inizia con un Osservatore scena, chiamato dall'applicazione per calcolare una nuova scena. Attualmente, la tecnologia può generare 3 categorie di oggetti distinte ma correlate:

  • Mesh di ambienti impermeabili semplificati che deducono la struttura della stanza planare senza confusione
  • Aree del piano per il posizionamento che chiamiamo Quads
  • Snapshot della mesh di mapping spaziale allineata ai dati Quads/Watertight che vengono visualizzati

Mesh di mapping spaziale, superfici planari etichettate, mesh a tenuta d'acqua

Questo documento ha lo scopo di fornire una panoramica dello scenario e di chiarire la relazione con cui la comprensione della scena e la condivisione di mapping spaziale. Per vedere Informazioni sulla scena in azione, vedere la demo video Progettazione di ologrammi - Consapevolezza spaziale di seguito:

Questo video è stato tratto dall'app "Progettazione di ologrammi" HoloLens 2. Scarica e goditi l'esperienza completa qui.

Sviluppo con Informazioni sulla scena

Questo articolo serve solo per introdurre il runtime e i concetti di Scene Understanding. Se si sta cercando la documentazione su come sviluppare con Scene Understanding, è possibile che si sia interessati agli articoli seguenti:

Panoramica di Scene Understanding SDK

È possibile scaricare l'app Scene Understanding Sample dal sito GitHub di esempio:

Esempio di comprensione della scena

Se non si ha un dispositivo e si vuole accedere alle scene di esempio per provare Scene Understanding, nella cartella dell'asset di esempio sono presenti scene:

Scene di esempio di comprensione delle scene

SDK

Per informazioni dettagliate specifiche sullo sviluppo con Scene Understanding, vedere la documentazione panoramica di Scene Understanding SDK .

Esempio

Supporto di dispositivi

Funzionalità HoloLens (prima generazione) HoloLens 2 Visori VR immersive
Informazioni sulle scene ✔️

Scenari di utilizzo comuni

Illustrazioni degli scenari comuni di utilizzo del mapping spaziale: posizionamento, occlusione, fisica e navigazione
Scenari comuni di utilizzo del mapping spaziale: posizionamento, occlusione, fisica e navigazione.


Molti degli scenari principali per le applicazioni con riconoscimento dell'ambiente possono essere affrontati sia dal mapping spaziale che dalla comprensione della scena. Questi scenari principali includono posizionamento, occlusione, fisica e così via. Una differenza fondamentale tra la comprensione della scena e il mapping spaziale è un compromesso tra massima accuratezza e latenza per strutturare e semplicità. Se l'applicazione richiede la latenza più bassa possibile e i triangoli mesh a cui si vuole accedere solo, usare direttamente mapping spaziale. Se si esegue un'elaborazione di livello superiore, è possibile passare al modello di comprensione della scena perché dovrebbe fornire un superset di funzionalità. Sarà sempre possibile accedere ai dati di mapping spaziale più completi e accurati, perché La comprensione della scena fornisce uno snapshot della mesh di mapping spaziale come parte della relativa rappresentazione.

Le sezioni seguenti esaminano gli scenari di mapping spaziale di base nel contesto del nuovo SDK di analisi della scena.

Selezione host

La comprensione della scena fornisce nuovi costrutti progettati per semplificare gli scenari di posizionamento. Una scena può calcolare primitive denominate SceneQuads, che descrivono le superfici piane su cui è possibile posizionare gli ologrammi. SceneQuads è stato progettato per il posizionamento e descrivere una superficie 2D e fornire un'API per il posizionamento su tale superficie. In precedenza, quando si usa la mesh di triangoli per eseguire il posizionamento, si doveva analizzare tutte le aree del quad e fare riempimento foro/post-elaborazione per identificare le posizioni valide per il posizionamento degli oggetti. Questo non è sempre necessario con i quad, perché il runtime di comprensione della scena deduce quali aree quad non sono state analizzate e invalidano le aree che non fanno parte della superficie.

SceneQuads con inferenza disabilitata, catturando le aree di posizionamento per le aree analizzate.
Immagine 1 - SceneQuads con inferenza disabilitata, acquisizione di aree di posizionamento per le aree analizzate.

I quad con inferenza abilitata, il posizionamento non è più limitato alle aree analizzate.
Immagine n. 2 : i quad con inferenza abilitata, il posizionamento non è più limitato alle aree analizzate.


Se l'applicazione intende inserire 2D o ologrammi 3D su strutture rigide dell'ambiente, la semplicità e la praticità di SceneQuads per il posizionamento è preferibile calcolare queste informazioni dalla mesh di mapping spaziale . Per altre informazioni su questo argomento, vedere le informazioni di riferimento su Scene Understanding SDK

Nota Per il codice di posizionamento legacy che dipende dalla mesh di mapping spaziale, è possibile calcolare la mesh di mapping spaziale insieme a SceneQuads impostando l'impostazione EnableWorldMesh. Se l'API Di comprensione della scena non soddisfa i requisiti di latenza dell'applicazione, è consigliabile continuare a usare l'API mapping spaziale.

Occlusione

L'occlusione del mapping spaziale rimane il modo meno latente per acquisire lo stato in tempo reale dell'ambiente. Anche se questo può essere utile per fornire occlusione in scene altamente dinamiche, è possibile prendere in considerazione la comprensione della scena per l'occlusione per diversi motivi. Se si usa la mesh di mapping spaziale generata da Scene Understanding, è possibile richiedere dati dal mapping spaziale che non verranno archiviati nella cache locale e non sono disponibili dalle API di percezione. L'uso del mapping spaziale per l'occlusione insieme alle mesh a tenuta d'acqua fornirà un valore aggiuntivo, in particolare il completamento della struttura della stanza non esaminata.

Se i requisiti possono tollerare l'aumento della latenza della comprensione della scena, gli sviluppatori di applicazioni devono prendere in considerazione l'uso della mesh a tenuta e della mesh di mapping spaziale in combinazione con le rappresentazioni planari. In questo modo si potrebbe offrire uno scenario "migliore di entrambi i mondi", in cui l'occlusione idriche semplificata è sposata con una geometria nonplanare più fine, fornendo le mappe di occlusione più realistiche possibili.

Fisica

La comprensione della scena genera mesh a tenuta che scomporre lo spazio con la semantica, in particolare per affrontare molte limitazioni alla fisica che le mesh di mapping spaziale impongono. Le strutture a tenuta garantiscono che i cast di raggi fisici vengano sempre colpiti e la scomposizione semantica consenta una generazione più semplice di mesh di navigazione per la navigazione interna. Come descritto nella sezione relativa all'occlusione, la creazione di una scena con EnableSceneObjectMeshes e EnableWorldMesh produrrà la mesh più completa possibile fisicamente. La proprietà watertight della mesh dell'ambiente impedisce ai hit test di non raggiungere le superfici. I dati mesh garantiranno che la fisica interagisca con tutti gli oggetti nella scena e non solo con la struttura della stanza.

Le mesh planari scomposte dalla classe semantica sono costrutti ideali per la pianificazione di navigazione e percorso, semplificando molti dei problemi descritti nella panoramica dello spostamento di mapping spaziale . Gli oggetti SceneMesh calcolati nella scena sono decomplicati dal tipo di superficie, assicurando che la generazione della mesh di spostamento sia limitata alle superfici su cui è possibile camminare. A causa della semplicità delle strutture del pavimento, la generazione dinamica della mesh di spostamento in motori 3d come Unity è raggiungibile a seconda dei requisiti in tempo reale.

La generazione di mesh di spostamento accurate attualmente richiede ancora la post-elaborazione, vale a dire le applicazioni devono ancora proiettare occluder sul pavimento per garantire che la navigazione non passi attraverso confusione/tabelle e così via. Il modo più accurato per eseguire questa operazione consiste nel proiettare i dati della mesh globale, che viene fornito se la scena viene calcolata con il flag EnableWorldMesh.

Visualizzazione

Anche se la visualizzazione del mapping spaziale può essere usata per il feedback in tempo reale dell'ambiente, esistono molti scenari in cui la semplicità degli oggetti planari e impermeabili offre prestazioni o qualità visiva più elevate. Le tecniche di proiezione e messa a terra d'ombra descritte utilizzando il mapping spaziale possono risultare più piacevoli se proiettate sulle superfici planari fornite da Quad o dalla mesh a tenuta planare. Ciò vale soprattutto per gli ambienti o gli scenari in cui la pre-analisi approfondita non è ottimale perché la scena dedurrà e completerà gli ambienti e i presupposti planari ridurranno al minimo gli artefatti.

Inoltre, il numero totale di superfici restituite dal mapping spaziale è limitato dalla cache spaziale interna, mentre la versione di Scene Understanding della mesh mapping spaziale può accedere ai dati di mapping spaziale non memorizzati nella cache. Per questo motivo, la comprensione della scena è più adatta all'acquisizione di rappresentazioni di mesh per spazi più grandi (ad esempio, più grandi di una singola stanza) per la visualizzazione o per un'ulteriore elaborazione di mesh. La mesh globale restituita con EnableWorldMesh avrà un livello di dettaglio coerente in tutto il mondo, che può produrre una visualizzazione più piacevole se ne viene eseguito il rendering come wireframe.

Vedere anche