Implementación de iniciadores de aplicaciones 3D (aplicaciones para UWP)

Nota

Esta característica se agregó como parte de Fall Creators Update (RS3) de 2017 para cascos envolventes y es compatible con HoloLens con la actualización de abril de 2018 de Windows 10. Asegúrese de que la aplicación tiene como destino una versión de Windows SDK mayor o igual que 10.0.16299 en cascos envolventes y 10.0.17125 en HoloLens. Puede encontrar la versión más reciente de Windows SDK aquí.

El Windows Mixed Reality hogar es el punto de partida en el que los usuarios llegan antes de iniciar aplicaciones. Al crear una aplicación para UWP para Windows Mixed Reality, de forma predeterminada, las aplicaciones se inician como pizarras 2D con el logotipo de la aplicación. Al desarrollar experiencias para Windows Mixed Reality, se puede definir un iniciador 3D opcionalmente para invalidar el iniciador 2D predeterminado para la aplicación. En general, se recomiendan iniciadores 3D para iniciar aplicaciones envolventes que saquen a los usuarios de la Windows Mixed Reality casa. Se prefiere el iniciador 2D predeterminado cuando se activa la aplicación. También puedes crear un vínculo profundo 3D (secondaryTile) como iniciador 3D al contenido dentro de una aplicación para UWP 2D.

Proceso de creación del iniciador de aplicaciones 3D

Hay tres pasos para crear un iniciador de aplicaciones 3D:

  1. Diseño y concepto
  2. Modelado y exportación
  3. Integración en la aplicación (este artículo)

Los recursos 3D que se usarán como iniciadores de la aplicación deben crearse mediante las directrices de creación de Windows Mixed Reality para garantizar la compatibilidad. Los recursos que no cumplan esta especificación de creación no se representarán en el Windows Mixed Reality inicio.

Configuración del iniciador 3D

Cuando creas un nuevo proyecto en Visual Studio, se crea un icono predeterminado sencillo que muestra el nombre y el logotipo de la aplicación. Para reemplazar esta representación 2D por un modelo 3D personalizado, edite el manifiesto de aplicación de la aplicación para incluir el elemento "MixedRealityModel" como parte de la definición de icono predeterminada. Para revertir al iniciador 2D, simplemente quite la definición mixedRealityModel del manifiesto.

XML

En primer lugar, busque el manifiesto del paquete de aplicación en el proyecto actual. De forma predeterminada, el manifiesto se denominará Package.appxmanifest. Si usa Visual Studio, haga clic con el botón derecho en el manifiesto en el visor de soluciones y seleccione Ver código fuente para abrir el xml para editarlo.

En la parte superior del manifiesto, agregue el esquema uap5 e inclúyelo como un espacio de nombres ignorable:

<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         IgnorableNamespaces="uap uap2 uap5 mp"
         xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

A continuación, especifique "MixedRealityModel" en el icono predeterminado de la aplicación:

<Applications>
    <Application Id="App"
      Executable="$targetnametoken$.exe"
      EntryPoint="ExampleApp.App">
      <uap:VisualElements
        DisplayName="ExampleApp"
        Square150x150Logo="Assets\Logo.png"
        Square44x44Logo="Assets\SmallLogo.png"
        Description="ExampleApp"
        BackgroundColor="#464646">
        <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" >
          <uap5:MixedRealityModel Path="Assets\My3DTile.glb" />
        </uap:DefaultTile>
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
      </uap:VisualElements>
    </Application>
</Applications>

El elemento MixedRealityModel acepta una ruta de acceso de archivo que apunta a un recurso 3D almacenado en el paquete de la aplicación. Actualmente solo se admiten los modelos 3D entregados con el formato de archivo .glb y creados con las instrucciones de creación de recursos 3D Windows Mixed Reality. Los recursos deben almacenarse en el paquete de la aplicación y la animación no se admiten actualmente. Si el parámetro "Path" se deja en blanco Windows mostrará la pizarra 2D en lugar del iniciador 3D. Nota: el recurso .glb debe marcarse como "Contenido" en la configuración de compilación antes de compilar y ejecutar la aplicación.

