Leggere in inglese

Condividi tramite


Gestione Tracking-Map

Riepilogo

HoloLens compila costantemente una rappresentazione interna dell'ambiente fisico, denominata modalità di rilevamento "Device Shared", per mantenere la stabilità e le posizioni dell'ologramma tra sessioni. Tuttavia, le modifiche ambientali possono causare errori nel rilevamento nel tempo, che è problematico per le applicazioni con requisiti di accuratezza elevata. Per risolvere questo problema, è stata introdotta una nuova modalità di rilevamento "App-Exclusive" con un set di API di gestione.

La modalità "App-Exclusive" consente alle applicazioni di eseguire in un ambiente fresco, senza riduzione dell'accuratezza del rilevamento. La modalità genera un "token sessione esclusivo dell'app" per riprendere la mappa specifica dell'applicazione nelle sessioni future.

Note:

  • Due limitazioni della modalità "App-Exclusive" sono che una sola modalità può esistere alla volta, cancellando i dati precedenti e l'archiviazione su disco è limitata a un terzo della modalità "Device Shared". Tuttavia, il limite più piccolo è ancora sufficiente per la maggior parte delle applicazioni.

  • Lo scenario di destinazione per la modalità "App-Exclusive" è applicazioni con requisiti di accuratezza elevata e flussi di lavoro orientati all'attività. Gli esempi includono l'allineamento preciso degli ologrammi con oggetti reali e la modifica del modello 3D senza esigenze di persistenza.

Per usare le nuove API della modalità di rilevamento, è necessario un aggiornamento del sistema operativo HoloLens fall 2023. Le versioni precedenti non supportano la modalità "App-Exclusive".

Sfondo

Come viene usato HoloLens, viene costantemente creata una rappresentazione interna dell'ambiente fisico intorno al dispositivo. Ciò consente di mantenere correttamente gli ologrammi stabili nelle posizioni 3D e di spostarli quando il dispositivo viene usato nella stessa posizione fisica in più sessioni. Questa rappresentazione viene condivisa in tutte le applicazioni in un determinato HoloLens e viene chiamata in modo appropriato la modalità di rilevamento "Device Shared".

La rappresentazione interna di un ambiente potrebbe degradare nel tempo, a causa di vari fattori come piccole modifiche all'ambiente (ad esempio una sedia che si sposta in una nuova posizione) o modifiche di illuminazione. Queste modifiche potrebbero introdurre errori nel rilevamento di HoloLens, che potrebbe causare una deriva di ologrammi dalla loro posizione originale per piccole quantità. Questo movimento è spesso trascurabile per molte applicazioni. Tuttavia, per le applicazioni con requisiti di accuratezza elevata, la riduzione nel tempo è problematica. In precedenza, la soluzione alternativa più comune è stata per le applicazioni per consigliare agli utenti di usare la scheda "Holograms" nell'applicazione Impostazioni per "Rimuovi tutti gli hologrammi", che cancella tutti i dati dell'ambiente salvati. Questo atto verrà reimpostato in un ambiente nuovo, a costo di cancellare tutti gli ologrammi creati in precedenza.

API di gestione Tracking-Map

Per alleviare alcuni dei problemi che si verificano quando la mappa di rilevamento "Device Shared" si evolve nel tempo, il supporto è stato aggiunto per un'applicazione per gestire il relativo ambiente a un livello più granulare. Tuttavia, questa nuova funzionalità include i propri compromessi che devono essere gestiti attentamente, a seconda dei requisiti di un'applicazione.

Modalità di rilevamento "App-Exclusive"

Un nuovo set di API consente a un'applicazione di acconsentire esplicitamente all'esecuzione in modalità di rilevamento "App-Exclusive" anziché "Device Shared" predefinita. Questa operazione crea un ambiente nuovo e nuovo per l'applicazione da usare durante la sessione corrente, annullata da eventuali errori di rilevamento dello spazio del dispositivo in seguito alla riduzione del tempo. Il passaggio a questa modalità equivale all'uso del comando "Rimuovi tutti gli hologrammi" da Impostazioni, ma applicabile solo all'applicazione in esecuzione. Gli ologrammi per tutte le altre applicazioni (inclusa la Shell HoloLens) rimangono intatti e disponibili come prima. Tornare alla shell o attivare un'altra applicazione restituisce automaticamente holoLens alla modalità di rilevamento "Device Shared".

