Portabilidad de aplicaciones de VR a Windows Mixed RealityPorting VR apps to Windows Mixed Reality

Windows 10 incluye compatibilidad con auriculares envolventes y holográficas.Windows 10 includes support for immersive and holographic headsets. Si ha creado contenido para otros dispositivos, como Oculus Rift o HTC Naopak, tienen dependencias en las bibliotecas que existen por encima de la API de plataforma del sistema operativo.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. La incorporación de aplicaciones de la aplicación existente de Win32 Unity a Windows Mixed Reality implica la redestinación del uso de los SDK de VR específicos del proveedor a las API de VR entre proveedores de 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 portabilidadPorting requirements

En un nivel alto, los siguientes pasos están relacionados con el traslado de contenido existente:At a high level, the following steps are involved in porting existing content:

  1. Asegúrese de que el equipo ejecuta Windows 10 Fall Creators Update (16299).Make sure your PC is running the Windows 10 Fall Creators Update (16299). Ya no se recomienda recibir compilaciones de vista previa del anillo de Insider SKIP Preview, ya que esas compilaciones no serán las más estables para el desarrollo de realidad mixta.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. Actualice a la versión más reciente de los gráficos o del motor de juegos.Upgrade to the latest version of your graphics or game engine. Los motores de juegos deberán admitir la versión 10.0.15063.0 del SDK de Windows 10 (Publicada en el 2017 de abril) o superior.Game engines will need to support the Windows 10 SDK version 10.0.15063.0 (released in April 2017) or higher.
  3. Actualice cualquier middleware, complemento o componente.Upgrade any middleware, plug-ins, or components. Si la aplicación contiene componentes, es una buena idea actualizar a la versión más reciente.If your app contains any components, it's a good idea to upgrade to the latest version.
  4. Quite las dependencias de los SDK duplicados.Remove dependencies on duplicate SDKs. En función del dispositivo al que se dirija el contenido, tendrá que quitar o compilar de forma condicional ese SDK para que pueda establecer como destino las API de Windows en su lugar.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. Un ejemplo de este escenario sería SteamVR.An example of this scenario would be SteamVR.
  5. Trabaje con problemas de compilación.Work through build issues. En este momento, el ejercicio de portabilidad es específico de la aplicación, el motor y las dependencias de componentes que tiene.At this point, the porting exercise is specific to your app, your engine, and the component dependencies you have.

Pasos de portabilidad comunesCommon porting steps

1. Asegúrese de que tiene el hardware de desarrollo correcto1. Make sure you have the right development hardware

En la página instalar las herramientas se muestra el hardware de desarrollo recomendado.The install the tools page lists the recommended development hardware.

2. actualizar al vuelo más reciente de Windows 102. Upgrade to the latest flight of Windows 10

La plataforma Windows Mixed Reality todavía está en desarrollo activo.The Windows Mixed Reality platform is still under active development. Se recomienda unirse al programa Windows Insider para tener acceso al vuelo "Windows Insider Fast".We recommend joining the Windows Insider Program to access the "Windows Insider Fast" flight.

  1. Instalación de Windows 10 Creators UpdateInstall the Windows 10 Creators Update
  2. Únase al programa Windows Insider.Join the Windows Insider Program.
  3. Habilitar el modo de desarrolladorEnable Developer Mode
  4. Cambiar a los vuelos rápidos de Windows Insider a través de la configuración > actualización & sección de seguridadSwitch to the Windows Insider Fast flights through Settings > Update & Security Section

3. actualizar a la compilación más reciente de Visual Studio3. Upgrade to the most recent build of Visual Studio

  • Si usa Visual Studio, actualice a la compilación más recienteIf you're using Visual Studio, then upgrade to the most recent build
  • Vea instalar la página de herramientas en Visual Studio 2019See Install the tools page under Visual Studio 2019

4. Elija el adaptador correcto4. Choose the correct Adapter

  • En sistemas como notebooks con dos GPU, el destino es el adaptador correcto.In systems like notebooks with two GPUs, target the correct adapter. Esto se aplica a las aplicaciones de Unity y de DirectX nativas donde se crea un ID3D11Device, ya sea de forma explícita o implícita (Media Foundation), para su funcionalidad.This applies to Unity and native DirectX apps where a ID3D11Device is created, either explicitly or implicitly (Media Foundation), for its functionality.

Guía de portabilidad de UnityUnity porting guidance

1. Revise los pasos de portabilidad más indicados anteriormente1. Review the common porting steps listed above

Revise los pasos comunes indicados anteriormente para asegurarse de que el entorno de desarrollo está configurado correctamente.Review the common steps listed above to make sure your development environment is set up correctly. En el paso #3, si usa Visual Studio, debe seleccionar la carga de trabajo desarrollo de juegos con Unity .In step #3, if you're using Visual Studio you should select the Game Development with Unity workload. Puede anular la selección del componente "Editor de Unity opcional", ya que va a instalar una versión más reciente de Unity en el paso siguiente.You may deselect the "Unity Editor optional" component since you'll be installing a newer version of Unity in the next step.

