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á a rotação e o movimento da cabeça.The Unity Camera component will automatically handle stereoscopic rendering and follow your head movement and rotation. 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.

InstalaçãoSetup

  1. Ir para outra seção de configurações das configurações do Windows Store PlayerGo to Other Settings section of the Windows Store Player Settings
  2. Escolha a realidade mista do Windows como o dispositivo, que pode ser listado como Holographic do Windows em versões mais antigas do UnityChoose Windows Mixed Reality as the device, which may be listed as Windows Holographic in older versions of Unity
  3. Selecione a realidade virtual com suporteSelect Virtual Reality Supported

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.

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're 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. Defina o plano de fundo da câmera como transparente (no HoloLens, o preto é renderizado como transparente) em vez de uma textura Skybox: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 de Inspetor no 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 0,85.In the Inspector panel, find the Camera component Clipping Planes and change the Near textbox from 0.3 to 0.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 controle de cabeçalho com base em 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 based on 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:

  • Headsets de imersão cuidarão da Reprojeção posicional se o aplicativo fornecer um buffer de profundidade para um determinado quadro.Immersive headsets will take care of positional reprojection if the app provides a depth buffer for a given frame. Os headsets de imersão também ajustarão os hologramas para uma previsão incorreta na posição e na orientação.Immersive headsets will also adjust your holograms for misprediction in both position and orientation. Se um buffer de profundidade não for fornecido, o sistema corrigirá apenas as previsões incorretas na orientação.If a depth buffer isn't provided, the system will only correct mispredictions in orientation.
  • Holographic headsets como o HoloLens cuidarão da Reprojeção posicional se o aplicativo fornece seu buffer de profundidade ou não.Holographic headsets like HoloLens will take care of 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 orientação apenas definindo HolographicSettings. reprojemode como HolographicReprojectionMode. OrientationOnly.If you know that you're building an orientation-only experience with rigidly body-locked content (for example, 360-degree video content), you can explicitly set the reprojection mode to 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 cuidar da 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 take care of 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 do projeto > Player > plataforma universal do Windows guia > configurações do XR.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. Habilitar o compartilhamento de buffer de profundidade é verificado por padrão em novos projetos, pois esse recurso foi adicionado ao Unity e será desmarcado por padrão para projetos mais antigos que foram atualizados.Enable Depth Buffer Sharing is checked by default in new projects, since this feature was added to Unity and will be unchecked by default for older projects that were upgraded.

Um buffer de profundidade pode melhorar a qualidade visual desde que o Windows possa mapear com precisão os valores de profundidade por pixel normalizados no 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.A depth buffer 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".

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

Siga o guia passo a passo para adicionar o kit de ferramentas de realidade misturada ao seu projeto do Unity e ele configurará seu projeto automaticamente.Follow the step-by-step guide to add Mixed Reality Toolkit 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.

Próximo ponto de verificação de desenvolvimentoNext Development Checkpoint

Se você estiver seguindo a jornada de desenvolvimento do Unity que apresentamos, você está no meio da exploração dos blocos de construção do MRTK Core.If you're following the Unity development journey we've laid out, you're in the midst of exploring the MRTK core building blocks. Deste ponto, você pode prosseguir para o próximo bloco de construção:From here, you can continue to the next building block:

Ou vá diretamente para as funcionalidades e APIs da plataforma de Realidade Misturada:Or jump to Mixed Reality platform capabilities and APIs:

Você sempre pode voltar para os pontos de verificação de desenvolvimento do Unity a qualquer momento.You can always go back to the Unity development checkpoints at any time.

Confira tambémSee also