Câmera no UnityCamera in Unity

Quando você gasta um headset de realidade misturada, ele se torna o centro do seu Holographic World.When you wear a mixed reality headset, it becomes the center of your holographic world. O componente da câmera do Unity manipulará automaticamente a renderização de estereoscópico e seguirá o movimento e a rotação da cabeça quando o seu projeto tiver "realidade virtual com suporte" selecionada com "realidade mista do Windows" como o dispositivo (na seção outras configurações das configurações do Windows Store Player).The Unity Camera component will automatically handle stereoscopic rendering and will follow your head movement and rotation when your project has "Virtual Reality Supported" selected with "Windows Mixed Reality" as the device (in the Other Settings section of the Windows Store Player Settings). Isso pode estar listado como "Windows Holographic" em versões mais antigas do Unity.This may be listed as "Windows Holographic" in older versions of Unity.

No entanto, para otimizar totalmente a qualidade visual e a estabilidade do holograma, você deve definir as configurações de câmera descritas abaixo.However, to fully optimize visual quality and hologram stability, you should set the camera settings described below.

Observação

Essas configurações precisam ser aplicadas à câmera em cada cena do seu aplicativo.These settings need to be applied to the Camera in each scene of your app.

Por padrão, quando você cria uma nova cena no Unity, ela conterá uma câmara de jogo principal na hierarquia que inclui o componente da câmera, mas não tem as configurações abaixo aplicadas corretamente.By default, when you create a new scene in Unity, it will contain a Main Camera GameObject in the Hierarchy which includes the Camera component, but does not have the settings below properly applied.

Configuração automática de cena e câmera com o kit de ferramentas de realidade misturada v2Automatic Scene and Camera Setup with Mixed Reality Toolkit v2

Siga o guia passo a passo para adicionar o kit de ferramentas de realidade misturada v2 ao seu projeto do Unity e ele configurará seu projeto automaticamente.Follow the step-by-step guide to add Mixed Reality Toolkit v2 to your Unity project and it will configure your project automatically.

Você também pode configurar manualmente o projeto sem MRTK com o guia na seção abaixo.You can also manually configure the project without MRTK with the guide in the section below.

Headsets de Holographic vs. imersivaHolographic vs. immersive headsets

As configurações padrão no componente câmera do Unity são para aplicativos 3D tradicionais que precisam de um plano de fundo Skybox, pois não têm um mundo real.The default settings on the Unity Camera component are for traditional 3D applications which need a skybox-like background as they don't have a real world.

  • Ao executar em um headset de imersão , você está renderizando tudo o que o usuário vê e, portanto, provavelmente desejará manter o Skybox.When running on an immersive headset, you are rendering everything the user sees, and so you'll likely want to keep the skybox.
  • No entanto, ao executar em um Headset Holographic como o HoloLens, o mundo real deve aparecer atrás de tudo que a câmera renderiza.However, when running on a holographic headset like HoloLens, the real world should appear behind everything the camera renders. Para fazer isso, defina o plano de fundo da câmera como transparente (no HoloLens, o preto é renderizado como transparente) em vez de uma textura Skybox:To do this, set the camera background to be transparent (in HoloLens, black renders as transparent) instead of a Skybox texture:
    1. Selecione a câmera principal no painel hierarquiaSelect the Main Camera in the Hierarchy panel
    2. No painel Inspetor, localize o componente câmera e altere a lista suspensa limpar sinalizadores de Skybox para cor sólidaIn the Inspector panel, find the Camera component and change the Clear Flags dropdown from Skybox to Solid Color
    3. Selecione o seletor de cor do plano de fundo e altere os valores de RGBA para (0, 0, 0, 0)Select the Background color picker and change the RGBA values to (0, 0, 0, 0)

Você pode usar o código de script para determinar em tempo de execução se o headset é imersiva ou Holographic verificando HolographicSettings. IsDisplayOpaque.You can use script code to determine at runtime whether the headset is immersive or holographic by checking HolographicSettings.IsDisplayOpaque.

Posicionando a câmeraPositioning the Camera

