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.