Introduction
What is ConjureKit
ConjureKit allows developers to create a shared AR experience quickly and conveniently.
After a device establishes a connection to a server, a Session with a shared coordinate system is created. A device can join the session of another device by scanning a QR code momentarily displayed on the screen of the device that is already inside the existing session. The joining device is automatically calibrated into the existing session's coordinate system by observing the pose of the QR code relative to itself.
ConjureKit provides a callback-based networking engine for the participants (devices) inside a session to communicate. Peer-to-peer messages can be sent according to one of a set of predetermined message types or according to a custom message type that allows devices to send arbitrary byte arrays to one another, to be parsed according to the application's custom logic.
Modules
ConjureKit comes with optional packages known as modules:
Module | Description |
---|---|
Manna | QRcode-based calibration of joining participants into a session. |
Grund | Continuous vertical calibration of participants. |
Vikja | A key-value store to attach arbitrary properties to Entities. |
Odal | Dynamic retrieval and instantiation of .glb assets in a remote store. Animation syncing on the instantiated assets. |
Entities
ConjureKit supports an Entity data type, a Unity world-coordinate pose with a unique session-level id. When the pose of an Entity changes, all session participants are notified, maintaining a common view of Entities across all participants. A participant can only change the pose of Entities that it owns. Every participant is also assigned a default Entity that represents the participant himself. The pose of the latter is driven by the device's onboard positioning system, typically a smartphone's native SLAM session.
Entity Component System
ConjureKit also implements an Entity Component System, currently accessible only through a low-level interface. This is an experimental feature for which we plan to be adding more support in the future.