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.