Skip to content

OMI_link

Contributors

  • OMI glTF Extensions Group
  • Robert Long, The Matrix.org Foundation
  • Anthony Burchell, Individual Contributor

Status

Draft Specification

Open Metaverse Interoperability Group Stage 1 Proposal

Dependencies

Written against the glTF 2.0 spec.

Optionally depends on the OMI_physics_body spec for triggers.

Overview

This extension allows for objects to add world traversal behavior in the form of links. This specification does not contain any definitions in how the link data is used and it is up to the client builder to decide how the link is activated.

In addition to being defined independently, the OMI_link extension can be defined on an OMI_physics_body node with the type set to trigger. When OMI_link is on a trigger, the trigger should be treated as an activator for the link, such that a player activating that trigger should cause that player to activate the link.

Clients may choose to have application-specific behaviors for URIs otherwise the default platform / browser URI handler should be used. Applications should perform any necessary URI security checks and may decide to present a dialog to inform the user of how the URI is handled.

Example:

{
    "scenes": [
        {
            "name": "Default Scene",
            "nodes": [0]
        }
    ],
    "nodes": [
        {
            "name": "OMI Group meetup space",
            "translation": [1.0, 2.0, 3.0],
            "extensions": {
                "OMI_link": {
                    "title": "Meetup World",
                    "uri": "https://omigroup.org/worlds/meetup"
                },
                "OMI_physics_body": {
                    "trigger": {}
                }
            }
        }
    ]
}

glTF Schema Updates

uri

Must be a valid uri, relative path, or fragment.

Valid uri field values:

https://omigroup.org/worlds/meetup
https://omigroup.org/worlds/meetup#portal1
https://omigroup.org/worlds/meetup?autojoin=true#portal1
vrchat://launch?id=wrld_hjdksahgklfshjfgjklsd
./breakoutroom1
#portal1

title

Optional field that describes the destination of the uri. Implementations can show this title if it exists or fallback to showing the uri.

JSON Schema

TODO

Known Implementations

Interested Implementations: * Third Room - https://github.com/thirdroom/thirdroom * Three Object Viewer (WordPress Plugin) - https://wordpress.org/plugins/three-object-viewer/

Resources

TODO

Prior Art

  • Third Room - https://github.com/matrix-org/thirdroom-unity-exporter/tree/main/Runtime/Scripts/MX_portal