El lenguaje de marcado de realidad aumentada ( ARL ) [1] es un estándar de datos para describir e interactuar con escenas de realidad aumentada (RA). Ha sido desarrollado dentro del Open Geospatial Consortium (OGC) por un grupo de trabajo dedicado a los estándares ARML 2.0. [2] ARML consta tanto de una gramática XML para describir la ubicación y apariencia de los objetos virtuales en la escena, como de enlaces ECMAScript para permitir el acceso dinámico a las propiedades de los objetos virtuales, así como el manejo de eventos, y actualmente está publicado en la versión 2.0. ARML se centra en la realidad aumentada visual (es decir, la cámara de un dispositivo con capacidad de RA sirve como salida principal para escenarios de realidad aumentada).
ARML se basa en un modelo de objetos genérico que permite la serialización en varios lenguajes. Actualmente, ARML define una serialización XML, así como una serialización JSON para los enlaces ECMAScript. El modelo de objetos ARML consta de tres conceptos principales:
La definición de una característica se reutiliza del lenguaje de marcado geográfico (GML) y describe el objeto físico que se debe ampliar. El objeto físico se describe mediante un conjunto de metadatos, que incluyen un ID, un nombre y una descripción. Una característica tiene uno o más anclajes.
Un ancla describe la ubicación del objeto físico en el mundo real. En ARML se definen cuatro tipos de ancla diferentes:
Las geometrías describen la ubicación de un objeto a través de un conjunto de coordenadas fijas. WGS84 (latitud, longitud, altitud) se utiliza como sistema de referencia de coordenadas predeterminado; se pueden proporcionar otros sistemas de referencia de coordenadas arbitrarios si es necesario. ARML permite geometrías de 0 (punto), 1 (cadena de líneas) y 2 dimensiones (polígono). Los anclajes geométricos reutilizan la sintaxis definida en GML3. Como ejemplo, el siguiente fragmento define la ubicación del Wiener Riesenrad .
<gml:Point gml:id= "ferrisWheelViennaPoint" > <gml:pos> 48.216622 16.395901 </gml:pos> </gml:Point>
Los rastreables son patrones que se buscan, reconocen y rastrean en la pantalla de video que proviene de la cámara del dispositivo. Existe una amplia variedad de diferentes tecnologías de seguimiento, incluidos códigos QR , características naturales , 3D y seguimiento facial. Como todos estos tipos de seguimiento utilizan diferentes algoritmos y tecnologías, la definición de un rastreable se abstrae y se divide en dos partes, un rastreador y sus rastreables asociados . Un rastreador describe la tecnología (o algoritmo) con el que se deben rastrear sus rastreables asociados, utilizando URI que identifican el algoritmo. El rastreable en sí describe el patrón que el algoritmo debe buscar en la transmisión de video.
Ejemplo: Un rastreador de características naturales y un rastreable asociado
< Identificador del rastreador= "defaultImageTracker" > <uri xlink:href= "http://opengeospatial.org/arml/tracker/genericImageTracker" /> </Rastreador> <Rastreable> <config> <rastreador xlink:href= "#defaultImageTracker" /> <src> http://www.example.com/myMarker.jpg </src> </config> <tamaño > 0.20 < / tamaño> </Rastreable>
Los anclajes relativos permiten definir una ubicación relativa a otros anclajes o a la posición del usuario. El primero permite configurar una escena y la ubicación de todos los objetos virtuales incluidos en función de un único anclaje, como un objeto rastreable colocado sobre una mesa. El segundo permite escenarios en los que la ubicación real del usuario es irrelevante. Los objetos virtuales simplemente se colocan alrededor del usuario, independientemente de su ubicación física.
A diferencia de los tres tipos de anclas anteriores, las anclas de pantalla no describen una ubicación en la escena virtual tridimensional, sino que definen un área en la pantalla del dispositivo, lo que permite la inclusión de barras de estado y similares.
Los VisualAssets describen la apariencia de los objetos virtuales en la escena aumentada. ARML permite describir varios tipos de VisualAssets, incluidos texto simple, imágenes, contenido HTML y modelos 3D. Los VisualAssets se pueden orientar (para que siempre estén de frente al usuario de manera automática o para mantener una orientación estática específica) y escalar. Además, se pueden aplicar condiciones de visibilidad (es decir, el Asset solo es visible en la pantalla si la distancia al usuario está dentro de ciertos límites).
A finales de 2009, Wikitude (anteriormente Mobilizy), los creadores del Wikitude World Browser, iniciaron una iniciativa temprana para crear un formato al que todos los navegadores de RA de ese momento pudieran adherirse, llamado Augmented Reality Markup Language (ARML). [3] Este formato ahora se llama ARML 1.0 y sirve como formato de entrada para el Wikitude World Browser.
A finales de 2011, Martin Lechner, director de tecnología de Wikitude y principal impulsor de la iniciativa ARML, estableció el Grupo de trabajo de estándares del lenguaje de marcado de realidad aumentada 2.0 (ARML 2.0 SWG) dentro del OGC. [4] Su objetivo era crear un estándar internacionalmente aceptado para la realidad aumentada, basado en las ideas de ARML 1.0 y formatos similares. Durante la ISMAR en Atlanta en noviembre de 2012, se publicó oficialmente la primera especificación ARML 2.0, [5] lo que convirtió a ARML 2.0 en un estándar candidato oficial de OGC.
ARML 2.0 reutiliza ideas, estructura, sintaxis y semántica de los siguientes estándares existentes y ampliamente utilizados: [6]
Además, las siguientes iniciativas independientes de ARML también se ocupan de la creación de estándares para entornos de Realidad Aumentada:
El siguiente ejemplo describe un modelo 3D (suponiendo que haya uno disponible en http://www.example.com/myModel.dae) en un objeto rastreable, como un marcador fiducial, ubicado en http://www.example.com/myMarker.jpg:
<arml> <ElementosAREl> <!-- registra el rastreador para rastrear una imagen genérica --> <Tracker id= "defaultImageTracker" > <uri xlink:href= "http://opengeospatial.org/arml/tracker/genericImageTracker" /> </Tracker> <!-- define el marcador artificial sobre el cual se colocará el modelo --> <Trackable> <assets> <!-- define el modelo 3D que debe ser visible sobre el marcador --> <Model> <href xlink:href= "http://www.example.com/myModel.dae" /> </Model> </assets> <config> <tracker xlink:href= "#defaultImageTracker" /> <src> http://www.example.com/myMarker.jpg </src> </config> <size> 0.20 </size> </Trackable> </ARElements> </arml>