Inoltre, la modalità di rilevamento "App-Exclusive" consente all'applicazione chiamante di richiedere la fedeltà di rilevamento dell'accuratezza elevata. Questa nuova modalità richiede che il localizzatore tenti di tenere traccia in modo più accurato, a spese dell'uso di una maggiore potenza della batteria e dell'archiviazione su disco. Questa nuova modalità è più adatta per gli scenari dell'applicazione che si svolgono in aree di dimensioni sala con requisiti di accuratezza elevata, ad esempio l'allineamento degli ologrammi con oggetti reali.

Quando si immette per la prima volta la modalità di rilevamento "App-Exclusive", l'applicazione chiamante viene emesso un "token sessione esclusivo dell'app". Questo token può essere usato per riprendere il rilevamento della mappa specifica dell'app nelle sessioni future dell'applicazione, ad esempio se l'utente passa dall'applicazione e viene terminato in background a causa di vincoli di risorse di sistema. Tuttavia, se il dispositivo passa semplicemente al sonno o l'utente interagisce brevemente con shell, l'applicazione riprende automaticamente nella modalità di rilevamento "App-Exclusive" una volta riattivato (e tutto lo stato dell'applicazione rimane disponibile).

Esistono due limitazioni da tenere presente quando si usa la modalità di rilevamento "App-Exclusive":

  1. Solo una singola mappa di rilevamento "App-Exclusive" può esistere in HoloLens alla volta. Se un'applicazione richiede una nuova modalità di rilevamento "App-Esclusiva", i dati di rilevamento "App-Exclusive" precedenti verranno cancellati e tutti gli oggetti SpatialAnchor (e gli ologrammi collegati) verranno persi, anche se i dati sono stati creati da un'applicazione diversa usando la propria modalità di rilevamento "App-Exclusive". Pertanto, il tentativo di tornare a una sessione "App-Exclusive" precedente specificando un "Token sessione esclusivo dell'app" potrebbe causare un valore restituito che indica che la sessione precedente non è stata trovata. Le applicazioni devono essere preparate per gestire lo scenario in cui non è disponibile una mappa di rilevamento "App-Exclusive" precedente.

  2. L'archiviazione su disco disponibile per la modalità di rilevamento App-Exclusive è limitata a un terzo di ciò che è disponibile per la modalità di rilevamento "Device Shared", anche se questa limitazione è improbabile che sia un problema per la maggior parte degli utenti. Quando questo limite viene raggiunto, HoloLens inizia a cancellare i dati di rilevamento meno preziosi, che generano una maggiore accuratezza del rilevamento. Il limite più piccolo è ancora abbastanza grande per mantenere una buona accuratezza per gli ambienti di dimensioni interne e probabilmente è improbabile che sia un problema per la maggior parte degli scenari dell'applicazione.

