Blog >

Creando real-time apps en Mixed Reality (Parte I)


En esta serie de posts aprenderemos a implementar comunicaciones en tiempo real para las aplicaciones de Mixed Reality.

1. ¿Qué son las aplicaciones real-time?

Las aplicaciones o sistemas en tiempo real son todas aquellas que pueden proporcionar información o realizar un cálculo de manera instantánea o con una latencia mínima, medida por lo general en milisegundos. Por tanto, consideramos real-time toda aquella aplicación o sistema que responde tan rápido como el usuario o proceso requiere.

Existen tres tipos de real-time, según si es más restrictivo o menos:

  • Hard real-time: Se dispone de un tiempo máximo (deadline) para realizar la operación. De superarse dicho tiempo sería un fallo catastrófico. Algunos ejemplos de uso son los airbags, marcapasos o sistemas de control aéreo.
  • Firm realtime: Permite superar unos pocos deadlines, pero en caso de ser más, sería un fallo crítico debido a que el resultado de la operación se volvería obsoleto. Algunos ejemplos son los robots encargados del ensamblado o el orden (no frecuencia) de actualización de los frames en vídeos.
  • Soft real-time: Este es el menos restrictivo de los tres; no se considera crítico superar el deadline mientras se complete la operación en un tiempo aceptable relativo al contexto. Ejemplos de uso son las estaciones meteorológicas o la frecuencia de actualización de los frames en videojuegos.

En las aplicaciones de Mixed Reality proporcionaremos soft real-time.

2. Opciones de integración en Windows Mixed Reality

Actualmente existen diversas maneras de integrar capacidades real-time en esta plataforma. Estas serían algunas de ellas:

  • SignalR: Alternativa más conocida para la construcción de aplicaciones real-time en .NET. Esta librería permite generar una comunicación bi-direccional y persistente entre servidor y cliente adaptando el modo de transporte a las compatibilidades de ambos. Es decir, si no estuviera disponible WebSockets (el modo de transporte más optimizado para real-time), SignalR recurriría a otros modos para “simular” este comportamiento, podéis obtener más información aquí.
  • MixedRealityToolkit-Unity: Construida para Windows Mixed Reality (aunque está en desarrollo una nueva versión que incluye más dispositivos), ofrece, entre otras muchas cosas, la posibilidad de construir experiencias compartidas entre dispositivos. Es una muy buena opción si queremos ofrecer una comunicación en tiempo real entre clientes y que nos valga con la implementación que dispone (dada la posible pero no trivial capacidad de modificación).
  • WebRTC: Esta API, muy focalizada en videollamadas o streaming de vídeo, permite construir RTC (Real-Time Communications) muy optimizadas para el envío de video y audio simultáneo de forma bi-direccional. Aunque esté diseñado para navegadores y dispositivos Android/iOS, actualmente dispone de un SDK para poder integrarlo en UWP.

Existen más alternativas, pero éstas son las más representativas. Para el Hands-on Labs hemos decidido utilizar SignalR debido a su máxima expansión en el entorno .NET y a la facilidad que tendríamos de integrarlo con otras plataformas.

3. Hands-on Labs: ¿Qué vamos a hacer?

Crearemos una aplicación para Windows Mixed Reality que estará compuesta por varios cubos 3D “sincronizados”, de manera que cuando un usuario mueva uno de ellos, el resto verá ese movimiento en tiempo real en su respectivo dispositivo.

En el siguiente GIF se puede ver la aplicación en funcionamiento desde los puntos de vista de dos HoloLens. Ambos dispositivos interactúan de forma simultánea con los tres cubos.

El diseño de la solución será muy simple: Contaremos con un servicio de SignalR, desplegado en una Web App de Azure, que hará de punto de conexión para los distintos clientes, formados por una app en Unity 3D. Esta conexión se realizará mediante WebSockets, para garantizar la máxima velocidad de comunicación.

unity-mixed-reality

En el próximo post, hablaremos sobre la preparación del entorno y la creación del backend del proyecto.

Podéis comentarnos lo que sea en info@kabel.es.

También podéis seguirnos en Twitter, LinkedIn y Facebook.


Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0
Internacional
.

Suscríbete a nuestra newsletter para enterarte de las novedades más Geek

Newsletter Banner
RGPD

Contenido Relacionado