Punto focale in Unity

Spazio dei nomi:UnityEngine.XR.WSA
Tipo: HolographicSettings

Usare il punto attivo per fornire HoloLens con un suggerimento su come stabilizzare meglio gli ologrammi attualmente visualizzati.

Se si vuole impostare il punto attivo in Unity, è necessario impostare ogni frame usando HolographicSettings.SetFocusPointForFrame(). Quando il punto di messa a fuoco non è impostato per un frame, viene usato il piano di stabilizzazione predefinito.

Nota

Per impostazione predefinita, i nuovi progetti Unity dispongono dell'opzione "Abilita condivisione buffer profondità". Con questa opzione, un'app Unity in esecuzione su un visore desktop immersivo o un HoloLens che esegue il Windows 10 aprile 2018 Update (RS4) o versioni successive invierà il buffer di profondità a Windows per ottimizzare la stabilità degli ologrammi automaticamente, senza che l'app specifica un punto attivo:

  • In un visore desktop immersivo, questo consentirà la riprogettazione basata su profondità per pixel.
  • In un oggetto HoloLens che esegue l'aggiornamento Windows 10 aprile 2018 o versioni successive, verrà analizzato il buffer di profondità per selezionare automaticamente un piano di stabilizzazione ottimale.

Entrambi gli approcci devono fornire una qualità di immagine ancora migliore senza lavorare esplicitamente dall'app per selezionare un punto di messa a fuoco per ogni cornice. Si noti che se si specifica un punto di stato attivo manualmente, che eseguirà l'override del comportamento automatico descritto in precedenza e in genere ridurrà la stabilità dell'ologramma. In genere, è consigliabile specificare solo un punto di stato attivo manuale quando l'app è in esecuzione in un oggetto HoloLens che non è ancora stato aggiornato all'aggiornamento di Windows 10 aprile 2018.

Esempio

Esistono molti modi per impostare il punto attivo, come suggerito dagli overload disponibili nella funzione statica SetFocusPointForFrame . Di seguito è riportato un semplice esempio per impostare il piano di messa a fuoco sull'oggetto fornito per ogni cornice:

public GameObject focusedObject;
void Update()
{
    // Normally the normal is best set to be the opposite of the main camera's
    // forward vector.
    // If the content is actually all on a plane (like text), set the normal to
    // the normal of the plane and ensure the user does not pass through the
    // plane.
    var normal = -Camera.main.transform.forward;     
    var position = focusedObject.transform.position;
    UnityEngine.XR.WSA.HolographicSettings.SetFocusPointForFrame(position, normal);
}

Nota

Il codice semplice precedente può ridurre la stabilità dell'ologramma se l'oggetto incentrato termina dietro l'utente. In genere è consigliabile impostare Abilita condivisione buffer profondità anziché specificare manualmente un punto attivo.

Successivo checkpoint di sviluppo

Se si sta seguendo il percorso di sviluppo di Unity, si è in corso l'esplorazione delle funzionalità e delle API della piattaforma di Realtà mista. Da qui, è possibile passare all'argomento successivo:

In alternativa, passare direttamente alla distribuzione dell'app in un dispositivo o emulatore:

È sempre possibile tornare ai checkpoint per lo sviluppo con Unity in qualsiasi momento.

Vedere anche