Será mais fácil definir o layout do seu aplicativo se você imaginar a posição inicial do usuário como (X: 0, Y: 0, Z: 0).It will be easier to lay out your app if you imagine the starting position of the user as (X: 0, Y: 0, Z: 0). Como a câmera principal está acompanhando a movimentação do cabeçalho do usuário, a posição inicial do usuário pode ser definida definindo a posição inicial da câmera principal.Since the Main Camera is tracking movement of the user's head, the starting position of the user can be set by setting the starting position of the Main Camera.

  1. Selecione a câmera principal no painel hierarquiaSelect Main Camera in the Hierarchy panel

  2. No painel Inspetor, localize o componente transformação e altere a posição de (X: 0, Y: 1, Z:-10) para (X: 0, Y: 0, Z: 0)In the Inspector panel, find the Transform component and change the Position from (X: 0, Y: 1, Z: -10) to (X: 0, Y: 0, Z: 0)

    câmera no painel inspetor no do UnityCamera in the Inspector pane in Unity
    Câmera no painel de Inspetor no UnityCamera in the Inspector pane in Unity

Planos de clipesClip planes

O processamento de conteúdo muito próximo ao usuário pode ser desconfortável em realidade misturada.Rendering content too close to the user can be uncomfortable in mixed reality. Você pode ajustar os planos de corte próximo e longe no componente da câmera.You can adjust the near and far clip planes on the Camera component.

  1. Selecione a câmera principal no painel hierarquiaSelect the Main Camera in the Hierarchy panel
  2. No painel Inspetor, localize os planos de recorte do componente da câmera e altere a caixa de texto próximo de 0,3 para. 85.In the Inspector panel, find the Camera component Clipping Planes and change the Near textbox from 0.3 to .85. O conteúdo renderizado ainda mais próximo pode levar ao usuário discomfort e deve ser evitado de acordo com as diretrizes de distância de renderização.Content rendered even closer can lead to user discomfort and should be avoided per the render distance guidelines.

Várias câmerasMultiple Cameras

Quando há vários componentes de câmera na cena, o Unity sabe qual câmera usar para a renderização estereoscópico e o rastreamento de cabeçalho verificando qual gameobject tem a marca MainCamera.When there are multiple Camera components in the scene, Unity knows which camera to use for stereoscopic rendering and head tracking by checking which GameObject has the MainCamera tag.

Recentralizando uma experiência em estaçãoRecentering a seated experience

Se você estiver criando uma experiência de escalaem posição, poderá recentralizar a origem mundial da unidade na posição de cabeçalho atual do usuário chamando o XR. Método InputTracking. recenter .If you're building a seated-scale experience, you can recenter Unity's world origin at the user's current head position by calling the XR.InputTracking.Recenter method.

Modos de ReprojeçãoReprojection modes

Os headsets de HoloLens e de imersão reprojetarão cada quadro que seu aplicativo renderiza para se ajustar para qualquer previsão incorreta da posição de cabeçalho real do usuário quando fótons são emitidos.Both HoloLens and immersive headsets will reproject each frame your app renders to adjust for any misprediction of the user's actual head position when photons are emitted.

Por padrão:By default:

  • Os headsets de imersão executarão a Reprojeção posicional, ajustando os hologramas para uma previsão incorreta na posição e na orientação, se o aplicativo fornecer um buffer de profundidade para um determinado quadro.Immersive headsets will perform positional reprojection, adjusting your holograms for misprediction in both position and orientation, if the app provides a depth buffer for a given frame. Se um buffer de profundidade não for fornecido, o sistema só corrigirá as informações incorretas na orientação.If a depth buffer is not provided, the system will only correct mispredictions in orientation.
  • Holographic headsets como HoloLens executarão a Reprojeção posicional se o aplicativo fornece seu buffer de profundidade ou não.Holographic headsets like HoloLens will perform positional reprojection whether the app provides its depth buffer or not. A Reprojeção posicional é possível sem buffers de profundidade no HoloLens, pois a renderização costuma ser esparsa com um plano de fundo estável fornecido pelo mundo real.Positional reprojection is possible without depth buffers on HoloLens as rendering is often sparse with a stable background provided by the real world.

