Dela via


Fokuspunkt i Unity

Namnområde: UnityEngine.XR.WSA
Typ: HolographicSettings

Använd fokuspunkten för att ge HoloLens en ledtråd om hur du bäst stabiliserar de hologram som visas för närvarande.

Om du vill ange fokuspunkten i Unity måste den anges för varje bildruta med hjälp av HolographicSettings.SetFocusPointForFrame(). När fokuspunkten inte har angetts för en ram används standardstabiliseringsplanet.

Kommentar

Som standard har nya Unity-projekt alternativet "Aktivera delning av djupbuffert" inställt. Med det här alternativet skickar en Unity-app som körs på ett uppslukande skrivbordsheadset eller en HoloLens som kör Windows 10 April 2018 Update (RS4) eller senare djupbufferten till Windows för att optimera hologramstabiliteten automatiskt, utan att din app anger en fokuspunkt:

  • På ett uppslukande skrivbordsheadset möjliggör detta djupbaserad omprojektion per bildpunkt.
  • På en HoloLens som kör Windows 10 April 2018 Update eller senare analyserar detta djupbufferten för att välja ett optimalt stabiliseringsplan automatiskt.

Båda metoderna bör ge ännu bättre bildkvalitet utan explicit arbete från din app för att välja en fokuspunkt för varje bildruta. Observera att om du anger en fokuspunkt manuellt åsidosätter det automatiska beteendet som beskrivs ovan och minskar vanligtvis hologramstabiliteten. I allmänhet bör du bara ange en manuell fokuspunkt när din app körs på en HoloLens som ännu inte har uppdaterats till Windows 10 April 2018 Update.

Exempel

Det finns många sätt att ställa in Fokuspunkt, vilket föreslås av de överlagringar som är tillgängliga för den statiska funktionen SetFocusPointForFrame . Nedan visas ett enkelt exempel för att ställa in fokusplanet på det angivna objektet för varje bildruta:

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);
}

Kommentar

Den enkla koden ovan kan minska hologramstabiliteten om det fokuserade objektet hamnar bakom användaren. Vi rekommenderar vanligtvis att du anger Aktivera delning av djupbuffert i stället för att manuellt ange en fokuspunkt.

Nästa kontrollpunkt för utveckling

Om du följer unity-utvecklingsresan som vi har lagt fram är du mitt uppe i att utforska funktionerna och API:erna för Mixed Reality-plattformen. Härifrån kan du fortsätta till nästa ämne:

Eller gå direkt till distributionen av appen på en enhet eller emulator:

Du kan alltid gå tillbaka till Unity-utvecklingspunkterna när som helst.

Se även