Portabilidade dos aplicativos de VR para o Windows Mixed RealityPorting VR apps to Windows Mixed Reality

O Windows 10 inclui suporte para headsets de imersão e Holographic.Windows 10 includes support for immersive and holographic headsets. Se você tiver criado conteúdo para outros dispositivos como o Oculus Rift ou o HTC Naopak, eles têm dependências em bibliotecas que existem acima da API de plataforma do sistema operacional.If you've built content for other devices like the Oculus Rift or HTC Vive, they have dependencies on libraries that exist above the operating system's platform API. A disponibilização de aplicativos existentes do Win32 Unity VR para a realidade mista do Windows envolve o redirecionamento do uso de SDKs de VR específicos do fornecedor para as APIs VR entre fornecedores do Unity.Bringing existing Win32 Unity VR apps over to Windows Mixed Reality involves retargeting usage of vendor-specific VR SDKs to Unity's cross-vendor VR APIs.

Requisitos de portabilidadePorting requirements

Em um alto nível, as etapas a seguir estão envolvidas na portabilidade de conteúdo existente:At a high level, the following steps are involved in porting existing content:

  1. Verifique se o PC está executando a atualização dos criadores de outono do Windows 10 (16299).Make sure your PC is running the Windows 10 Fall Creators Update (16299). Não é mais recomendável receber compilações prévias do anel do insider skip ahead, pois essas compilações não serão as mais estáveis para o desenvolvimento de realidade misturada.We no longer recommend receiving preview builds from the Insider Skip Ahead ring, as those builds won't be the most stable for mixed reality development.
  2. Atualize para a versão mais recente do seu mecanismo de gráficos ou jogos.Upgrade to the latest version of your graphics or game engine. Os mecanismos de jogo precisarão dar suporte à versão 10.0.15063.0 do SDK do Windows 10 (lançado em abril de 2017) ou superior.Game engines will need to support the Windows 10 SDK version 10.0.15063.0 (released in April 2017) or higher.
  3. Atualize qualquer middleware, plug-ins ou componentes.Upgrade any middleware, plug-ins, or components. Se seu aplicativo contiver qualquer componente, é uma boa ideia atualizar para a versão mais recente.If your app contains any components, it's a good idea to upgrade to the latest version.
  4. Remova dependências em SDKs duplicados.Remove dependencies on duplicate SDKs. Dependendo de qual dispositivo seu conteúdo foi direcionado, você precisará remover ou compilar condicionalmente esse SDK para que você possa direcionar as APIs do Windows.Depending on which device your content was targeting, you'll need to remove or conditionally compile out that SDK so you can target the Windows APIs instead. Um exemplo desse cenário seria SteamVR.An example of this scenario would be SteamVR.
  5. Trabalhe com problemas de compilação.Work through build issues. Neste ponto, o exercício de portabilidade é específico para seu aplicativo, seu mecanismo e as dependências de componente que você tem.At this point, the porting exercise is specific to your app, your engine, and the component dependencies you have.

Etapas de portabilidade comunsCommon porting steps

1. Verifique se você tem o hardware de desenvolvimento correto1. Make sure you have the right development hardware

A página instalar as ferramentas lista o hardware de desenvolvimento recomendado.The install the tools page lists the recommended development hardware.

2. atualizar para o vôo mais recente do Windows 102. Upgrade to the latest flight of Windows 10

A plataforma Windows Mixed Reality ainda está em desenvolvimento ativo.The Windows Mixed Reality platform is still under active development. Recomendamos que você ingresse no programa Windows Insider para acessar o vôo "Windows Insider Fast".We recommend joining the Windows Insider Program to access the "Windows Insider Fast" flight.

  1. Instalar a atualização do Windows 10 para criadoresInstall the Windows 10 Creators Update
  2. Junte -se ao programa Windows Insider.Join the Windows Insider Program.
  3. Habilitar modo de desenvolvedorEnable Developer Mode
  4. Alterne para o Fast do Windows Insider por meio das configurações > seção atualização & segurançaSwitch to the Windows Insider Fast flights through Settings > Update & Security Section

3. atualizar para a compilação mais recente do Visual Studio3. Upgrade to the most recent build of Visual Studio

  • Se você estiver usando o Visual Studio, atualize para a compilação mais recenteIf you're using Visual Studio, then upgrade to the most recent build
  • Consulte instalar a página de ferramentas no Visual Studio 2019See Install the tools page under Visual Studio 2019

