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 HolographicSettings.SetFocusPointForFrame(). När fokuspunkten inte har angetts för en ram används standardstabiliseringsplanet.

Anteckning

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 uppdateringen Windows 10 april 2018 (RS4) eller senare din djupbuffert 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 uppdateringen Windows 10 april 2018 eller senare analyseras djupbufferten för att välja ett optimalt stabiliseringsplan automatiskt.

Båda strategierna bör ge ännu bättre bildkvalitet utan uttryckligt 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 appen körs på en HoloLens som ännu inte har uppdaterats till Windows 10 april 2018-uppdateringen.

Exempel

Det finns många sätt att ställa in fokuspunkten, vilket föreslås av de överlagringar som är tillgängliga för 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);
}

Anteckning

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 Mixed Reality plattformsfunktioner och API:er. Härifrån kan du fortsätta till nästa avsnitt:

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

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

Se även