[openARweb] anselm intro and thought on an open ar stack

0 views
Skip to first unread message

anselm

unread,
Apr 23, 2010, 6:50:42 PM4/23/10
to Open ARweb
Hi folks,

Thought I'd introduce myself.

Most of my experience is working on 3d many player video games. I
guess the best known would be Lord of the Rings for EA - but probably
the biggest product was Vigilance which ran on the Sega Heat Network.
It was also interesting because we had persistent online digital
objects as a core part of our architecture - basically limited edition
artifacts - something that is just starting to emerge now.... as
people try to monetize massively multiplayer online game worlds.

I also worked on a product called Platial - a place sharing app...

And I worked on an image recognition app as well - which I liked a lot
- called ImageWiki... it predated Google Goggles, SnapFish and the
like by a couple of years and we thought we had something very
exciting when we first thought of it.

Anyway I was thinking quite a bit about what it really takes to build
a *SHARED* AR world. Mike Liebhold talks about the Open AR Stack. He
got me thinking as to what exactly would be in that stack?

And so I started just listing what some of those criteria might be...
Below is my list of what it might take to build such a universe.
Clearly such aspirations are probably not achievable in one step - but
I want to indicate where I think the general "direction" should go -
towards behavior more so than just representation of geometry.

Anselm thoughts on an AR stack:

Participants and Roles

> the geospatial physical environment itself which provides data such
as

a location
time of day
the local weather
other people nearby
infinite volumes of geo-located annotations
live sensor inputs

> ar consumer

interacting with the digital objects and other participants
playing games
interacting with digital agents
providing context such as location, mood, comments
leaving a contrail of data behind themselves

> ar designer / publisher

passionate people will often choreograph a story or sequence of
related objects

> ar scenario dj

perhaps there may be situations where somebody is acting as a
dungeon master or scenario manager

> ar publisher

there may be organizations that collect distinct projects and
publish them

> object

i have computation
i have appearance
i have ownership and can belong to one or more things
i may have many instances of myself

> search engine

give me all objects at this location ( google goggles kind of
cases )
give me objects that look like this bitmap i just sent you
give me objects meeting certain criteria as well

> server

accept this object
run this object
publish this object

Aspirational Goals

> end to end open

> formal grammar for object descriptions

> realtime zero-latency interaction

> multiple objects from different vendors co-existing in the same
layer ( or layar as the case may be ) with "priority resolution"

> search and discovery of objects and servers

>

Technology Components

> coordinates systems

> ordinary 3d vector expression in an xyz volume
> polar coordinates can be converted to this
> long / lat / elevation can be converted to this

> objects

> an AR universe consists of executable objects arranged in an
acyclic graph
> there are no abstractions just instances and a prototype based
object cloning scheme is used
> there are various kinds of objects representing various concepts
> a "person" or "party" is represented by an object
> objects in general may indicate that they are sponsored by some
other object > objects have a concept of "ghosts" where an object can
exist on many machines and in many places
> objects have a concept of "locally authoritative" where changes
made to that local object are propagated to all remote objects
> objects have a concept of permissions; where they may or may not
be modified, deleted, cloned or ghosted ( read / write / edit /
delete / clone / ghost )
> objects conflate multiple possible concepts including a visual
appearance, behavior and state; they may be only one or all of these
qualities.
> objects may consist of sub-objects
> objects may be tagged, have a date-stamp, and a medley of other
traditional attributes usually associated with modern data

> object description semantics

> supported by a plug-in model in general
> behavior -> javascript, maybe others ( behavior is optional )
> geometry -> VRML, X3D, KML, probably some others ( geometry is
optional - it can be procedurally generated by behavior anyway )
> state -> RDF of some kind, perhaps with OWL descriptions ( state
is optional )

> kinds of objects

> a twitter message
> an rss node consisting of a { title, link, description, longitude,
latitude }
> a 3d box consisting of a { title, vertices, polygons, textures }
> a photo consisting of a { bitmap, longitude, latitude }
> proxy for a human participant
> proxy for a sensor
> proxy for an edifice
> proxy for a tree
> a trigger that spawns 10 orcs when you roll over it
> a timer that counts down and then spawns off a particle effect of
fireworks
> a dinosaur
> a line segment polygon or polyhedra defining a condition such as
say "a city" or "a road" or "rain"
> ronald mcdonald
> a car consisting of thousands of parts connected together in a
constraint based physical model
> a billboard
> a contrail of a previous passerby
> a plea for help
> a sensor emitter state
> light
> sound
> fog
> volumetric lighting or soundscapes
> potentially visible set
> a tilemap engine
> an encapsulated simulation such as a tidal wave or a thunderstorm
> a procedural description of a tree
> a karl simms object


> simulation engine

> objects are computed forward in time
> there's probably some kind of integration based model to forward
compute constraints, collisions and the like for physics

> rasterization engine

> objects are arranged in an acyclic tree graph and those objects
that have rendering hooks are rendered… rendering can be procedural.
> transform into different rendering outputs - for example in
mapping we often flatten globes

> network transport of data between computational hubs

> binary encoding option by default
> ascii encoding option for debugging ( xml and or json )
> xmmp seems good
> ReST seems heavy; persistent connections would be better
> UDP seems even better than TCP

> client browser

a lightweight server basically; doesn't really differ from a server
except performance is so low that nobody wants to go down there to do
work

> server headless browser

since computation is not evenly distributed we have a concept of a
server which concentrates computation near an end-user
objects may move their computation to be as close as possible to a
user in some cases
all instances of clients are also servers

> servers are federated -> status.net seems like a better model than
twitter.com -> more scaleable
> each server has directory services for server discovery
> dns based server identifiers

> server agent api

we express many requirements as an api; these requirements may
actually be fulfilled under the hood by say databases and stuff like
that.

> object_find_other_servers
> object_copy_self_to_new_server
> object_find_for_other_objects ( using a VRQL - virtual reality
query language that can deal with concepts like "potentially visible
set" )
> object_give_me_more_cpu
> object_make_myself_read_only
> object_make_myself_authoritative
> object_clone_myself
> object_recompile_scene
> object_spawn_something
> object_delete_something
> object_send_a_message_to_something











--
Subscription settings: http://groups.google.com/group/openARweb/subscribe?hl=en
Reply all
Reply to author
Forward
0 new messages