Esempio di fisica bloccata a livello mondiale.

L'esempio di fisica del fascio offre alcune esperienze fisiche virtuali abilitate dal sistema di coordinate world locking tools di World Locking Tools.

Scenario

In HoloLens, la relazione tra un ancoraggio spaziale e la testa o altri ancoraggi nello spazio può cambiare in qualsiasi momento, a causa dei dati del sensore in ingresso o anche di rielaborare i dati esistenti.

Gli ancoraggi nello spazio di Unity reagiscono alle modifiche nella posizione dell'ancoraggio nello spazio sottostante trascinando il GameObject collegato insieme a esso. Questo movimento causa difficoltà per la simulazione della fisica:

  • Poiché la posizione di GameObject ancorata nello spazio viene impostata in modo esplicito dall'ancoraggio nello spazio di ogni fotogramma, non può essere impostata dalla simulazione (ad esempio, momentum).
  • Poiché l'ancoraggio spaziale sta spesso aggiornando la posizione di GameObject, non sembra essere inattivo rispetto ad altri ancora RigidBodies.
  • A causa di spostamenti impliciti del sistema di coordinate di Unity, poiché gli ancoraggi nello spazio regolano le coordinate del Ologrammi statico per mantenerle fisse rispetto al mondo reale, i calcoli della fisica, ad esempio itinerari e traiettorie, saranno disattivati. Ad esempio, un projectile perfettamente rivolto a un ologramma mancherà ancora se l'ologramma viene riposizionato dall'ancoraggio spaziale tra il calcolo della traiettoria e il raggiungimento della destinazione.

Quando le relazioni tra ancoraggi nello spazio misurati e gli oggetti virtuali visibili bloccati a tali oggetti diventano incoerenti, invece di regolare gli oggetti virtuali come ancoraggi nello spazio di Unity, gli strumenti di blocco globale regolano la trasformazione head per ridurre al minimo gli artefatti percepiti da tali incoerenze. Ciò consente agli oggetti virtuali di apparire coerenti in uno spazio di coordinate stabile, eliminando i problemi precedenti.

Compilare l'esempio

L'esempio richiede la funzionalità SpatialPerception. La funzionalità Microfono è necessaria anche per i comandi vocali.

Questo esempio richiede l'aggiunta dei livelli seguenti ai tag e ai livelli del progetto:

  • Pilastro
  • SpatialMapping

Esecuzione della demo

Controlli HUD

Questo HUD di base non è specifico di questo esempio di Fisica Beam, ma consente solo il controllo di runtime del comportamento degli strumenti di blocco globale per esplorare le sue funzionalità. È disponibile come drop-in per lo sviluppo in qualsiasi applicazione che usa strumenti di blocco globale, come descritto in Configurazione iniziale di World Locking Tools.

Screenshot degli esempi di HUD

Le statistiche di diagnostica vengono visualizzate per impostazione predefinita, ma possono essere disabilitate da Control HUD.

Pulsanti di opzione delle modalità

In qualsiasi momento, l'esempio può trovarsi in una delle modalità seguenti:

  • Inattiva: l'esempio di fisica non elabora attualmente l'input. Il menu hud e il pulsante di opzione, naturalmente, continuano a elaborare gli input.

  • Throw Dart - Una traiettoria viene calcolata, in base alle leggi di fisica di base e visualizzata. L'arco visualizzato mostra il percorso che verrà seguito da un proiettile generato (tramite il movimento di selezione). La dart generata seguirà una traiettoria balistica, rimbalzando su qualsiasi superficie di collisione, tra cui mesh di ricostruzione spaziale (SR), che influisce.

    Questi darts sono "rimovibili", come descritto di seguito.

  • Aggiungi pilastri - Su un movimento di selezione, un raggio viene gettato nel mondo nella direzione indicata. Se trova una superficie in collisione, alla scena viene aggiunto un pilastro verticale.

    Ogni pilastro aggiunto è in collisione e può fungere da supporto trave, come descritto di seguito. Tuttavia, ci sono due versioni di Pilastri aggiunti:

    • Se il pilastro è impostato su una superficie "rimovibile", il pilastro viene simulato fisicamente (ad esempio, può essere abbattuto).
    • Altrimenti il pilastro è in collisione, ma statico.

    In effetti, questa regola indica se viene aggiunto un pilastro nella mesh SR, sarà statico, ma in caso contrario sarà dinamico.

    I pilastri sono "rimovibili".

  • Aggiungi Fascio - Al primo clic, viene eseguito il cast di un raggio nella scena per trovare il primo endpoint del fascio. Successivamente, quando il raggio di selezione viene spostato attraverso la scena, viene disegnata una linea dal primo endpoint all'endpoint corrente. Il secondo movimento di selezione creerà un raggio che si estende tra il primo e l'endpoint corrente.

    Il bilanciamento del fascio con gli endpoint sui pilastri richiede chiaramente uno spazio in cui i pilastri dell'endpoint rimarranno fissi l'uno rispetto all'altro.

    Le travi sono "rimovibili".

  • Rimuovi oggetti: se l'oggetto ray cast è "rimovibile", viene rimosso dalla scena. Tutti gli oggetti supportati dall'oggetto rimosso verranno quindi eliminati.