2. actualizar a la última compilación pública de Unity con compatibilidad con Windows MR2. Upgrade to the latest public build of Unity with Windows MR Support

  1. Descargue la última compilación pública recomendada de Unity con compatibilidad de realidad mixta.Download the latest recommended public build of Unity with mixed reality support.
  2. Guarde una copia del proyecto antes de empezar.Save a copy of your project before you get started
  3. Revise la documentación disponible en Unity en la actualización si el proyecto se compiló con una versión anterior de Unity.Review the documentation available from Unity on upgrading if your project was built on an older version of Unity.
  4. Siga las instrucciones del sitio de Unity para usar su actualizador de API automática.Follow the instructions on Unity's site for using their automatic API updater
  5. Compruebe si hay cambios adicionales que necesite realizar para que el proyecto se ejecute y, a continuación, trabaje con los errores y advertencias 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.

Nota

Si tiene un middleware del que depende, compruebe que está usando la versión más reciente (más información en el paso 3 a continuación).If you have middleware that you depend on, check that you're using the latest release (more details in step 3 below).

3. actualizar el middleware a las versiones más recientes3. Upgrade your middleware to the latest versions

Con cualquier actualización de Unity, existe la posibilidad de actualizar uno o más paquetes de middleware de los que depende su juego o aplicación.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. Además, al estar al día con el middleware más reciente, se aumenta la probabilidad de éxito a lo largo del resto del proceso de portabilidad.Additionally, being up to date with the latest middleware increases the likelihood of success throughout the rest of the porting process.

4. dirigir la aplicación para que se ejecute en Win324. Target your application to run on Win32

Desde dentro de la aplicación Unity:From inside your Unity application:

  • Vaya a archivo-> configuración de compilaciónNavigate to File -> Build Settings
  • Seleccione "PC, Mac, Linux independiente"Select "PC, Mac, Linux Standalone"
  • Establecer la plataforma de destino en "Windows"Set target platform to "Windows"
  • Establecer la arquitectura en "x86" seleccionar "cambiar plataforma"Set architecture to "x86" Select "Switch Platform"

Nota

Si la aplicación tiene dependencias en servicios específicos del dispositivo, como la realización de una coincidencia de vapor, deberá deshabilitarlos en este paso.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. Puede enlazar a los servicios equivalentes que Windows proporciona más adelante.You can hook up to the equivalent services that Windows provides later on.

5. configurar el hardware de Windows Mixed Reality5. Setup your Windows Mixed Reality hardware

  1. Revisión de los pasos de la configuración de auriculares inmersivoReview steps in Immersive headset setup
  2. Obtener información sobre cómo usar el simulador de realidad mixta de Windows y navegar por la Página principal de Windows Mixed RealityLearn about Using the Windows Mixed Reality simulator and Navigating the Windows Mixed Reality home

6. dirigir la aplicación para que se ejecute en Windows Mixed Reality6. Target your application to run on Windows Mixed Reality

  1. En primer lugar, debe quitar o compilar condicionalmente cualquier otra compatibilidad de biblioteca específica de un SDK de VR determinado.First, you must remove or conditionally compile out any other library support specific to a particular VR SDK. Esos activos cambian con frecuencia la configuración y las propiedades del proyecto de manera que sean incompatibles con otros SDK de VR, como Windows Mixed Reality.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 ejemplo, si el proyecto hace referencia al SDK de SteamVR, tendrá que actualizar el proyecto para usar en su lugar las API de VR comunes de Unity que admiten tanto Windows Mixed Reality como 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.
    • Pronto estarán disponibles los pasos específicos para excluir condicionalmente otros SDK de VR.Specific steps for conditionally excluding other VR SDKs are coming soon.
  2. En el proyecto de Unity, el destino es el SDK de Windows 10 .In your Unity project, target the Windows 10 SDK
  3. Para cada escena, Configure la cámara .For each scene, setup the camera

7. usar la fase para colocar contenido en el piso7. Use the stage to place content on the floor

Puede crear experiencias de realidad mixta en una amplia gama de escalas de experiencia.You can build Mixed Reality experiences across a wide range of experience scales.

Si va a migrar una experiencia de escalado de una instalación, debe asegurarse de que Unity está establecido en el tipo de espacio de seguimiento estacionario :If you're porting a seated-scale experience, you must ensure Unity is set to the Stationary tracking space type:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

En el código anterior se establece el sistema de coordenadas universal de Unity para realizar el seguimiento del marco estacionario de referencia.This above code sets Unity's world coordinate system to track the stationary frame of reference. En el modo de seguimiento estacional, el contenido colocado en el editor justo delante de la ubicación predeterminada de la cámara (el avance es-Z) aparece delante del usuario cuando se inicia la aplicación.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 recentrar el origen del usuario, puede llamar a la XR de Unity . Método InputTracking. recenter .To recenter the user's seated origin, you can call Unity's XR.InputTracking.Recenter method.

