Ponto de foco no Unity

Namespace:UnityEngine.XR.WSA
Tipo: HolographicSettings

Use o ponto de foco para fornecer ao HoloLens uma dica sobre como estabilizar melhor os hologramas que estão sendo exibidos no momento.

Se você quiser definir o Ponto de Foco no Unity, ele precisará ser definido a cada quadro usando HolographicSettings.SetFocusPointForFrame(). Quando o Ponto de Foco não está definido para um quadro, o plano de estabilização padrão é usado.

Observação

Por padrão, novos projetos do Unity têm a opção "Habilitar Compartilhamento de Buffer de Profundidade" definida. Com essa opção, um aplicativo do Unity em execução em um headset de área de trabalho imersiva ou um HoloLens executando a Atualização de abril de 2018 (RS4) do Windows 10 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:

  • Em um headset de área de trabalho imersiva, isso habilitará a reprojeção baseada em profundidade por pixel.
  • 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.

Qualquer abordagem deve fornecer uma qualidade de imagem ainda melhor sem o trabalho explícito do aplicativo para selecionar um ponto de foco para cada quadro. 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. Em geral, você só deve especificar 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 de abril de 2018 para o Windows 10.

Exemplo

Há várias maneiras de definir o Ponto de Foco, conforme sugerido pelas sobrecargas disponíveis na função estática SetFocusPointForFrame . Apresentado abaixo está um exemplo simples para definir o plano de foco para o objeto fornecido para cada quadro:

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 poderá reduzir a estabilidade do holograma se o objeto focalizado acabar atrás do usuário. Geralmente, é recomendável definir Habilitar o Compartilhamento de Buffer de Profundidade em vez de especificar manualmente um ponto de foco.

Próximo ponto de verificação de desenvolvimento

Se você estiver seguindo o percurso de desenvolvimento do Unity que apresentamos, você está no meio da exploração dos recursos e APIs da plataforma Realidade Misturada. Deste ponto, você pode prosseguir para o próximo tópico:

Ou vá diretamente para a implantação de seu aplicativo em um dispositivo ou emulador:

Você sempre pode voltar para os pontos de verificação de desenvolvimento do Unity a qualquer momento.

Confira também