Se você souber que está criando uma experiência somente de orientação com conteúdo com bloqueio de corpo rígido (por exemplo, conteúdo de vídeo de 360 graus), poderá definir explicitamente o modo de Reprojeção como somente orientação definindo HolographicSettings. reprojemode como HolographicReprojectionMode. OrientationOnly.If you know that you are building an orientation-only experience with rigidly body-locked content (e.g. 360-degree video content), you can explicitly set the reprojection mode to be orientation only by setting HolographicSettings.ReprojectionMode to HolographicReprojectionMode.OrientationOnly.

Compartilhando buffers de profundidade com o WindowsSharing your depth buffers with Windows

Compartilhar o buffer de profundidade do seu aplicativo para o Windows cada quadro dará ao seu aplicativo um dos dois aumentos na estabilidade do holograma, com base no tipo de headset que você está renderizando:Sharing your app's depth buffer to Windows each frame will give your app one of two boosts in hologram stability, based on the type of headset you're rendering for:

  • Os headsets de imersão podem executar a Reprojeção posicional quando um buffer de profundidade é fornecido, ajustando os hologramas para uma previsão incorreta na posição e na orientação.Immersive headsets can perform positional reprojection when a depth buffer is provided, adjusting your holograms for misprediction in both position and orientation.
  • Os headsets Holographic têm alguns métodos diferentes.Holographic headsets have a few different methods. O HoloLens 1 selecionará automaticamente um ponto de foco quando um buffer de profundidade for fornecido, otimizando a estabilidade do holograma ao longo do plano que intercepta a maior parte do conteúdo.HoloLens 1 will automatically select a focus point when a depth buffer is provided, optimizing hologram stability along the plane that intersects the most content. O HoloLens 2 irá estabilizar o conteúdo usando LSR de profundidade (consulte comentários).HoloLens 2 will stabilize content using Depth LSR (see Remarks).

Para definir se seu aplicativo de Unity fornecerá um buffer de profundidade para o Windows:To set whether your Unity app will provide a depth buffer to Windows:

  1. Vá para Editar configurações de projeto > > Player > plataforma universal do Windows guia > XR Settings.Go to Edit > Project Settings > Player > Universal Windows Platform tab > XR Settings.
  2. Expanda o item Windows Mixed Reality SDK .Expand the Windows Mixed Reality SDK item.
  3. Marque ou desmarque a caixa de seleção Habilitar compartilhamento de buffer de profundidade .Check or uncheck the Enable Depth Buffer Sharing check box. Isso será verificado por padrão em novos projetos criados, pois esse recurso foi adicionado ao Unity e será desmarcado por padrão para projetos mais antigos que foram atualizados.This will be checked by default in new projects created since this feature was added to Unity and will be unchecked by default for older projects that were upgraded.

Fornecer um buffer de profundidade para o Windows pode melhorar a qualidade visual desde que o Windows possa mapear com precisão os valores de profundidade por pixel normalizados em seu buffer de profundidade de volta para distâncias em metros, usando os planos próximos e distantes que você definiu no Unity na câmera principal.Providing a depth buffer to Windows can improve visual quality so long as Windows can accurately map the normalized per-pixel depth values in your depth buffer back to distances in meters, using the near and far planes you've set in Unity on the main camera. Se a renderização passar a lidar com valores de profundidade de maneiras típicas, geralmente você deve estar bom aqui, embora o processamento translúcida passe na gravação para o buffer de profundidade durante a exibição para pixels de cor existentes pode confundir a Reprojeção.If your render passes handle depth values in typical ways, you should generally be fine here, though translucent render passes that write to the depth buffer while showing through to existing color pixels can confuse the reprojection. Se você souber que os seus passos de renderização deixarão muitos dos seus pixels de profundidade final com valores de profundidade imprecisos, você provavelmente obterá uma melhor qualidade visual desmarcando "Habilitar compartilhamento de buffer de profundidade".If you know that your render passes will leave many of your final depth pixels with inaccurate depth values, you are likely to get better visual quality by unchecking "Enable Depth Buffer Sharing".

Consulte tambémSee also