Seleccione el archivo .glb en el explorador de soluciones y use la sección de propiedades para marcarla como
Seleccione el archivo .glb en el explorador de soluciones y use la sección de propiedades para marcarla como "Contenido" en la configuración de compilación.

Rectángulo de selección

Se puede usar un rectángulo de selección para agregar opcionalmente una región de búfer adicional alrededor del objeto. El rectángulo delimitador se especifica mediante un punto central y extensiones, que indican la distancia desde el centro del rectángulo delimitador hasta sus bordes a lo largo de cada eje. Las unidades del rectángulo de selección se pueden asignar a 1 unidad = 1 metro. Si no se proporciona un rectángulo de selección, uno se ajustará automáticamente a la malla del objeto. Si el rectángulo de límite proporcionado es menor que el modelo, se cambiará de tamaño para ajustarse a la malla.

La compatibilidad con el atributo de rectángulo de selección incluirá la actualización de Windows RS4 como una propiedad en el elemento MixedRealityModel. Para definir un rectángulo de selección primero en la parte superior del manifiesto de la aplicación, agregue el esquema uap6 e inclúyelo como espacios de nombres ignorables:

<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6"
         IgnorableNamespaces="uap uap2 uap5 uap6 mp"
         xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

A continuación, en MixedRealityModel, establezca la propiedad SpatialBoundingBox para definir el cuadro de límite:

        <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" >
          <uap5:MixedRealityModel Path="Assets\My3DTile.glb">
              <uap6:SpatialBoundingBox  Center=”1,-2,3” Extents=”1,2,3” />
          </uap5:MixedRealityModel>
        </uap:DefaultTile>

Con Unity

Al trabajar con Unity, el proyecto debe compilarse y abrirse en Visual Studio para poder editar el manifiesto de la aplicación.

Nota

El iniciador 3D debe volver a definirse en el manifiesto al compilar e implementar una nueva solución de Visual Studio desde Unity.

Nota

Esta característica se agregó como parte de fall Creators Update (RS3) de 2017 para cascos envolventes (VR) y como parte de la actualización de abril de 2018 (RS4) para HoloLens. Asegúrese de que la aplicación tiene como destino una versión de Windows SDK mayor o igual que 10.0.16299 en cascos envolventes (VR) y 10.0.17125 en HoloLens. Puede encontrar la versión más reciente de Windows SDK aquí.

Importante

Los vínculos profundos 3D (secondaryTiles) solo funcionan con aplicaciones para UWP 2D. Sin embargo, puedes crear un iniciador de aplicaciones 3D para iniciar una aplicación exclusiva desde la Windows Mixed Reality casa.

Las aplicaciones 2D se pueden mejorar para Windows Mixed Reality agregando la capacidad de colocar modelos 3D desde la aplicación en la Windows Mixed Reality inicio como vínculos profundos al contenido dentro de la aplicación 2D, al igual que los iconos secundarios 2D en el menú Inicio de Windows. Por ejemplo, puedes crear fotospheres de 360° que se vinculan directamente a una aplicación de visor de fotos de 360° o permitir que los usuarios coloquen contenido 3D desde una colección de activos que abra una página de detalles sobre el autor. Estas son solo un par de formas de expandir la funcionalidad de la aplicación 2D con contenido 3D.

Crear un elemento "secondaryTile" en 3D

Puede colocar contenido 3D desde la aplicación mediante "secondaryTiles" definiendo un modelo de realidad mixta en el momento de la creación. Los modelos de realidad mixta se crean haciendo referencia a un recurso 3D en el paquete de la aplicación y, opcionalmente, definiendo un rectángulo de selección.

Nota

Actualmente no se admite la creación de "secondaryTiles" desde una vista exclusiva.

using Windows.UI.StartScreen;
using Windows.Foundation.Numerics;
using Windows.Perception.Spatial;

