Condividi tramite


Punto focale in Unity

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

Usa il punto di attivazione per fornire a HoloLens un suggerimento su come stabilizzare al meglio gli ologrammi attualmente visualizzati.

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

Nota

Per impostazione predefinita, i nuovi progetti Unity hanno l'opzione "Enable Depth Buffer Sharing" impostata. Con questa opzione, un'app Unity in esecuzione su un visore VR desktop immersive o holoLens che esegue l'aggiornamento di Windows 10 di aprile 2018 (RS4) o versioni successive invierà automaticamente il buffer di profondità a Windows per ottimizzare la stabilità dell'ologramma, senza che l'app specifichi un punto attivo:

  • In un visore VR desktop immersivo, questa operazione abiliterà la riprogettazione basata sulla profondità per pixel.
  • In un dispositivo HoloLens che esegue l'aggiornamento di Windows 10 di aprile 2018 o versione successiva, verrà analizzato il buffer di profondità per selezionare automaticamente un piano di stabilizzazione ottimale.

Entrambi gli approcci dovrebbero offrire una qualità di immagine ancora migliore senza un lavoro esplicito da parte dell'app per selezionare un punto di stato attivo per ogni fotogramma. Si noti che se si fornisce manualmente un punto di attivazione, che sostituirà il comportamento automatico descritto in precedenza e in genere ridurrà la stabilità dell'ologramma. In genere, devi specificare un punto di attivazione manuale solo quando l'app è in esecuzione in un dispositivo HoloLens che non è ancora stato aggiornato all'aggiornamento di Windows 10 di aprile 2018.

Esempio

Esistono molti modi per impostare il punto di attivazione, come suggerito dagli overload disponibili nella funzione statica SetFocusPointForFrame . Di seguito è riportato un semplice esempio per impostare il piano di stato attivo 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 con stato attivo finisce dietro l'utente. In genere è consigliabile impostare Abilita condivisione buffer profondità invece di specificare manualmente un punto attivo.

Successivo checkpoint di sviluppo

Se si sta seguendo il percorso di sviluppo di Unity, si stanno esplorando le funzionalità e le API della piattaforma 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.

Vedi anche