VR & AR (WebXR)
Last updated
Last updated
Needle Engine es compatible con la , incluyendo AR y VR. WebXR es un estándar web oficial que trae experiencias inmersivas a la web, con todas las ventajas de la web: sin instalación, sin tienda de apps, sin SDKs necesarios.
Todos los dispositivos con un navegador pueden ejecutar apps hechas con Needle. Si el navegador es compatible con WebXR, tus apps funcionarán automáticamente también en XR, usando nuestros componentes integrados. Esto incluye navegadores de escritorio, navegadores móviles, muchos navegadores en visores de AR/VR, pero también otras tecnologías emergentes como pantallas Looking Glass, gafas inteligentes, y más.
:::tip Soporte AR sin app para iOS vía USDZ/QuickLook Aunque los dispositivos iOS aún no tienen soporte oficial para WebXR, Needle soporta la creación de experiencias AR en iOS usando . Consulta la para más detalles. Puedes crear experiencias ricas e interactivas que funcionen sin problemas en AR en dispositivos iOS, incluso con las limitaciones que Apple ha impuesto.
Cuando entras en modo AR en iOS, Needle convertirá automáticamente tu escena a un archivo USDZ, que luego se muestra en AR usando QuickLook de Apple. Se conservarán los objetos, materiales, audio, animación y Everywhere Actions. :::
La siguiente tabla lista algunos de los dispositivos que hemos verificado que funcionan con Needle Engine. Cuando salga un nuevo dispositivo compatible con WebXR, funcionará con tus apps de fábrica. Esta es una de las grandes ventajas de construir con el navegador como plataforma: la compatibilidad no se limita a un conjunto específico de dispositivos o SDKs.
Apple Vision Pro
✔️ Safari
hand tracking, soporte para transient pointer
Meta Quest 3
✔️ Meta Browser
hand tracking, soporte para sessiongranted1, passthrough, depth sensing, mesh tracking
Meta Quest 3S
✔️ Meta Browser
hand tracking, soporte para sessiongranted1, passthrough, depth sensing, mesh tracking
Meta Quest 2
✔️ Meta Browser
hand tracking, soporte para sessiongranted1, passthrough (blanco y negro)
Meta Quest 1
✔️ Meta Browser
hand tracking, soporte para sessiongranted1
Meta Quest Pro
✔️ Meta Browser
hand tracking, soporte para sessiongranted1, passthrough
Pico Neo 4
✔️ Pico Browser
passthrough, hand tracking2
Pico Neo 3
✔️ Pico Browser
no hand tracking, thumbsticks de controlador invertidos
Oculus Rift 1/2
✔️ Chrome
Valve Index
✔️ Chrome
HTC Vive
✔️ Chrome
Hololens 2
✔️ Edge
hand tracking, soporte para AR y VR (en modo VR, también se renderiza el fondo)
Android 10+
✔️ Chrome
Android 10+
✔️ Firefox
iOS 15+
(✔️)3 Safari (✔️)3 Chrome
iOS 15+
✔️ WebXR Viewer
el navegador está algo desactualizado actualmente
Hololens 2
✔️ Edge
Hololens 1
❌
no tiene soporte WebXR
Magic Leap 2
✔️
Magic Leap 1
✔️
dispositivo obsoleto
Looking Glass Holographic Display
✔️ Chrome
Logitech MX Ink
✔️ Meta Browser
Las capacidades de AR, VR y networking en Needle Engine están diseñadas para ser modulares. Puedes elegir no soportar ninguna de ellas, o añadir solo características específicas.
Habilitar Teleportation
Añade un componente TeleportTarget
a las jerarquías de objetos sobre las que se puede teletransportar.
Para excluir objetos específicos, establece su layer a IgnoreRaycasting
.
Habilitar Networking
Añade un componente SyncedRoom
.
Habilitar Desktop Viewer Sync
Añade un componente SyncedCamera
.
Habilitar Voice Chat
Añade un componente VoIP
.
:::tip Estructura de escena Estos componentes pueden estar en cualquier lugar dentro de tu jerarquía. También pueden estar todos en el mismo GameObject, lo cual es un patrón común. :::
Definir la raíz y escala de la sesión AR
Añade un componente WebARSessionRoot
a tu objeto root. Para experiencias AR, a menudo quieres escalar la escena para que se ajuste al mundo real.
Define la user scale para encoger (< 1) o ampliar (> 1) al usuario en relación con la escena al entrar en AR.
Definir si un objeto es visible en Browser, AR, VR, First Person, Third Person
Añade un componente XR Flag
al objeto que quieres controlar.
Cambia las opciones en el desplegable según sea necesario. Los casos de uso comunes son
ocultar suelos al entrar en AR
ocultar partes del Avatar en vistas en Primera o Tercera Persona. Por ejemplo, en vista en primera persona, una persona no debería poder ver su propio modelo de cabeza.
Actualmente, esto solo es compatible con Oculus Quest 1, 2 y 3 en el Navegador de Oculus. En otras plataformas, los usuarios serán expulsados de su sesión inmersiva actual y tendrán que volver a entrar en VR en la nueva página.
Requiere habilitar un flag del navegador: chrome://flags/#webxr-navigation-permission
Haz clic en objetos para abrir enlaces
Añade el componente OpenURL
que facilita mucho la construcción de mundos conectados.
Aunque actualmente no ofrecemos una integración lista para usar de sistemas de avatares externos, puedes crear avatares o sistemas personalizados específicos de la aplicación.
Crear un Avatar personalizado
Crea un GameObject vacío como root del avatar
Añade un objeto llamado Head
y añade un XRFlag
configurado en Third Person
Añade objetos llamados HandLeft
y HandRight
Añade tus gráficos debajo de estos objetos.
Hay una serie de componentes experimentales para construir Avatares más expresivos. En este punto, recomendamos duplicarlos para hacer tus propias variantes, ya que pueden ser cambiados o eliminados más adelante.
Random Player Colors
Como ejemplo de personalización de avatar, puedes añadir un componente PlayerColor
a tus renderers.
Este color aleatorio se sincroniza entre jugadores.
Eye RotationAvatarEyeLook_Rotation
rota GameObjects (ojos) para seguir a otros avatares y a un target aleatorio. Este componente se sincroniza entre jugadores.
Eye BlinkingAvatarBlink_Simple
oculta GameObjects (ojos) aleatoriamente cada pocos segundos, emulando un parpadeo.
Offset ConstraintOffsetConstraint
permite desplazar un objeto en relación con otro en el espacio del Avatar. Esto permite, por ejemplo, que un Cuerpo siga a la Cabeza pero mantenga la rotación nivelada. También permite construir modelos de cuello simples.
Limb ConstraintBasicIKConstraint
es un constraint muy minimalista que toma dos transforms y un hint. Esto es útil para construir cadenas de brazos o piernas simples. Como la rotación no está implementada correctamente actualmente, los brazos y las piernas pueden necesitar ser rotacionalmente simétricos para "verse bien". ¡Se llama "Basic" por una razón!
Si quieres mostrar contenido html diferente dependiendo de si el cliente está usando un navegador regular o usando AR o VR, puedes usar un conjunto de clases html.
Esto se controla a través de clases de elementos HTML. Por ejemplo, para que el contenido aparezca en escritorio y en AR, añade un <div class="desktop ar"> ... </div>
dentro de la etiqueta <needle-engine>
:
Las Superposiciones de Contenido se implementan usando la característica opcional dom-overlay
, que generalmente es compatible con dispositivos AR basados en pantalla (teléfonos, tabletas).
Las experiencias de Realidad Aumentada en iOS son algo limitadas, debido a que Apple actualmente no soporta WebXR en dispositivos iOS.
:::tip Soporte limitado de código personalizado en QuickLook Apple tiene fuertes limitaciones sobre qué tipo de contenido puede usarse en QuickLook. Por lo tanto, los componentes de script personalizados no pueden convertirse automáticamente para su uso en AR en iOS. Puedes añadir soporte para algunos tipos de código personalizado usando nuestra API de Everywhere Actions. :::
Aquí hay un ejemplo de un instrumento musical que usa Everywhere Actions y por lo tanto funciona en navegadores y en AR en dispositivos iOS. Utiliza spatial audio, animación e interacciones de toque.
También hay otras opciones para guiar a los usuarios de iOS hacia experiencias AR interactivas aún más capaces:
Usar acceso a la cámara y algoritmos personalizados en dispositivos iOS. Se puede solicitar acceso a la imagen de la cámara y ejecutar algoritmos personalizados para determinar la pose del dispositivo. Aunque actualmente no proporcionamos componentes integrados para esto, aquí hay algunas referencias a bibliotecas y frameworks que queremos probar en el futuro:
Visita chrome://flags
en tu navegador Chrome de Android
Encuentra y habilita la opción WebXR Incubations
:::
Sin esa especificación, aún se puede solicitar acceso a la imagen de la cámara y ejecutar algoritmos personalizados para determinar la pose del dispositivo. La desventaja es que los usuarios tendrán que aceptar permisos adicionales como el acceso a la cámara, y el tracking no será tan preciso como con las capacidades nativas del dispositivo.
Aquí tienes algunas bibliotecas para añadir image tracking basado en el acceso a la cámara y algoritmos de visión por computadora locales:
Página traducida automáticamente con IA
No hay soporte de código completo, pero de Needle son compatibles para crear archivos USDZ dinámicos e interactivos.
requiere Looking Glass bridge y algo de código personalizado,
soporte oficial, ver
1: Requiere habilitar un flag del navegador: chrome://flags/#webxr-navigation-permission
2: Requiere habilitar una opción en los ajustes de Desarrollador3: Usa u
Visita nuestras para probar muchos ejemplos interactivos ahora mismo. O, pruébalo en vivo en tu dispositivo haciendo clic en los botones QR Code (para teléfonos) o Open on Quest (para visores Meta Quest) a continuación.
Habilitar AR y VR
Añade un componente WebXR
.Opcional: puedes establecer un avatar personalizado referenciando un .
Por defecto, se asigna un DefaultAvatar
básico.
usa todo lo anterior para una experiencia sandbox multijugador multiplataforma. — #madebyneedle 💚
Needle Engine es compatible con el estado . Esto permite a los usuarios navegar sin problemas entre aplicaciones WebXR sin salir de una sesión inmersiva: permanecen en VR o AR.
Lee más sobre scripting para XR en la
Ejemplo de Rig de Avatar con modelo de cuello básico y constraints de extremidades
Ejemplo de jerarquía de Prefab de Avatar
Usa la clase .ar-session-active
para mostrar/ocultar contenido específico mientras estás en AR. La no debería usarse en este momento porque su uso rompe el WebXR Viewer de Mozilla.
Vale la pena señalar que el elemento overlay , independientemente del estilo aplicado. Si quieres alinear elementos de forma diferente, debes crear un container dentro del elemento class="ar"
.
Las de Needle Engine están diseñadas para llenar esa brecha, trayendo capacidades interactivas automáticas a dispositivos iOS para escenas compuestas por componentes específicos. Soportan un subconjunto de la funcionalidad disponible en WebXR, por ejemplo spatial audio, image tracking, animaciones, y más. Consulta para más información.
Exportar contenido sobre la marcha como archivos USDZ. Estos archivos pueden mostrarse en dispositivos iOS en AR. Cuando se exportan desde escenas con Everywhere Actions, la interactividad es la misma, más que suficiente para configuradores de productos, experiencias narrativas y similares. Un ejemplo es donde las creaciones (no la sesión en vivo) pueden verse en AR.
utiliza este enfoque. Los jugadores pueden colocar texto colaborativamente en la escena en sus pantallas y luego ver los resultados en AR en iOS. En Android, también pueden interactuar directamente en WebXR. — #madewithneedle por Katja Rempel 💚
Guiar a los usuarios hacia navegadores compatibles con WebXR en iOS. Dependiendo de tu audiencia objetivo, puedes guiar a los usuarios en iOS hacia, por ejemplo, el de Mozilla para experimentar AR en iOS.
(código abierto)
por FireDragonGameStudio
(código abierto)
(comercial)
Needle Engine soporta WebXR Image Tracking () en Android y QuickLook Image Tracking en iOS.
Puedes encontrar documentación adicional en la sección .
:::warning WebXR Image Tracking todavía está en fase de "borrador" y no está generalmente disponible Hasta ahora, los proveedores de navegadores no han podido ponerse de acuerdo sobre la API final de image tracking para WebXR. Mientras la especificación esté en fase de "borrador" (), tú y los usuarios de tu app necesitaréis seguir estos pasos para habilitar WebXR ImageTracking en dispositivos Android:
por FireDragonGameStudio
(código abierto)
(código abierto)