Ponto de foco no UnityFocus point in Unity

Namespace: UnityEngine. XR. WSANamespace: UnityEngine.XR.WSA
Tipo: HolographicSettingsType: HolographicSettings

Use o ponto de foco para fornecer um HoloLens com uma dica sobre como estabilizar melhor os hologramas que estão sendo exibidos no momento.Use the focus point to provide HoloLens with a hint about how to best stabilize the holograms currently being displayed.

Se você quiser definir o ponto de foco no Unity, ele precisará ser definido a cada quadro usando HolographicSettings. SetFocusPointForFrame ().If you want to set the Focus Point in Unity, it needs to be set every frame using HolographicSettings.SetFocusPointForFrame(). Quando o ponto de foco não está definido para um quadro, o plano de estabilização padrão é usado.When the Focus Point isn't set for a frame, the default stabilization plane is used.

Observação

Por padrão, novos projetos do Unity têm a opção "Habilitar compartilhamento de buffer de profundidade" definida.By default, new Unity projects have the "Enable Depth Buffer Sharing" option set. Com essa opção, um aplicativo de Unity em execução em um headset de área de trabalho imersiva ou um HoloLens executando a atualização de abril de 2018 do Windows (RS4) ou posterior enviará seu buffer de profundidade para o Windows para otimizar a estabilidade do holograma automaticamente, sem que seu aplicativo especifique um ponto de foco:With this option, a Unity app running on either an immersive desktop headset or a HoloLens running the Windows 10 April 2018 Update (RS4) or later will submit your depth buffer to Windows to optimize hologram stability automatically, without your app specifying a focus point:

  • Em um headset de área de trabalho imersiva, isso habilitará a Reprojeção baseada em profundidade por pixel.On an immersive desktop headset, this will enable per-pixel depth-based reprojection.
  • Em um HoloLens executando a atualização de abril de 2018 do Windows 10 ou posterior, isso analisará o buffer de profundidade para escolher um plano de estabilização ideal automaticamente.On a HoloLens running the Windows 10 April 2018 Update or later, this will analyze the depth buffer to pick an optimal stabilization plane automatically.

Qualquer uma das abordagens deve fornecer uma qualidade de imagem ainda melhor sem trabalho explícito por seu aplicativo para selecionar um ponto de foco para cada quadro.Either approach should provide even better image quality without explicit work by your app to select a focus point for each frame. Observe que, se você fornecer um ponto de foco manualmente, isso substituirá o comportamento automático descrito acima e geralmente reduzirá a estabilidade do holograma.Note that if you do provide a focus point manually, that will override the automatic behavior described above, and will usually reduce hologram stability. Em geral, você deve especificar apenas um ponto de foco manual quando seu aplicativo estiver em execução em um HoloLens que ainda não foi atualizado para a atualização do Windows 10 de abril de 2018.Generally, you should only specify a manual focus point when your app is running on a HoloLens that has not yet been updated to the Windows 10 April 2018 Update.

ExemploExample

Há várias maneiras de definir o ponto de foco, conforme sugerido pelas sobrecargas disponíveis na função estática SetFocusPointForFrame .There are many ways to set the Focus Point, as suggested by the overloads available on the SetFocusPointForFrame static function. Veja abaixo um exemplo simples para definir o plano de foco para o objeto fornecido para cada quadro:Presented below is a simple example to set the focus plane to the provided object for each frame:

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

Observação

O código simples acima pode reduzir a estabilidade do holograma se o objeto focalizado terminar por trás do usuário.The simple code above may reduce hologram stability if the focused object ends up behind the user. Geralmente, recomendamos a configuração habilitar o compartilhamento de buffer de profundidade em vez de especificar manualmente um ponto de foco.We generally recommend setting Enable Depth Buffer Sharing instead of manually specifying a focus point.

Próximo ponto de verificação de desenvolvimentoNext Development Checkpoint

Se você estiver seguindo a jornada de desenvolvimento do Unity que apresentamos, você está no meio da exploração dos recursos e APIs da plataforma de realidade misturada.If you're following the Unity development journey we've laid out, you're in the midst of exploring the Mixed Reality platform capabilities and APIs. Deste ponto, você pode prosseguir para o próximo tópico:From here, you can continue to the next topic:

Ou vá diretamente para a implantação de seu aplicativo em um dispositivo ou emulador:Or jump directly to deploying your app on a device or emulator:

Você sempre pode voltar para os pontos de verificação de desenvolvimento do Unity a qualquer momento.You can always go back to the Unity development checkpoints at any time.

Confira tambémSee also