4. escolha o adaptador correto4. Choose the correct Adapter

  • Em sistemas como notebooks com duas GPUs, direcione o adaptador correto.In systems like notebooks with two GPUs, target the correct adapter. Isso se aplica aos aplicativos do Unity e do DirectX nativo, em que um ID3D11Device é criado, explícita ou implicitamente (Media Foundation), para sua funcionalidade.This applies to Unity and native DirectX apps where a ID3D11Device is created, either explicitly or implicitly (Media Foundation), for its functionality.

Diretrizes de portabilidade do UnityUnity porting guidance

1. Examine as etapas de portabilidade comuns listadas acima1. Review the common porting steps listed above

Examine as etapas comuns listadas acima para verificar se o ambiente de desenvolvimento está configurado corretamente.Review the common steps listed above to make sure your development environment is set up correctly. Na etapa #3, se você estiver usando o Visual Studio, deverá selecionar o desenvolvimento do jogo com a carga de trabalho do Unity.In step #3, if you're using Visual Studio you should select the Game Development with Unity workload. Você pode cancelar a seleção do componente "editor do Unity opcional", já que você instalará uma versão mais recente do Unity na próxima etapa.You may deselect the "Unity Editor optional" component since you'll be installing a newer version of Unity in the next step.

2. atualize para a compilação pública mais recente do Unity com o suporte do Windows Sr2. Upgrade to the latest public build of Unity with Windows MR Support

  1. Baixe a compilação pública mais recente recomendada do Unity com suporte misto à realidade.Download the latest recommended public build of Unity with mixed reality support.
  2. Salve uma cópia do seu projeto antes de começarSave a copy of your project before you get started
  3. Examine a documentação disponível no Unity em atualizando se seu projeto foi criado em uma versão mais antiga do Unity.Review the documentation available from Unity on upgrading if your project was built on an older version of Unity.
  4. Siga as instruções no site do Unity para usar o atualizador automático de APIFollow the instructions on Unity's site for using their automatic API updater
  5. Verifique e veja se há alterações adicionais que você precisa fazer para que seu projeto seja executado e trabalhe com quaisquer erros e avisos restantes.Check and see if there are additional changes that you need to make to get your project running, and work through any remaining errors and warnings.

Observação

Se você tiver um middleware do qual depende, verifique se está usando a versão mais recente (mais detalhes na etapa 3 abaixo).If you have middleware that you depend on, check that you're using the latest release (more details in step 3 below).

3. atualize seu middleware para as versões mais recentes3. Upgrade your middleware to the latest versions

Com qualquer atualização do Unity, há uma boa chance de que você precise atualizar um ou mais pacotes de middleware dos quais seu jogo ou aplicativo depende.With any Unity update, there's a good chance that you'll need to update one or more middleware packages that your game or application depends on. Além disso, estar atualizado com o middleware mais recente aumenta a probabilidade de sucesso ao longo do restante do processo de portabilidade.Additionally, being up to date with the latest middleware increases the likelihood of success throughout the rest of the porting process.

4. Direcione seu aplicativo para ser executado no Win324. Target your application to run on Win32

De dentro de seu aplicativo de Unity:From inside your Unity application:

  • Navegue até arquivo-> configurações de compilaçãoNavigate to File -> Build Settings
  • Selecione "PC, Mac, Linux autônomo"Select "PC, Mac, Linux Standalone"
  • Definir plataforma de destino como "Windows"Set target platform to "Windows"
  • Defina a arquitetura como "x86" selecione "alternar plataforma"Set architecture to "x86" Select "Switch Platform"

Observação

Se seu aplicativo tiver quaisquer dependências de serviços específicos do dispositivo, como a realização de correspondência do fluxo, você precisará desabilitá-los nesta etapa.If your application has any dependencies on device-specific services, such as match making from Steam, you'll need to disable them at this step. Você pode conectar-se aos serviços equivalentes que o Windows fornece posteriormente.You can hook up to the equivalent services that Windows provides later on.

5. configurar o hardware do Windows Mixed Reality5. Setup your Windows Mixed Reality hardware

  1. Examinar as etapas na configuração do headset de imersãoReview steps in Immersive headset setup
  2. Saiba como usar o simulador de realidade do Windows Mixed e navegar na página inicial do Windows Mixed RealityLearn about Using the Windows Mixed Reality simulator and Navigating the Windows Mixed Reality home

