Punto focale in Unity

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

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

Se si vuole impostare il punto di messa a fuoco in Unity, è necessario impostarlo per ogni fotogramma 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, per i nuovi progetti Unity è impostata l'opzione "Abilita condivisione buffer di profondità". Con questa opzione, un'app Unity in esecuzione su un visore desktop immersivo o un HoloLens che esegue l'aggiornamento di Windows 10 aprile 2018 (RS4) o versione successiva invierà il buffer di profondità a Windows per ottimizzare automaticamente la stabilità dell'ologramma, senza che l'app specifica un punto di interesse:

  • In un visore desktop immersivo, ciò consentirà la riproiezione basata sulla profondità per pixel.
  • In un HoloLens l'aggiornamento Windows 10 aprile 2018 o versione successiva, verrà analizzato il buffer di profondità per scegliere automaticamente un piano di stabilizzazione ottimale.

Entrambi gli approcci dovrebbero offrire una qualità dell'immagine ancora migliore senza il lavoro esplicito dell'app per selezionare un punto attivo per ogni fotogramma. Si noti che se si specifica manualmente un punto di interesse, questo eseguirà l'override del comportamento automatico descritto in precedenza e in genere ridurrà la stabilità dell'ologramma. In genere, è necessario specificare un punto di attivazione manuale solo quando l'app è in esecuzione in un HoloLens che non è ancora stato aggiornato all'aggiornamento Windows 10 aggiornamento 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 messa a fuoco sull'oggetto fornito per ogni fotogramma:

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 semplice codice precedente può ridurre la stabilità dell'ologramma se l'oggetto con lo stato attivo termina dietro l'utente. È in genere consigliabile impostare Abilita condivisione buffer di profondità anziché specificare manualmente un punto di attivazione.

Successivo checkpoint di sviluppo

Se si sta seguendo il percorso di sviluppo di Unity che è stato strutturato, si stanno esplorando le api e le Realtà mista della piattaforma. 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