Foco na Unidade

Espaço de nome:UnityEngine.XR.WSA
Tipo: HolographicSettings

Utilize o ponto de focagem para fornecer HoloLens uma dica sobre como estabilizar melhor os hologramas que estão atualmente a ser apresentados.

Se pretender definir o Ponto de Foco em Unidade, tem de ser definido cada quadro utilizando HolographicSettings.SetFocusPointForFrame(). Quando o Ponto de Focagem não está definido para uma moldura, o plano de estabilização padrão é usado.

Nota

Por predefinição, os novos projetos de Unidade têm o conjunto de opções "Enable Depth Buffer Sharing". Com esta opção, uma aplicação Da Unidade em execução num auricular imersivo ou num HoloLens a executar a atualização de Windows 10 abril de 2018 (RS4) ou mais tarde submeterá o seu tampão de profundidade para Windows para otimizar automaticamente a estabilidade do holograma, sem que a sua aplicação especifique um ponto de foco:

  • Num auricular imersivo para o ambiente de trabalho, isto permitirá uma reprojecção baseada em profundidade por pixel.
  • Numa HoloLens a executar a atualização Windows 10 abril de 2018 ou posterior, isto irá analisar o tampão de profundidade para escolher automaticamente um plano de estabilização ideal.

Qualquer uma das abordagens deve fornecer ainda melhor qualidade de imagem sem trabalho explícito da sua app para selecionar um ponto de foco para cada frame. Note que se fornecer um ponto de focagem manualmente, isso irá sobrepor-se ao comportamento automático descrito acima, e geralmente reduzirá a estabilidade do holograma. Geralmente, só deve especificar um ponto de foco manual quando a sua aplicação está a funcionar numa HoloLens que ainda não foi atualizada para a Atualização de Windows 10 abril de 2018.

Exemplo

Existem muitas formas de definir o Ponto de Foco, como sugerido pelas sobrecargas disponíveis na função estática SetFocusPointForFrame. Apresentado abaixo é 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);
}

Nota

O código simples acima pode reduzir a estabilidade do holograma se o objeto focado acabar por trás do utilizador. Recomendamos geralmente a definição de Enable Depth Buffer Sharing em vez de especificar manualmente um ponto de focagem.

Próximo checkpoint de desenvolvimento

Se está a seguir a jornada de desenvolvimento da Unidade que traçamos, está no meio de explorar as capacidades da plataforma de Realidade Mista e APIs. A partir daqui, pode continuar para o próximo tópico:

Ou salte diretamente para a implementação da sua aplicação num dispositivo ou emulador:

Pode sempre voltar aos postos de controlo de desenvolvimento da Unidade a qualquer momento.

Ver também