6. Direcione seu aplicativo para ser executado no Windows Mixed Reality6. Target your application to run on Windows Mixed Reality

  1. Primeiro, você deve remover ou compilar condicionalmente qualquer outro suporte de biblioteca específico para um determinado SDK do VR.First, you must remove or conditionally compile out any other library support specific to a particular VR SDK. Esses ativos freqüentemente alteram as configurações e propriedades em seu projeto de maneiras incompatíveis com outros SDKs de VR, como a realidade mista do Windows.Those assets frequently change settings and properties on your project in ways that are incompatible with other VR SDKs, such as Windows Mixed Reality.
    • Por exemplo, se o seu projeto fizer referência ao SDK do SteamVR, você precisará atualizar seu projeto para usar as APIs comuns de VR do Unity que dão suporte tanto ao Windows Mixed Reality quanto ao SteamVR.For example, if your project references the SteamVR SDK, you'll need to update your project to instead use Unity's common VR APIs that support both Windows Mixed Reality and SteamVR.
    • Etapas específicas para excluir condicionalmente outros SDKs de VR serão disponibilizadas em breve.Specific steps for conditionally excluding other VR SDKs are coming soon.
  2. Em seu projeto do Unity, direcione o SDK do Windows 10In your Unity project, target the Windows 10 SDK
  3. Para cada cena, Configure a câmeraFor each scene, setup the camera

7. Use o estágio para posicionar o conteúdo no chão7. Use the stage to place content on the floor

Você pode criar experiências de realidade misturadas em uma ampla variedade de escalas de experiência.You can build Mixed Reality experiences across a wide range of experience scales.

Se você estiver portando uma experiência de escala em posição, deverá garantir que o Unity esteja definido para o tipo de espaço de rastreamento estacionário :If you're porting a seated-scale experience, you must ensure Unity is set to the Stationary tracking space type:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

Este código acima define o sistema de coordenadas mundiais do Unity para acompanhar o quadro de referência estacionário.This above code sets Unity's world coordinate system to track the stationary frame of reference. No modo de rastreamento estacionário, o conteúdo colocado no editor apenas na frente do local padrão da câmera (Forward is-Z) aparece na frente do usuário quando o aplicativo é iniciado.In the Stationary tracking mode, content placed in the editor just in front of the camera's default location (forward is -Z) appears in front of the user when the app launches. Para recentralizar a origem colocada do usuário, você pode chamar o XR da Unity . Método InputTracking. recenter .To recenter the user's seated origin, you can call Unity's XR.InputTracking.Recenter method.

Se você estiver portando uma experiência de escala em pé ou uma experiência em escala de sala, colocará o conteúdo em relação ao chão.If you're porting a standing-scale experience or room-scale experience, you'll be placing content relative to the floor. Você se deparar com o andar do usuário usando o estágio espacial, que representa a origem definida do nível de chão do usuário e o limite de sala opcional, configurado durante a primeira execução.You reason about the user's floor using the spatial stage, which represents the user's defined floor-level origin and optional room boundary, set up during first run. Para essas experiências, você deve garantir que o Unity esteja definido como o tipo de espaço de rastreamento RoomScale .For these experiences, you must ensure Unity is set to the RoomScale tracking space type. Embora RoomScale seja o padrão, você desejará defini-lo explicitamente e garantir que você se torne verdadeiro, para detectar situações em que o usuário moveu o computador para fora da sala que eles calibraram:While RoomScale is the default, you'll want to set it explicitly and ensure you get back true, to catch situations where the user has moved their computer away from the room they calibrated:

if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
    // RoomScale mode was set successfully.  App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
    // RoomScale mode was not set successfully.  App cannot make assumptions about where the floor plane is.
}

Depois que o aplicativo definir o tipo de espaço de acompanhamento RoomScale com êxito, o conteúdo colocado no plano y = 0 aparecerá no chão.Once your app successfully sets the RoomScale tracking space type, content placed on the y=0 plane will appear on the floor. A origem em (0, 0) será o local específico no andar em que o usuário se baseou durante a configuração da sala, com-Z representando a direção de encaminhamento que ele estava enfrentando durante a instalação.The origin at (0, 0, 0) will be the specific place on the floor where the user stood during room setup, with -Z representing the forward direction they were facing during setup.

