Cómo usar las capacidades de EasyAR en Apple Vision Pro
Esta guia le acompana en la configuracion de proyectos Unity y Xcode para desbloquear todas las capacidades principales de EasyAR en aplicaciones Apple Vision Pro, incluida la localizacion en la nube Mega.
Antes de empezar
- Aprenda como usar los ejemplos de headset
- Asegurese de que el entorno de desarrollo cumpla estos requisitos:
- visionOS 2.0 o superior
- Xcode 16.0 o superior correspondiente a la version de visionOS, con visionOS simulator instalado
- Version recomendada de Unity: version LTS superior a 6000.0.23
Solicitar a Apple Inc. permiso para API empresariales
Como obtener imagenes de camara y parametros en Apple Vision Pro es una API empresarial que requiere entitlement, debe solicitar a Apple Inc. un archivo license que contenga ese entitlement. Para solicitar y usar esta license, consulte Building spatial experiences for business apps with enterprise APIs for visionOS.
Importante
El Bundle ID del entitlement obtenido de Apple Inc. debe coincidir exactamente con el rellenado al crear la EasyAR Sense License Key.
Como elegir visionOS App Mode
Las apps que se ejecutan en visionOS solo pueden obtener datos de ARKit bajo Immersive Space. Para apps empaquetadas desde el editor Unity, bajo Immersive Space debe elegirse RealityKit with PolySpatial o Metal Rendering with Compositor Services segun el flujo de renderizado y las API.
Para la definicion de Immersive Space, consulte la documentacion oficial de Apple.
Para una introduccion detallada de Unity App Mode, consulte visionOS Platform Overview en la documentacion de Unity PolySpatial.
Consejo
Recomendacion para elegir App Mode
Primera recomendacion: RealityKit with PolySpatial
Si es la primera vez que trabaja con visionOS, se recomienda elegir primero este modo. Su ventaja es que se integra profundamente con las caracteristicas de renderizado del sistema de visionOS, con alta estabilidad y buen efecto de renderizado. Este modo no admite shaders de codigo personalizado (HLSL/ShaderLab); debe usarse Shader Graph, y solo admite caracteristicas que pasen la comprobacion de compatibilidad de PolySpatial (se convertiran a MaterialX).
Los shaders integrados de Unity
Standard (Built-in)yLit (URP)ya estan adaptados oficialmente y pueden usarse directamente.Avanzado/necesidades especificas: Metal Rendering with Compositor Services
Adecuado para proyectos complejos con muchos assets 3D existentes que migrar o que deban usar shaders personalizados. En este modo Unity es responsable de toda la logica de renderizado y evita la canalizacion RealityKit del sistema, por lo que el efecto de renderizado suele ser inferior a RealityKit y pueden aparecer problemas de renderizado imprevisibles.
Recomendacion de integracion con EasyAR:
Al intentar integrar EasyAR, asegurese de ejecutar primero el flujo basico con el modo RealityKit with PolySpatial. Esto permite aislar variables de forma eficaz y evitar que los problemas de adaptacion de bajo nivel de Metal se mezclen con problemas relacionados con AR, lo que dificultaria localizar la causa del fallo.
Configuracion en el proyecto Unity
Debe realizar las siguientes configuraciones en el proyecto Unity:
Importar los Package necesarios para el proyecto Unity
Unity 6 (recomendado):
com.unity.xr.visionos(2.0.4+)com.unity.polyspatial(2.0.4+)com.unity.polyspatial.visionos(2.0.4+)
Importante
Los numeros de version de todos los Package deben mantenerse estrictamente iguales.
Se recomienda usar Unity 6 primero. Algunas versiones tempranas de Unity 2023.x aun no admiten visionOS.
Unity 2022.3:
com.unity.xr.visionos(1.2.3)com.unity.polyspatial(1.2.3)com.unity.polyspatial.visionos(1.2.3)
Importante
Los numeros de version de todos los Package deben mantenerse estrictamente iguales.
La version 1.3.x no esta admitida; asegurese de bloquear en 1.2.3.
Seleccionar Build Platform
Haga clic en File > Build Profiles en la barra de menus y cambie Platform a visionOS.

