





We've been making good progress over the last month, and our toolset around data plotting in immersive spaces is taking shape. What has emerged are four main plot types, and supporting tools, all just importing data from CSV files to a standard format:

The simplest is a surface plot, aka a 3D bar chart. Data consists typically of one dimension of entities (e.g. stock ticker symbols), one of time (e.g. years or months) and one of value (e.g. stock price). Controls are provided to be able to change transparency levels, zoom in and out, and switch labels on and off.

Next is the scatter plot. In this tool we actually implement a 9D data cube, and allow you to plot any dimension not only against the 3 axes (x,y,z), but also to colour, size and shape. The tool supports the ability to zoom the data in and out - as well of course as your ability to fly in and through the data.

Using the same tools as the scatter plot we can also implement social graph mapping. here we can show relationships between people, places and organisations, and colour and size code links dependent on their detail - as well as applying similar marking to the data points.

The final version is again a special case of the scatter plot (what we term generically a static plot), where x and y are lat and long (or other geo co-ordinates) and we plot the data against a map - in this case location data derived from Twitter. Here we also colour code the points by recency, and shape them by static or mobile browser. The white layer is people mentioned by geocoded tweets, and the yellow boxes the hashtags.
Finally to bring it all together we captured a load of tweets during the recent Royal Wedding and this is what we got:

Based on over 5000 tweets captured at 5 minute intervals over the day. Central cone layer shows most prolific tweeters (size = number of tweets, red = quoting others, yellow=being quoted). Position in layer reflects sentiment, high=good, low=bad (orange surface level = neutral). Lower cone layer is other Twitter users being mentioned in tweets, upper cube layer is hashtags being used, for both size=number of mentions. Each object has a label identifying name. Hovering cursor over an object brings up more information/options such as bringing up the twitter page of the user (in this case imPrinceHarry - who luckily rated positive on sentiment!). Further refinement could show social graph data from people mentioning other people in tweets, and links to
hashtags they used etc.
Our little adventure is over yet though. With the release of OpenSim 0.7.1 we've finally been able to start writing Region Modules (and delete times are back to reasonable), getting a four fold increase in plot speed and more robust comms, so we're now moving out plot engine to RegionModules (although we'll keep a LibOMV option for remote deployments). We've also begun to look at what it will take to port the whole thing to Vastpark and Unity.
If you'd like a demo, or to learn more about our work in data visualisation or visual analytics, or have a project which could use these techniques, then don't hesitate to get in touch.

Having got point plotting sorted out we needed to move on to line plotting. I've always thought about doing this in SL, but the thought of all the maths and trig and THEN having to break a line segment into 10m lengths was just too much. Even in OpenSim with a 256m line length limit meaning it was just a trig and maths problem (but watch the diagonals) was enough to give me a couple of headaches. I've never understood Quaternions at the best of times, but any Euler type approach kept failing. In the end I managed to distil the essence of Quaternions into an algorithm I can understand (and easily explain to others), so at least I had that covered. The big challenge was then working out how to apply them to get the effect we wanted. The breakthrough was when I realised that my two-angle euler approach (pan and tilt of the line into position) could be accomplished in a single quaternion - the axis being the equivalent of one rotation, and the quaternion rotation the second. A little of fildding around with senses of rotation and directions of axis, and voila - we could plot a line to join any two points within 3D space (within a 180m cube). The example above is just a test with a random z element added to an almost meaningful x/y position plot, within about an 80m x 80m x 80m space with around 400 nodes and 1000 lines.

One step up from the AstroCube we have on Daden Prime in Second Life, we now have a whole sim running locally in OpenSim dedicated to stellar data. We are bringing data in through LibOMV so we are plotting anywhere on the sim at around 10 points per second directly from a CSV database.
For nearby stars the database we are using is the excellent one at http://www.projectrho.com/smap06.html. This has almost 45000 entries for stars out to around 5000parsecs (although 40000 are within 300parsecs), and is based on the ESA Hipparcos Catalog, the Yale Bright Star Catalog (5th Edition), and the Gliese Catalog of Nearby Stars (3rd Edition) with some extra data thrown in.
We can plot out to 128m from the centre point, ie whole sim, and the images in this post are based on plotting all stars within 20 parsecs (1 parsec is about 3 light years), around 1900 stars, at a scale of 5m per parsec!. Stars are coloured and sized based on spectral type (OBAFGKM) and Luminosity (I to VI).
The backdrop to the plot is a 256 x 256 cube with a texture of small white stars for effect purposes only. In the image above you can also just make out my avatar floating by the Sun.
We are not working on building the interactive features so you can interrogate each star and plot additional information (like exoplanets).

Zooming in towards Sol. The bright white stars are Sirius (lower right) and Procyon (upper right).

Sol. Proxima/Alpha Centauri group just under my arm!

With planetary discs switched on. Discs are colour coded by planet type, red/orange for Jupiter type, blue for Neptunes, green for terrestrial. About 100 planetary discs within range.
The upshot of all of this of course is not only to show that we can plot larger and larger quantaties of stellar data (the eventual aim is to get the 40000 stars within 300 ly plotted), but that we can use OpenSim to plot almost any sort of data in 3D.

One of our ongoing interests (helped along by a current research contract) is in how we use virtual worlds as immersive data visualisation spaces. You may be familiar with our Datascape virtual war-room, but our current focus is on plotting large amounts of data over a sim-sized area. The challenges here are a) to get enough data points in and plotted in a reasonable amount of time and b) work out how best to represent them, c) how best to interact with them and d) how to navigate through the dataset.
We started using our existing SL plot-bot to plot objects in OpenSim - the downsides of that were plot range (you have to move the bot with 10m of each plot point) and getting data in (notecards limits you, HTTP is too slow/cumbersome.) But by doing a pre-sort of the data we could get the bot to plot about a data point a second over the whole sim and brought about 1000 data points in.
Another approach was to use a programme to write an XML object file which Hippo could then import into SL as a single object. That gave us a nice 1000 object cube (see below), but was again a bit cumbersome, particularly is you wanted alignment and positioning with the sim itself.

We then started looking at RegionModules in OpenSim, as they appear to be th sensible solution, but it looks like they've been borked for several releases, and we'll have to wait for 0.7.1 for them to work again.
So the latest work has been using LibOMV to control a bot and get the bot to build the points. We were very pleasantly surprised to find that the bot can rez an object anywhere in the sim, no distance limit, so reading a data file and plotting points became almost easy. A shot from a test run is shown above, the bot plotting points every 0.5m across the sim at a rate of about 10 points per second. Admittedly it only got to just over 4000 points before it gave up, but that was on my laptop. Over the next weeks we hope to get to reliable plotting of 10,000+ data points. We'll keep you posted.
By the way the terrain file is an outline of the UK we brought in a while ago - combining a RAW file like that with some 2D overlay textures and the data plotting and we begin to have the beginning of quite a nice system.