Segnaposto spazio

I problemi da risolvere

Errore di scalabilità

Anche se l'approccio tradizionale di ancoraggio spaziale per l'allineamento degli ologrammi con le funzionalità del mondo reale funziona perfettamente su scala ridotta, la scala cresce per includere più di un metro o così via.

L'errore di scala nello spazio di tracciamento della testa significa che anche se un ancoraggio spaziale mantiene una fine di un oggetto virtuale, ridimensionato solo pochi metri di lunghezza, perfettamente allineato a una funzionalità del mondo reale, l'altra estremità probabilmente non è allineata a una caratteristica reale corrispondente. Questo disallineamento è dovuto al fatto che la distanza percorsa attraverso lo spazio a capo tende a differire dalla distanza attraversata dallo spazio fisico con un limite di errore pari a +-10%. L'errore effettivo è spesso inferiore (dipende da molte caratteristiche dell'ambiente e del dispositivo), ma in genere sarà significativo e cresce senza limiti man mano che la scala del progetto cresce.

Mettere un altro modo, se un utente indossa un HoloLens cammina 10 metri nel mondo reale, la distanza percorsa nello spazio virtuale, come segnalato dal tracker head, sarà compresa tra 9 metri e 11 metri. Se l'utente cammina 50 metri, l'errore cresce a +-5 metri. Maggiore è la crescita dell'errore da parte dell'utente.

Pertanto, un fascio di 10 metri (nello spazio di modellazione) con un punto finale perfettamente allineato alla fine zero di una misura nastro nello spazio reale avrà l'altra estremità registrata nella misura del nastro in un punto compreso tra 9 e 11 metri.

Per gli stessi motivi, più oggetti, ogni mondo bloccato usando ancoraggi nello spazio spaziale, sarà distanza diverse rispetto allo spazio virtuale rispetto allo spazio reale.

Sistema di coordinate arbitrario

C'è un'altra preoccupazione. Il sistema di coordinate Unity in HoloLens è indeterminato. Si basa esclusivamente sulla posizione della testa all'inizio dell'applicazione.

Questa arbitrarietà non è un problema per molte attività. Se l'obiettivo è eseguire il cast di un raggio nel mapping spaziale della stanza e posizionare un ologramma nella posizione di hit, i valori numerici della posizione di hit sono irrilevanti.

Analogamente, quando si estraono elementi dell'esperienza utente intorno all'utente, le coordinate assolute per posizionare un elemento dell'esperienza utente non sono importanti, ma solo le coordinate relative all'utente.

Tuttavia, gli scenari più coinvolti possono essere complicati dal sistema di coordinate imprevedibile. Il caricamento di una grande raccolta di oggetti, ad esempio il desktop di un utente o un'intera sala ufficio, nello spazio virtuale con una relazione fissa con lo spazio fisico, richiede una trasformazione di compensazione per allineare gli oggetti dello spazio di modellazione con il frame di coordinate basato sulla testa.

Tale compensazione viene spesso eseguita collegando tutti gli oggetti a una singola trasformazione Unity e modificando tale singola trasformazione in modo da posizionare e orientare gli oggetti virtuali in allineamento con il mondo reale.

Analogamente, è possibile usare una singola trasformazione nella gerarchia della fotocamera per riallineare la fotocamera in modo che quando l'utente visualizzi un punto di riferimento reale, un oggetto virtuale con le coordinate di modellazione desiderate apparirà sovrapposto a tale funzionalità.

Soluzione

La funzionalità di blocco dello spazio risolve entrambi questi problemi contemporaneamente. Ciò avviene sfruttando sia la natura mondiale bloccata dello spazio globale degli strumenti di blocco mondiale, sia l'arbitrarietà di tale spazio.

Allineamento dello spazio Unity con il mondo reale

World Locking Tools al suo centro fornisce un sistema di coordinate stabile bloccato al mondo. Un oggetto virtuale inserito in World Locked Space registrato con una funzionalità reale rimarrà registrato con tale funzionalità del mondo reale nel tempo.

Ma ci sono un numero infinito di spazi che soddisfano tale obiettivo. Infatti, dato uno spazio bloccato dal mondo, trasformandolo in base a qualsiasi posizione arbitraria e rotazione produce un altro spazio ugualmente valido a livello mondiale bloccato.

La funzionalità Segnaposto spazio applica un altro vincolo che rimuove la natura indeterminato della trasformazione di blocco globale.

Questo vincolo è che quando "vicino" un segnaposto dello spazio, la posizione di tale segnaposto nello spazio bloccato dal mondo sarà la stessa della posizione del segnaposto nello spazio di modellazione.

Si consideri un cubo in una scena unity modellata a coordinate globali di (0, 0, 1). Quando la scena viene caricata in HoloLens, il cubo verrà visualizzato 1 metro davanti alla posizione iniziale della testa. A seconda della posizione iniziale della testa, che potrebbe trovarsi ovunque nella stanza fisica.