Configurar Input System
Asegurese de usar el nuevo Input System Package:
Haga clic en Edit > Project Settings > Player en la barra de menus y establezca el campo Active Input Handling en Input System Package(New).
Despues de esto, Unity puede pedir reiniciar el proyecto. Haga clic en Apply para que los cambios surtan efecto.

Configurar XR Plug-in Management
Haga clic en Edit > Project Settings > XR Plug-in Management en la barra de menus, y en la pestana visionOS marque Apple visionOS en Plug-in Providers.

Configurar el plugin Apple visionOS
Haga clic en Edit > Project Settings > XR Plug-in Management > Apple visionOS en la barra de menus.
Elija el App Mode adecuado segun la introduccion anterior.

Nota
El modo Windowed no puede usar capacidades AR porque no se ejecuta en Immersive Space.
El modo Hybrid significa que el desarrollador debe cambiar manualmente entre los modos Metal y RealityKit. Como su uso es relativamente complejo, no se recomienda. Para detalles, consulte la explicacion oficial de Unity sobre este modo.
A continuacion, en la misma pagina realice las siguientes modificaciones:
Agregue una descripcion en el campo World Sensing Usage Description.
Establezca Metal Immersion Style en Mixed.
Establezca Reality Kit Immersion Style en Mixed.
Marque IL2CPP Large Exe Workaround.

[Solo modo RealityKit] Importar TextMesh Pro Essentials
Haga clic en Edit > Project Settings > TextMesh Pro > Import TMP Essentials en la barra de menus.

Nota
Actualmente el modo RealityKit with PolySpatial solo admite texto TextMesh Pro. Si no se importa, el texto no se podra renderizar.
[Solo modo RealityKit] Configuracion relacionada con PolySpatial
Haga clic en Edit > Project Settings > PolySpatial en la barra de menus y realice las siguientes modificaciones en esta pagina:
Establezca Default Volume Camera Window Config en
Default Unbounded Configuration.Marque Auto-Create Volume Camera

Si necesita especificar otro Default Volume Camera Window Config, debe asegurarse de que su Mode sea Unbounded.

Si existe Volume Camera en la escena, eliminela.

Advertencia
- No se admite un
Volume Cameracuyo valor deWorld Transformno seaidentity. - Si por motivos especiales necesita agregar a la escena un
Volume Camerapersonalizado y unico, asegurese de:- Establecer su
World Transformenidentity. - Asegurarse de que el
Modede suVolume Camera Window ConfigurationseaUnbounded. - Usarlo solo si comprende completamente su significado y uso en la documentacion oficial de Unity.
- Establecer su
[Al usar Mega] Agregar Location Usage Description
Precaución
Si habilita el permiso Location en la configuracion de EasyAR (al usar la funcion Mega), debe agregar una descripcion de permiso; de lo contrario, el Build fallara.
Como actualmente el campo Location Usage Description no se muestra en la pestana Project Settings > Player > visionOS de Unity, configurelo siguiendo estos pasos:
- Cambiar temporalmente la pestana de plataforma: cambie la pestana a iOS.
- Rellenar la descripcion: rellene el campo Location Usage Description con una descripcion necesaria del uso del permiso.
- Volver a visionOS: cambie la pestana de vuelta a visionOS; la configuracion que acaba de rellenar se conservara y surtira efecto automaticamente.

Configuracion en el proyecto Xcode
Debe realizar las siguientes configuraciones en el proyecto Xcode generado mediante el empaquetado de Unity:
Configurar el entitlement de datos de camara
Copie el archivo
Enterprise.licenseobtenido por solicitud al directorio del proyecto Xcode.
Arrastre
Enterprise.licensedesde el directorio del proyecto Xcode al proyecto Xcode.
Modificar info.plist para que la aplicacion pueda guardar y entregar archivos
Si necesita grabar EIF en la aplicacion y entregarlo al ordenador u otros dispositivos mediante la app Archivos de visionOS, debe agregar y modificar los siguientes campos en Info.plist:
Agregue
LSSupportsOpeningDocumentsInPlacey establezca su valor entrue.Agregue
UIFileSharingEnabledy establezca su valor entrue.

Consejo
Despues de agregar los campos, el Key mostrado en la interfaz de Xcode sera distinto de la cadena agregada manualmente (por ejemplo, introdujo LSSupportsOpeningDocumentsInPlace pero se muestra Supports opening documents in place); esto es normal.