Dato questi limiti, lo scenario di destinazione per la modalità di rilevamento "App-Exclusive" è per le applicazioni con requisiti di accuratezza elevata orientati all'attività, in cui un'attività potrebbe essere interrotta dall'utente che restituisce HoloLens Shell o il dispositivo che sta andando a dormire. Tuttavia, una volta completata l'attività dell'utente, non è necessario salvare nulla sull'attività (rispetto all'ambiente 3D) e quindi è possibile cancellare.

Esempi:

  1. Allineamento con accuratezza elevata degli ologrammi a un oggetto reale, usando codici QR per avviare lo scenario.
  2. Modifica di un modello 3D con requisiti di accuratezza elevata quando nessuna persistenza spaziale 3D del modello deve verificarsi dopo la fine della sessione.
  3. Rilevamento in luoghi con un sacco di varianza ambientale (ad esempio persone in movimento), che a volte comporta una qualità di rilevamento più scarsa rispetto a più ambienti statici.

API App-Exclusive

Tracking-Map API di gestione sono disponibili in Microsoft.MixedReality.OpenXR.TrackingMapManager

domande frequenti App-Exclusive

  • Quando è necessario chiamare un'applicazione EnterNewAppExclusiveTrackingSession()?

    • Per ottenere effetto, un'applicazione che richiede di immettere la modalità di rilevamento "App-Exclusive" deve essere l'applicazione 3D attiva e immersiva. Pertanto, queste API devono essere usate solo dopo che l'applicazione ha avviato il rendering della sua interfaccia utente 3D (e non, ad esempio, quando l'applicazione viene eseguita per la prima volta).
  • Un'applicazione deve chiamare LeaveAppExclusiveTrackingSession()?

    • Un'applicazione deve lasciare la modalità di rilevamento "App-Exclusive" solo se vuole eseguire qualsiasi azione nella modalità di rilevamento "Device Shared", ad esempio per rendere persistente un oggetto SpatialAnchor per il richiamo in una sessione separata. Quando lo stato attivo viene modificato in un'applicazione diversa (ad esempio HoloLens Shell), HoloLens passa automaticamente alla modalità di rilevamento appropriata. Se l'utente torna all'applicazione, HoloLens passa automaticamente alla modalità di rilevamento "App-Exclusive", come appropriato. Tuttavia, se il sistema operativo termina completamente il processo dell'applicazione (a causa dei vincoli di risorse), l'applicazione viene riavviata in modalità di rilevamento "Device Shared" e l'applicazione deve rilevare questa operazione (tramite l'API CurrentTrackingMapType) e immettere nuovamente la modalità di rilevamento desiderata.
  • I dati dell'ambiente di un'applicazione creati nel rilevamento "App-Exclusive" possono essere accessibili da altre applicazioni o sono privati per l'app?

    • Nella modalità di rilevamento "Device Shared" tutti i dati dell'ambiente vengono condivisi tra applicazioni. Tuttavia, nella modalità di rilevamento "App-Exclusive", i dati di ambiente creati in precedenza e gli ologrammi sono disponibili solo per un'applicazione che ha ripreso la modalità di rilevamento "App-Exclusive" usando un token di sessione App-Exclusive (precedentemente rilasciato all'applicazione quando ha originariamente richiesto la modalità di rilevamento "App-Exclusive"). Ciò significa che, a meno che non venga fornita un'applicazione diversa, App-Exclusive non sarà possibile riprendere il rilevamento "App-Exclusive" con gli stessi dati di ambiente e ologrammi dell'applicazione precedente. In modo efficace, purché un'applicazione non condivide il token di sessione di App-Exclusive, i dati verranno siloati da tutte le altre applicazioni nel dispositivo.
  • Quale versione di HoloLens è necessaria per usare le nuove API della modalità di rilevamento?

    • È necessario un aggiornamento del sistema operativo per usare le nuove API di gestione delle mappe di rilevamento. Un'applicazione deve usare l'enumerazione "SupportedTrackingMapTypes" per confermare il supporto per la modalità di rilevamento desiderata prima di usare tali API.
    • La modalità di rilevamento "App-Exclusive" è stata introdotta nell'aggiornamento del sistema operativo HoloLens fall 2023. In questa versione e versioni successive, l'enumerazione "SupportedTrackingMapTypes" include il valore "AppExclusive". Le versioni precedenti non includono questo valore e le chiamate a qualsiasi API di rilevamento "App-Exclusive" generano un'eccezione.
    • In qualsiasi versione del sistema operativo HoloLens prima di ottobre 2023, "SupportedTrackingMapTypes" segnala solo "DeviceShared" e non è possibile usare altre API di gestione.
  • Esistono considerazioni speciali durante la creazione di app con Unity?

    • Le applicazioni stabiliscono in genere uno spazio di coordinate del mondo radice per connettere visualizzazioni, azioni e ologrammi insieme. Le applicazioni devono usare uno spazio di riferimento non associato per stabilire un sistema di coordinate su scala mondiale. Ciò eviterà il rilevamento limitato o perso e la deriva ologramma indesiderata quando l'utente si sposta lontano (ad esempio, 5 metri di distanza) da dove viene avviata l'app o quando l'app si sposta tra mappe spaziali.

    • Per abilitare lo spazio di riferimento non associato nelle app Unity, se non si usa MRTK3, aggiungere il componente EyeLevelSceneOrigin all'origine XR della scena. Per impostazione predefinita, il rig predefinito di MRTK3 abilita già lo spazio di riferimento in uscita in HoloLens 2. Se si usa MRTK3 e non si usa il rig predefinito, aggiungere il componente UnboundedTrackingMode all'origine XR della scena.

Vedere anche