Il segnaposto spazio consente di bloccare il cubo in una caratteristica del mondo reale nella stanza, ad esempio l'angolo di una scrivania specifica. A differenza del blocco del cubo con un ancoraggio nello spazio, il segnaposto spaziatrice sposta l'intero spazio di Unity in modo che il cubo sia allineato all'angolo della scrivania. Ad esempio, altri elementi desktop modellati in relazione al cubo in Unity verranno distribuiti correttamente nel desktop reale.

Risoluzione dell'errore di scalabilità

Mentre un singolo pin dello spazio rimuove l'indeterminacy della relazione tra la coordinata virtuale e il mondo reale, non risolve l'errore di scala.

Ovvero, mentre potrebbe aver spostato l'origine in una posizione fisica allineata e orientamento, camminare 10 metri nel mondo reale potrebbe comunque spostare l'utente solo 9 metri nello spazio virtuale.

Per questo motivo, più pin spazio forniscono la soluzione completa. Quando l'utente si trova vicino a un pin di spazio specifico, il mondo verrà allineato in base al pin dello spazio. Gli altri pin dello spazio saranno disallineati, ma essendo più distanti, che in genere si rivelano accettabili, e spesso impercettibili.

Quando l'utente si sposta tra i puntini di misura, un'interpolazione uniforme riduce al minimo l'errore di scala in qualsiasi punto nello spazio. Con una densità adeguata di pin spaziali come punti di riferimento, il disallineamento del mondo reale e delle funzionalità virtuali viene ridotto all'ordine di errore del tracker head.

Anche se la densità necessaria dei pin di spazio dipende sia dalla qualità di rilevamento supportata dall'ambiente che dai requisiti di precisione dell'applicazione, alcuni numeri potrebbero aiutare a impostare le aspettative. In un ambiente ufficio, con un'illuminazione adeguata e caratteristiche visibili da tenere traccia, una spaziatura di 10 metri tra i pin dello spazio riduce l'errore da un accumulo di 10-20 cm oltre 10 metri, fino a errori millimetri (errore massimo l.t. 0,5 cm, errore 0,0 cm negli endpoint).

Persistenza

La funzionalità Segnaposto spaziatrice funziona in combinazione con il resto della persistenza degli strumenti di blocco globale. Esistono entrambe le chiamate manuali per richiamare il salvataggio e il caricamento dallo script e i flag per il salvataggio e il caricamento automatizzati per sessione.

Se abilitata, la funzionalità AutoSave/AutoLoad in World Locking Tools Manager consentirà di ripristinare l'allineamento spaziale completo del mondo virtuale al mondo reale nelle sessioni successive.

In pratica, la persistenza significa che un singolo o piccolo numero di sessioni preliminari può essere usato per stabilire un'analisi adeguata dell'ambiente fisico e l'allineamento di tale ambiente fisico con lo spazio di coordinate di modellazione di Unity. Le sessioni successive caricheranno quindi l'ambiente virtuale correttamente allineato al mondo reale senza ulteriori azioni dell'utente necessarie.

Interpolazione ed estrapolazione

L'interpolazione e l'estrapolazione sono entrambe tecniche per la stima dei valori dei dati in cui non è stata eseguita alcuna misurazione diretta. I puntini di spazio, come illustrato finora, sono posizioni in cui sono state effettuate le misurazioni. Le coordinate virtuali sono le coordinate desiderate e le coordinate fisiche sono coordinate misurate in cui devono essere visualizzate le coordinate virtuali.

Il sistema esegue l'interpolazione, ma non l'estrapolazione, come illustrato di seguito. In generale, l'interpolazione è più sicura e più stabile rispetto all'estrapolazione. L'interpolazione lineare a fasi fornita soddisfa la maggior parte delle esigenze delle applicazioni. L'estrapolazione è meno sicura e la sua implementazione ideale richiede in genere conoscenze a livello di applicazione. Pertanto, l'applicazione deve gestire l'estrapolazione come descritto di seguito.

Senza l'applicazione che aggiunge puntini di estrapolazione, al di fuori dei limiti dei pin lo spazio viene aggiunto esclusivamente dal valore al limite più vicino. Se sono presenti solo due puntini, A e B, man mano che l'utente passa da A a B, l'allineamento specificato da A e quello specificato da B (interpolazione). Tuttavia, quando l'utente passa B, il blocco di blocco viene applicato esattamente a quello specificato da B (estensione costante).

Interpolazione

Nell'area 2D tra pin, la localizzazione spaziale viene interpolata in modo lineare. Se i pin dello spazio vengono posizionati in modo accurato e l'errore di rilevamento viene distribuito uniformemente nell'area, la correzione applicata tra i segnaposto dello spazio sarà esattamente corretta.

Si dovrebbe sottolineare qui che il presupposto di uguale distribuzione degli errori non è esattamente corretto. Tuttavia, come approssimazione, il modello lineare fornisce ottimi risultati di correzione.

Estrapolazione

Il sistema non fornisce alcun servizio di estrapolazione predefinito, utilizzando l'estensione del valore costante all'esterno dello scafo convesso dei pin dello spazio. Questa approssimazione equivale a presupporre, in modo errato, che non vi sia alcun errore di scala all'esterno dei pin di spazio forniti dall'applicazione.

