Partilhar via


Ponto de foco em Unity

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

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

Se você quiser definir o Ponto de Foco no Unity, ele precisa ser definido 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.

Nota

Por padrão, os novos projetos Unity têm a opção "Ativar compartilhamento de buffer de profundidade" definida. Com essa opção, um aplicativo Unity executado em um fone de ouvido imersivo ou HoloLens executando a Atualização de abril de 2018 do Windows 10 (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:

  • Em um fone de ouvido de mesa imersivo, isso permitirá 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 uma das abordagens deve fornecer uma qualidade de imagem ainda melhor sem o trabalho explícito do seu 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. Geralmente, você só deve especificar um ponto de foco manual quando seu aplicativo estiver sendo executado em um HoloLens que ainda não tenha sido atualizado para a Atualização de abril de 2018 do Windows 10.

Exemplo

Há muitas maneiras de definir o ponto de foco, como sugerido pelas sobrecargas disponíveis na função estática SetFocusPointForFrame . Apresentamos 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 atrás do usuário. Geralmente, recomendamos a configuração Ativar compartilhamento de buffer de profundidade em vez de especificar manualmente um ponto de foco.

Próximo ponto de verificação de desenvolvimento

Se você está seguindo a jornada de desenvolvimento Unity que estabelecemos, está no meio da exploração dos recursos e APIs da plataforma de Realidade Mista. A partir daqui, você pode continuar para o próximo tópico:

Ou vá diretamente para implantar seu aplicativo em um dispositivo ou emulador:

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

Consulte também