Introduction


The ARBlip specifications are still well under development, but we'd like to share some of the ideas we're working on already.

The principle behind the ARBlip specification is to be able to geolocate an object in realtime. For this purpose, ARBlip contains not only what you want to display (in textstring or link), but specifically where.

ARBlip is more than just a co-ordinate, it also allows you to manipulate the objectplacing in any way you want. For starters, not only do we need an X and a Y-axis, three dimensional space also requires a Z-axis to place the object on the correct height. Then there are also other issues. You don't just want to align a poster with a window, for example, when the window itself is slightly slanted.
ARBlip will also give the ability to place an object relative to an image (such as the well known QR-codes, but also to any other physical visual that the user has linked an object to). This gives the placement of an AR-object a large amount of flexibility, comparable to CSS' positioning features.

The data contained within an ARBlip can be anything, such as:
Other features will include:

Of course, all of this is preliminary and subject to change as new requirements become apparent.
Suggestions are very welcome. If you see something we really ought to include, drop us an e-mail at info@arwave.org.

Anyway, onto the actual specifications then,

ARBlip specifications

An individual ARBlip contains the information necessary to geolocate a single piece of data.
We can store this information very easily by creating a new Blip for each object to be positioned and then adding the required information as key-value pairs in the annotations.

The ARBlip annotations can be divided in five catagories:

Location
Longitude; double Up/Down
Latitude; double Left/Right
Altitude; double Front/Back

Orientation
Roll;
interger Rotation around the front to back (z) axis (lean left or right).
Range +/- 180 degrees with + values moving the objects right side down.
Pitch; interger Rotation around the left to right (x) axis (tilt up or down).
Range +/- 90 degrees with + values moving the objects front up (looking up).
Yaw; interger Rotation around the vertical (y) axis (turn left or right).
Range +/- 180 degrees with + values moving the objects face to its right.
FacingSprite; boolean If no rotation specified, this should default to true
If set to true when a rotation is set, then it keeps that rotation relative to the viewer, not relative to the earth.

Data format
MIME; string The Mime type of data
CoordinateSystemUsed; string the co-ordinate system in use
Occlusion;booleanDetermines if object (3d) is used as a mask for other virtual objects (see above)

The data itself
Data;stringThe data itself. Either inline - such as text for a billboard placemark - or a URL pointing to a remote resource such as a 3d-mesh.
DataUpdatedTimestamp; string Time the Data was updated/changed, not merely when the blip was changed.
DataARBlipUpdate; string This is a separate timestamp should be used for all updates even if the data wasn't changed.

Metadata
Metadata; string Set of key/value pairs describing the data, such as 'author: thomas'.