ARchi VR Content Creation

Revision Info: Documentation for ARchi VR Version 3.2 - November 2023

Table of Contents


Augmented Reality Content

User-generated AR Content

ARchi VR allows any user to capture rooms, add virtual items, and share the finished space within an interactive AR view. See the How to Capture Rooms and the How to Augment Spaces guides for more details. The user-generated Elements available in captured and augmented spaces are documented in ARchi VR Elements.

All available AR elements of ARchi VR are presented as detailed class hierarchy diagram in Classification of Model Entities.

Curated AR Content

ARchi VR supports several types of app extensions to provide curated AR content:

Catalog, Service, Workflow, Curation, Detector, and POI extensions can be provided by third parties as custom expansions for end-users of ARchi VR. See ARchi VR Extensions for more details.

In opposite to user-generated content, curated content is provided by an organisation (e.g. a company or an association). Curated content needs to be registered with ARchi VR by the corresponding organisation. Please contact support@metason.net to request registration and publication of curated content.

Dynamic Behavior

Curated content can add new items to an AR scene and additionally run tasks to control the behavior and interactivity of items. Tasks may also act on visuals, UI elements, data, and processes. A task defines its behaviour by the "do" action tag.

All available tasks of ARchi VR are presented as task diagram in Classification of Tasks.

Dynamic behaviour of AR scenes is supported by active rules which specify Event - Condition - Task dependencies. Get more details in Dynamic Behavior using Active Rules.

Declarative Creation of AR Content

Declarative vs. Imperative Programming

In an imperative approach, you need to implement everything by defining a sequence of statements: object creation, setting attributes, defining layouts, binding UI elements to functions, map data to visual representations, specify the control flow and so forth. In contrast, a declarative approach allows you to simply tell the App what to do, and it will take care of the internal specifics of how to implement for you. In the declarative programming paradigm entities (such as items, objects, services, and so on) do change their state or behavior by reacting on events.

The change of imperative to declarative programming has recently been successful in the domain of User Interface toolkits: for Web GUI development React and Angular are well-known examples of the declarative programming approach. And Apple provides a replacement for UIKit called SwiftUI that follows the declarative programming paradigm.

Declarative AR

ARchi VR app extensions are technically based on declarative AR specifications. Instead of using a programming or scripting language to algorithmically describe HOW an extension should work, the decalarative approach focuses on specifying WHAT ('task') should be done with which object ('item'). The declarations of ARchi VR app extensions are stored in JSON data structures and do not include conventional program code.

The following example Action specifies WHAT tasks should be executed on WHICH item:

{
    "$schema": "https://service.metason.net/ar/schemas/action.json",
    "items": [
        {
            "type": "Geometry",
            "subtype": "Box",
            "id": "red.box",
            "attributes": "color:#FF0000; wxdxh: 0.5x0.9x0.5;"
        }
    ],
    "tasks": [
        {
            "do": "add",
            "id": "red.box",
            "ahead": "0.0 0.0 -1.0"
        },
        {
            "do": "remove",
            "id": "red.box",
            "in": "5.0"
        }
    ]
}

You can read this declaration as:

declARe - AR Content with Schema Support

The declaration of ARchi VR app extensions and all interactive AR content is stored in JSON data structures. The specification vocabulary is made explicit as JSON schemes. A JSON schema provides clear human- and machine-readable documentation for defining and validating the structure of the corresponding JSON data. More information on the JSON schema (draft) standard can be found at https://json-schema.org.

The "declARe" JSON schemes are including specifications for:

Hint: By iOS 17 and newer all downloads within ARchi VR have to run using secure https protocol. References with http://_ will NOT work! Instead use https://_ for all URLs in declARe files (extensions, catalogs, actions).

ARchi Composer

Low-Code Editor for AR Content Creation

ARchi Composer is a low-code editor for MacOS to create dynamic and interactive AR content using the "declARe" approach. ARchi Composer supports:

Download:

ARchi Composer for Mac.

Editors Supporting declARe Schema

Various editors and IDEs have direct support for JSON schema. You therefore may use the "declARe" JSON schemes in your favourite code editor to support data validation, problem reporting, tooltips, auto completion, and code snipplets. Copy the corresponding template file to start with.

The "declARe" JSON schemes — used here in 'Visual Studio Code' — facilitate validation, problem reporting, tooltips, auto completion, and code snipplets to support the creation of AR content.

Editors with JSON schema support (such as VS Code) will map the JSON schema automatically from the $schema attribute embedded in the edited JSON file. In the following example, a JSON file for an AR action specifies that its contents follow the declARe schema in https://service.metason.net/ar/schemas/action.json.

{
    "$schema": "https://service.metason.net/ar/schemas/action.json"
    ...

The JSON files for App extension and for AR catalog do not support the $schema attribute. In VS Code you may associate a schema to files in the User settings (File > Preferences > Settings) under the property json.schemas. The following excerpt from User Settings shows how files can be mapped to the declARe schema.

    "json.schemas": [
        {
            "fileMatch": [
                "ext.json"
            ],
            "url": "https://service.metason.net/ar/schemas/extension.json"
        },
        {
            "fileMatch": [
                "catalog.json"
            ],
            "url": "https://service.metason.net/ar/schemas/catalog.json"
        }
    ],

Next Steps

Sample Code

Browse through examples of extensions with their corresponding JSON data resources and all referenced media files. Use the examples as templates for your own content creation.

Develop App Extensions and Curated AR Content

ARchi VR supports a specific app extension for developing curated AR content:

If you want to start creating AR content, request a free Developer extension.

Documentation

In order to understand the concept of the 'declARe' approach in detail and to dive deep into the creation of curated AR content, please study the documentation on:

Dynamic AR Content calling Web Services

To generate session-specific content, the ARchi VR app can send a multi-part POST request to your own Web service. The request returns an Action as JSON object which is executed in the ARchi VR app.

See Sample Web Services for examples of remote App extensions using Flask and Python.


Back to Table of Contents of ARchi VR Content Creation


Copyright © 2020-2023 Metason - All rights reserved.