// Initialize the tile
SecondaryTile tile = new SecondaryTile("myTileId")
{
    DisplayName = "My Tile",
    Arguments = "myArgs"
};

tile.VisualElements.Square150x150Logo = new Uri("ms-appx:///Assets/MyTile/Square150x150Logo.png");

//Assign 3D model (only ms-appx and ms-appdata are allowed)
TileMixedRealityModel model = tile.VisualElements.MixedRealityModel;
model.Uri = new Uri("ms-appx:///Assets/MyTile/MixedRealityModel.glb");
model.ActivationBehavior = TileMixedRealityModelActivationBehavior.Default;
model.BoundingBox = new SpatialBoundingBox
{
    Center = new Vector3 { X = 1, Y = 0, Z = 0 },
    Extents = new Vector3 { X = 3, Y = 5, Z = 4 }
};

// And place it
await tile.RequestCreateAsync();

Rectángulo de selección

Se puede usar un rectángulo de selección para agregar una región de búfer adicional alrededor del objeto. El rectángulo delimitador se especifica mediante un punto central y extensiones, que indican la distancia desde el centro del rectángulo delimitador hasta sus bordes a lo largo de cada eje. Las unidades del rectángulo de selección se pueden asignar a 1 unidad = 1 metro. Si no se proporciona un rectángulo de selección, uno se ajustará automáticamente a la malla del objeto . Si el rectángulo de límite proporcionado es menor que el modelo, se cambiará de tamaño para ajustarse a la malla.

Comportamiento de activación

Nota

Esta característica se admitirá a partir de la actualización de Windows RS4. Asegúrese de que la aplicación tiene como destino una versión de Windows SDK mayor o igual que 10.0.17125 si tiene previsto usar esta característica.

Puede definir el comportamiento de activación de un elemento secundario 3D para controlar cómo reacciona cuando un usuario lo selecciona. Se puede usar para colocar objetos 3D en el Mixed Reality hogar que son puramente informativos o decorativos. Se admiten los siguientes tipos de comportamiento de activación:

  1. Valor predeterminado: cuando un usuario selecciona el elemento secundario 3D, se activa la aplicación.
  2. Ninguno: cuando el usuario selecciona el elemento secundario 3D, no ocurre nada y la aplicación no está activada.

Obtención y actualización de un elemento "secondaryTile" existente

Los desarrolladores pueden obtener una lista de sus iconos secundarios existentes, que incluye las propiedades especificadas anteriormente. También pueden actualizar las propiedades cambiando el valor y, a continuación, llamando a UpdateAsync().

// Grab the existing secondary tile
SecondaryTile tile = (await SecondaryTile.FindAllAsync()).First();

Uri updatedUri = new Uri("ms-appdata:///local/MixedRealityUpdated.glb");

// See if the model needs updating
if (!tile.VisualElements.MixedRealityModel.Uri.Equals(updatedUri))
{
    // Update it
    tile.VisualElements.MixedRealityModel.Uri = updatedUri;

    // And apply the changes
    await tile.UpdateAsync();
}

Comprobación de que el usuario está en Windows Mixed Reality

Los vínculos profundos 3D (secondaryTiles) solo se pueden crear mientras la vista se muestra en un casco de Windows Mixed Reality. Cuando la vista no se presenta en un casco de Windows Mixed Reality, se recomienda controlarlo correctamente ocultando el punto de entrada o mostrando un mensaje de error. Para comprobarlo, consulte IsCurrentViewPresentedOnHolographic().

Notificaciones de icono

Actualmente, las notificaciones de icono no admiten el envío de una actualización con un recurso 3D. Esto significa que los desarrolladores no pueden hacer lo siguiente:

  • Notificaciones de inserción
  • Sondeo periódico
  • Notificaciones programadas

Para obtener más información sobre las otras características y atributos de iconos y cómo se usan para los iconos 2D, consulta la documentación iconos para aplicaciones para UWP.

Consulte también