Si va a migrar una experiencia de escalado permanente o una experiencia a escala de habitación, colocará contenido en relación con el piso.If you're porting a standing-scale experience or room-scale experience, you'll be placing content relative to the floor. Por lo tanto, se trata del piso del usuario mediante la fase espacial, que representa el origen del nivel de suelo definido por el usuario y el límite de sala opcional, configurado durante la primera ejecución.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 estas experiencias, debe asegurarse de que Unity está establecido en el tipo de espacio de seguimiento de RoomScale .For these experiences, you must ensure Unity is set to the RoomScale tracking space type. Aunque RoomScale es el valor predeterminado, querrá establecerlo explícitamente y asegurarse de que se devuelve true para detectar situaciones en las que el usuario ha desplazado el equipo fuera del salón que han calibrado: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.
}

Una vez que la aplicación establece correctamente el tipo de espacio de seguimiento de RoomScale, el contenido colocado en el plano y = 0 aparecerá en el suelo.Once your app successfully sets the RoomScale tracking space type, content placed on the y=0 plane will appear on the floor. El origen en (0,0) será el lugar específico en el piso en el que se encuentra el usuario durante la configuración de la habitación, con-Z que representa la dirección de avance que estaban teniendo lugar durante la instalación.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.

En el código de script, puede llamar al método TryGetGeometry en el tipo UnityEngine. experimental. XR. Boundary para obtener un polígono de límite, especificando un tipo de límite 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. Si el usuario definía un límite (se obtiene una lista de vértices), es seguro ofrecer una experiencia de escalado a la habitación al usuario, donde puede recorrer la escena que cree.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.

El sistema representará automáticamente el límite cuando el usuario lo aproxime.The system will automatically render the boundary when the user approaches it. No es necesario que la aplicación use este polígono para representar el límite.Your app does not need to use this polygon to render the boundary itself.

Para obtener más información, consulte la página de los sistemas de coordenadas en Unity .For more information, see the Coordinate systems in Unity page.

Ejemplo de resultados:Example of results:

Ejemplo de resultados

El algoritmo se basa en un blog de Daniel Smilkov: el rectángulo más grande de un polígonoAlgorithm is based on a blog by Daniel Smilkov: Largest rectangle in a polygon

8. trabajar con el modelo de entrada8. Work through your input model

Cada juego o aplicación que tiene como destino un HMD existente tendrá un conjunto de entradas que controla, los tipos de entradas que necesita para la experiencia y las API específicas a las que llama para obtener esas 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. Hemos invertido en intentar que sea tan sencillo y sencillo como sea posible para aprovechar las ventajas de las entradas disponibles en 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.

Lea la Guía de portabilidad de entrada para Unity en la pestaña adyacente para obtener detalles sobre cómo Windows Mixed Reality expone la entrada y cómo se asigna a lo que la aplicación puede hacer hoy.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. pruebas y ajuste del rendimiento9. Performance testing and tuning

Windows Mixed Reality estará disponible en una amplia gama de dispositivos, que abarcan desde equipos de juegos de alta gama, hasta grandes equipos estándar 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. En función del mercado de destino, hay una diferencia significativa en los presupuestos de proceso y gráficos disponibles para la aplicación.Depending on what market you're targeting, there's a significant difference in the available compute and graphics budgets for your application. Durante este proceso de migración, es probable que se esté aprovechando un equipo Premium y que haya presupuestos de cálculo y gráficos significativos disponibles para la aplicación.During this porting exercise, you're likely leveraging a premium PC, and have had significant compute and graphics budgets available to your app. Si quiere que la aplicación esté disponible para un público más amplio, debe probar y generar el perfil de la aplicación en el hardware representativo quequiere usar como destino.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.

Tanto Unity como Visual Studio incluyen los generadores de rendimiento y las directrices de publicación de Microsoft e Intel sobre la optimización y la generación de perfiles de rendimiento.Both Unity and Visual Studio include performance profilers, and both Microsoft and Intel publish guidelines on performance profiling and optimization. Hay una explicación exhaustiva del rendimiento disponible al comprender el rendimiento de la realidad mixta.There's an extensive discussion of performance available at Understanding Performance for Mixed Reality. Además, hay detalles específicos para Unity en recomendaciones de rendimiento para Unity.Further, there are specific details for Unity under Performance Recommendations for Unity.

Instrucciones de portabilidad inrealUnreal porting guidance

Importante

Si usa controladores de HP reverberación G2, consulte este artículo para obtener instrucciones adicionales de asignación de entrada.If you're using HP Reverb G2 controllers, please refer to this article for additional input mapping instructions.

Consulte tambiénSee also