Tuttavia, se l'applicazione dispone di informazioni sulla distribuzione degli errori o è soddisfatta di una stima, può creare qualsiasi estrapolazione desiderata aggiungendo più puntini di spazio nella periferia.

Esempio di estrapolazione

Si consideri una scena con quattro puntini di spazio, posizionati in un quadrato con bordi di 4 metri di lunghezza.

Si supponga ora che lo spazio effettivo in cui l'utente si muoverà è di 12 metri x 12 metri, con i marcatori fisici corrispondenti ai quattro puntini che circondano il centro dello spazio.

Se l'applicazione è soddisfatta di un'approssimazione di errore costante, contiene tutte le informazioni necessarie per aggiungere quattro o più pin di spazio per fornire copertura sull'intero spazio 12x12m.

I segnaposto verranno etichettati agli angoli del quadrato 4x4 in base alle loro direzioni cardinali, NE, NW, SW e SE. Verranno anche etichettate le posizioni virtuali in ogni punto virtualNE e così via, nonché le posizioni fisiche in ogni punto fisico e così via.

Quattro puntini di spazio

Una strategia consiste nell'aggiungere punti cardinali esterni creando un quadrato di 12 metri x 12 metri che circonda il quadrato interno, aggiungendo quattro altri punti cardinali, outerNE, outerNW, outerSW e outerSE. Le posizioni virtuali e fisiche di ognuna di queste sono semplici da calcolare. Prendendo outerNE, ad esempio:

virtualOuterNE = virtualNE + (virtualNE - virtualSW);
physicalOuterNE = physicalNE + (physicalNE - virtualSW);

Otto puntini di spazio

La creazione di uno spazio di estrapolazione di 20x20 metri modifica solo la scala del delta applicato:

scale = (outerSize - innerSize) / innerSize / 2;
virtualOuterNE = virtualNE + (virtualNE - virtualSW) * scale;
physicalOuterNE = physicalNE + (physicalNE - virtualSW) * scale;

Con un outerSize di 20 m e un innerSize di 4 m, la scala sarebbe 2.

Una strategia alternativa potrebbe essere quella di aggiungere otto punti in più oltre agli angoli, come illustrato di seguito. Il calcolo delle nuove posizioni dei pin da quelle esistenti è esattamente come indicato in precedenza. Attenzione che, anche se è vero che l'aggiunta di più pin in genere migliora la stabilità, non migliora necessariamente l'accuratezza.

Dodici puntini di spazio

Allineamento di un subset della scena

La discussione riguarda finora AlignmentManager globale, di proprietà e gestita da WorldLockingManager.GetInstance(). Come descritto in precedenza, questo aggiunge l'intero spazio di coordinate di Unity globale alle funzionalità fisiche in punti di riferimento strategici.

Tuttavia, ci sono momenti in cui si applica lo stesso concetto a un subset della scena.

Si consideri ad esempio uno scenario in cui le annotazioni per due automobili devono essere caricate. La posizione esatta delle due automobili fisiche non può essere nota in anticipo, in quanto potrebbe variare in base al layout di diverse concessionarie. Tuttavia, una volta che uno dei veicoli fisici è stato distribuito, le posizioni di tutte le parti del componente relative a tale posizione di distribuzione sono note.

In questo scenario è quindi possibile usare i pin dello spazio per aggiungere lo chassis virtuale e le annotazioni per ognuno dei veicoli in modo indipendente. L'intera rappresentazione virtuale di ogni veicolo può essere configurata in Unity e quindi mappata al veicolo fisico in fase di esecuzione. Questo allineamento può essere manuale usando l'esperienza utente MRTK o automatizzato usando codici a matrice o qualsiasi altra strategia. Indipendentemente dal modo in cui vengono determinati i dati della corrispondenza tra punti di riferimento virtuali e fisici, una volta inseriti nel WLT tramite l'API Pin spazi, WLT manterrà gli oggetti virtuali e fisici allineati in modo percettivo.

Nel caso di allineamento dello spazio delle coordinate globali, l'allineamento avviene modificando il nodo Regolazione (in genere l'elemento padre della fotocamera). Tale nodo deve essere considerato riservato per l'uso di WLT. Qualsiasi altra manomissione con tale trasformazione comporterà un comportamento indefinito.

Analogamente, quando si allinea un sottoalbero, l'allineamento deve essere proprietario di una trasformazione, in corrispondenza della radice (sotto)del sottoalbero da allineare. Qualsiasi manomissione esterna con tale trasformazione comporterà un comportamento indefinito.

Prima che gli spazi indipendenti vengano aggiunti, verranno trascinati durante l'aggiunta dello spazio globale. Tuttavia, una volta aggiunto uno spazio indipendente, viene considerato aggiunto al mondo fisico e quindi le successive modifiche all'aggiunta dello spazio globale al mondo fisico non ne influiranno.

Vedi anche

Vedere anche