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:
- Simple Textstrings [such as for billboard sprites]
- Basic XML / potential 3d-markup format
- links to any other type of media [sound, 3d-meshes,
websites... anything]
Other features will include:
- Occlusion
flags - giving the option for AR-objects to go behind buildings or
other physical objects rather than phaze through it. This will also
enable proper shadow casting, collision-detection for any real object
that has a virtual counter-part and snap-to to these objects.
- Descriptive data (metadata) to help future AR related
searches (and obnoxious parental control schemes).
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
- Orientation
- Data format
- The data itself
- Metadata
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; | boolean | Determines if object (3d) is used as a mask for other virtual objects (see above) |
The data itself
Data; | string | The 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'. |