No código de script, você pode chamar o método TryGetGeometry em você é o tipo UnityEngine. experimental. XR. limite para obter um polígono de limite, especificando um tipo de limite de TrackedArea.In script code, you can then call the TryGetGeometry method on you're the UnityEngine.Experimental.XR.Boundary type to get a boundary polygon, specifying a boundary type of TrackedArea. Se o usuário definiu um limite (você obtém uma lista de vértices), é seguro fornecer uma experiência de escala de sala ao usuário, na qual eles podem percorrer a cena que você criar.If the user defined a boundary (you get back a list of vertices), it's safe to deliver a room-scale experience to the user, where they can walk around the scene you create.

O sistema irá renderizar automaticamente o limite quando o usuário o aproximar.The system will automatically render the boundary when the user approaches it. Seu aplicativo não precisa usar este polígono para renderizar o limite em si.Your app does not need to use this polygon to render the boundary itself.

Para obter mais informações, consulte a página coordenar sistemas no Unity .For more information, see the Coordinate systems in Unity page.

Exemplo de resultados:Example of results:

Exemplo de resultados

O algoritmo se baseia em um blog por Daniel Smilkov: retângulo maior em um polígonoAlgorithm is based on a blog by Daniel Smilkov: Largest rectangle in a polygon

8. trabalhar com seu modelo de entrada8. Work through your input model

Cada jogo ou aplicativo direcionado a um HMD existente terá um conjunto de entradas que ele manipula, tipos de entradas que ele precisa para a experiência e APIs específicas que ele chama para obter essas entradas.Each game or application targeting an existing HMD will have a set of inputs that it handles, types of inputs that it needs for the experience, and specific APIs that it calls to get those inputs. Investimos na tentativa de torná-lo tão simples e direto possível de aproveitar as informações disponíveis no Windows Mixed Reality.We've invested in trying to make it as simple and straightforward as possible to take advantage of the inputs available in Windows Mixed Reality.

Leia o Guia de porta de entrada para o Unity na guia adjacente para obter detalhes sobre como a realidade mista do Windows expõe a entrada e como isso é mapeado para o que seu aplicativo pode fazer hoje.Read through the input porting guide for Unity in the adjacent tab for details of how Windows Mixed Reality exposes input, and how that maps to what your application may do today.

9. testes e ajustes de desempenho9. Performance testing and tuning

A realidade mista do Windows estará disponível em uma ampla classe de dispositivos, desde PCs de jogos de ponta, até os principais PCs de mercado.Windows Mixed Reality will be available on a broad class of devices, ranging from high end gaming PCs, down to broad market mainstream PCs. Dependendo do mercado que você está direcionando, há uma diferença significativa nos orçamentos de computação e gráficos disponíveis para seu aplicativo.Depending on what market you're targeting, there's a significant difference in the available compute and graphics budgets for your application. Durante esse exercício de portabilidade, você provavelmente está aproveitando um PC Premium e teve orçamentos de computação e gráficos significativos disponíveis para seu aplicativo.During this porting exercise, you're likely leveraging a premium PC, and have had significant compute and graphics budgets available to your app. Se desejar disponibilizar seu aplicativo para um público mais amplo, você deverá testar e criar o perfil de seu aplicativo no hardware representativo que deseja direcionar.If you wish to make your app available to a broader audience, you should test and profile your app on the representative hardware that you wish to target.

O Unity e o Visual Studio incluem os infileres de desempenho e as diretrizes de publicação da Microsoft e da Intel sobre a criação de perfil de desempenho e otimização.Both Unity and Visual Studio include performance profilers, and both Microsoft and Intel publish guidelines on performance profiling and optimization. Há uma ampla discussão sobre o desempenho disponível em noções básicas sobre o desempenho para realidade misturada.There's an extensive discussion of performance available at Understanding Performance for Mixed Reality. Além disso, há detalhes específicos para o Unity em recomendações de desempenho para o Unity.Further, there are specific details for Unity under Performance Recommendations for Unity.

Diretrizes de portabilidade inrealUnreal porting guidance

Importante

Se você estiver usando os controladores de reverberação do HP, consulte Este artigo para obter instruções adicionais de mapeamento de entrada.If you're using HP Reverb G2 controllers, please refer to this article for additional input mapping instructions.

Confira tambémSee also