Wonderblog

Project Wonderland Virtual World Toolkit Blog

                 
 

Flickr Friday


One of the things the Wonderland team is working on is a new default world. The MPK20 world has been with us since the start of the project and it's overdue for a make over. Among the things I'd like to see is a world which is much more dynamic, interactive and customizable. This brave new world will be the stage for our cool new avatars in 0.5.

Unlike other virtual worlds, Wonderland is written entirely in Java, so we have access to a vast library of Java classes and applications with which to extend the world. The Music In Wonderland demo is a great example of how we were able to create a mashup of a web service (magnatune.com) with a compelling 3D audio/visual visualization. This is just the start. Many community members see the potential and are busily designing and building their own virtual world applications.

These applications are really exciting, and are certainly dynamic, but what about the world itself? What can we do to make the world itself more compelling?

One of the things that has always bothered me about the MPK20 world is that the art on the walls and the standalone posters is baked into 3D models. If you want to change a picture you need a 3D modeling tool. That's unreasonable. Users ought to be able to control attributes of their world, such as wall art, without having to get under the covers and learn a sophisticated 3D modeling tool. What we need is a "poster" app which you could just click on to change the picture.

Serendipity

I was talking to a member of the Wonderland community recently and she asked me how difficult it would be to integrate a web service with Wonderland. This got me thinking. Maybe I could build a poster app by integrating with a web service?

I knew that Flickr has a web service API, so that seemed like a good place to start. The first step would be to build a Java wrapper for the Flickr web service. It turns out that there's already one, called flickrj which provides a nice Java abstraction for the Flickr RESTful web service.

Next, I'd need a way to render an image onto a 3D object. Fortunately, Wonderland provides an application framework for 2D applications (check out AppWindowGraphics2DApp). This framework is used by Wonderland's collaborative apps, including the PDF Viewer, Video Player and VNC Viewer. It provides a 2D canvas you can draw on, a frame (complete with a window border), and event handling that maps 3D events onto a 2D coordinate system. And just like Swing, the framework provides convenient paint(Graphics2D g) and repaint() methods. As a Wonderland 2D application developer, all of the tricky 3D stuff has been taken care of for you by the framework. All you have to do is write the application logic and figure out how to render your data in 2D.

Typical developer!

Ooops! Like many developers I started answering "how?", not "what?"

So, to answer the "what?" question, here some back-of-the-envelope requirements I had in mind for the poster app:
  • it should look like a framed picture (not like an application with a big red/green frame)
  • users should be able to search for new images and choose which one to display
  • it should be able to display an image anywhere in-world (it's not statically baked into a 3D model)
  • users should be able to use the app for slide shows
  • everyone should see the same images as everyone else
  • if you load an image and log out, the image should still be there when you log back in again

How?

Wonderland already has an application that fulfills many of these requirements: the PDF Viewer. On the surface, the only difference is that the poster app shows images, whereas the PDF Viewer shows pages of a PDF document.

Starting with the PDF Viewer and with the help of flickrj I had an application capable of displaying images from Flickr within a day (drop me a note if you'd like to learn more about how I did this).

As I explored the flickrj API, I discovered a rich set of interfaces for querying Flickr and retrieving images. I chose to support several ways of searching for images:

Search dialog

A Flickr search can return multiple pictures, so I needed a way to display the results. I decided to display the images in a grid:

Grid view

If you click on an image in the grid then that image is displayed full size:

Image view

and if you click it again, you toggle back to grid view.

Getting more dynamic

I now had an application that did everything on the requirements list, but I wanted something that would make the application more dynamic. While browsing the flickr API documentation I discovered the ability to search for recently changed pictures. If you go to flickr.com/photos and keep refreshing the page you'll see the latest pictures that people have uploaded. I was astonished to learn that Flickr gets thousands of images uploaded every minute. Last time I looked it was about 5,000 images per minute. That's over 80 images per second! I was hoping to display all the images as they were uploaded, so you could see Flickr's "heart rate", but this proved impractical. Even if you had the bandwidth to download 80+ images a second, all you'd see would be a blur. So, I added a new feature, which was a timed search, which displays the most recently uploaded image every 5 seconds. This turned out to be a really compelling feature. It's quite addictive to watch pictures being uploaded and not knowing what you'll see next.

This application definitely satisfied my desire to bring "dynamic, interactive and customizable" content into Wonderland. I was quite surprised how compelling it was just to add new art to the world.

If you're curious to see the app in action, check out the video.

The source code is checked into the wonderland-modules-incubator project:

https://wonderland-modules-incubator.dev.java.net/source/browse/wonderland-modules-incubator/trunk/src/modules/apps/2d/flickrshow/

If you want to use it, you need to obtain your own Flickr API key. Here's a good place to start:

http://developer.yahoo.com/flickr

The Flickr API key goes in the WFS file. Where else? ;)

We're really collecting a nice collection of apps in the incubator project, including Jordan's auto-teleporting Portal app, the Batik SVG browser I built, and the hot off the press HTML Viewer that our WPI interns are building. Come join us in our wonderland-modules-incubator sandbox and show off your 2D and 3D Wonderland applications!

 
 
 
 

Wonderland 0.4 Released!


After more than 8 months of work, the Wonderland team is happy to announce our 0.4 stable release. You can find the release here:

Download Wonderland 0.4

This release is focused on adding new applications and capabilities to the existing Wonderland platform, including:

  • New multi-user applications: PDF viewer, video player, VNC viewer
  • Enhanced audio connectivity with dial-out and dial-in
  • Web based administration, including a web-based world builder
  • Major stability improvements, especially in larger worlds and with shared applications
As the 0.4 release manager, I'd like to personally thank the team for their hard work and endless testing to track down those last few complicated bugs. I'd also like to thank the community for their invaluable feedback through the process.  Of course, the best reward is seeing all the cool things people are doing with Wonderland!

 
 
 
 

A web browser for Wonderland


In Sun Labs, we know the summer is really ending when our intrepid interns start heading back to school.  This year is unfortunately no exception, and our current intern Antonio, is heading back to New Mexico.  While we have more interns starting soon, we are certainly going to miss Antonio.  Before he leaves, we've asked him to post an update on his work this summer.  This guest post was contributed by outgoing intern Antonio Arredondo, a PhD student in computer science at New Mexico State University.

Today completes my internship at Sun Microsystems on Project Wonderland. I was tasked with creating a low-end client for Project Wonderland, and that is what I have accomplished (a working version).

I took the Web 2.0 approach of creating a AJAX application that would interact with the Wonderland server, via a web server (Glassfish/Tomcat). I started by looking for a AJAX framework that worked with Java, and found DWR. This project allowed me to use Comet (long lived connections) to send information between my web client and the Wonderland server.


Web UI

Once the communication framework was chosen, I created a simple web page that would handle the map view. The map view uses the idea of having a over-head view of the world, and placing an icon to represent each person logged in. As the person moves, the icon gets updated to the new position.

Once this was finished, I decided that making a mobile version would be an easy extension. The mobile version consists of making the map view fill the entire web page, while keeping the menu at the very top. I was able to accomplish this by writing specific CSS and Javascript for the mobile browser, while maintaining as much common code for both desktop and mobile browser.

Wonderland has now become more accessible to those users that do not currently have the necessary 3D hardware to run the GUI client. The web client, both desktop and  mobile version,  represents another step in Project Wonderland's goal of providing a scalable multi-user environment.  If you would like to try it out, you can check it out for yourself.  Just check out the lg3d-wonderland and wonderland-modules source using the "webui" branch.

I want to thank Sun Microsystems for the opportunity along with Nicole, Paul, and the rest of the Project Wonderland Team.

 
 
 
 

A Virtual Academy In Wonderland


It seems like it is nearly every day that we learn about a group using Wonderland in a novel way -- and today's guest blog entry by Chris Harris from VEGA is no exception. In one aspect their work, they control the appearance of a 3D model airplane inside Wonderland by an application that runs externally. Well, I'll let Chris say more about it...

Guest blog contributed by "A Virtual Academy" principal training designer Chris Harris from VEGA

A Virtual Academy in Wonderland

As a provider of bespoke training solutions, VEGA has a reputation for delivering solutions that save money, improve capability, and transform training. One of the services that we provide at VEGA is the creation of training material, from straightforward PowerPoint slides right through to high fidelity simulations. Our clients are regularly talking about, and experimenting with techniques to deliver this training remotely. While our existing technology already allows remote delivery, there is a lack of classroom atmosphere and instructor-student and student-student relationships can suffer. One way to overcome these problems involves a virtual academy: a meeting place in a virtual world where the training can take place in a collaborative way. (Read about our vision here).

Free-Play Simulations

When you're learning how to fly a satellite or maintain a fighter aircraft, it can be difficult to get your hands on the real thing. The people who operate them tend to be wary about letting some newbie play around with millions of dollars of high-tech hardware. That's understandable, but it makes training the next generation of scientists or technicians difficult.

Here at VEGA, our solution is to produce a simulation of the equipment instead. This is a computer program that runs on a standard desktop PC. It behaves in the same way as the "real thing" so the learner gains the experience they need in operating controls, following procedures, or diagnosing faults. This approach has many advantages. For a start, a simulation is much less expensive to provide to your students. If you need to do so, you can give each student their own system. You don't need to try fitting the real equipment in the classroom, and it's far easier to move a computer down the hall than it is moving a satellite or a gas turbine engine. If the learner does something that breaks the simulated version of the machine, you just start over.

Virtual World and Training Simulation Parallels

When I first started finding out about virtual worlds like Project Wonderland, I saw a lot of parallels with the simulation approach. Each user moves around in a world which behaves in much the same way as the "real thing." People gain experience from their activities in virtual worlds like they do in real life. What happens in a virtual world can be as far-removed or as faithful to reality as it needs to be. Each class can have their own "room" - which can be any environment you can think of. And like simulation, creating and travelling to a virtual world keeps your costs down: you can get your students working together in a virtual classroom, even if they are on different sides of the Atlantic.

If the two approaches had all these things in common, what would it be like if we combined them? VEGA is always looking for ways in which new technology can help our clients. After chatting to my colleagues Darren Harvey and Bernd Hoehner, we started working on a way to link our simulations to objects within a virtual world. We picked Wonderland for a number of reasons - I'd seen Rupert Key talk about the project at Virtual Worlds Europe in London in 2007; it's open source, which means we could look at the code; and it's written in Java, which meant our programmers could get to grips with things quickly.

Project Wonderland

Almost immediately, we were using Wonderland as a venue for virtual meetings between our offices in Bristol and Welwyn Garden City in the UK. Other people in the company noticed, and interest grew quickly.

While the avatar system on Wonderland 0.4 is customisable and easy to use, the results seemed to be too cartoon-like for many of our potential users. We found that a lot of people we showed it to asked if it would be possible to make their avatars look like them. We came up with a simple solution which added a larger head over the top of the Wonderland avatar. We then mapped a specially prepared bitmap on to this object to give us a fairly convincing representation of the real person. I was surprised how important head shape is when you're trying to make an avatar look convincing. People's heads come in many different shapes and sizes, and "one size fits all" really isn't good enough when you're aiming for a realistic presence in-world. Having said that, the results we came up with in a very short space of time are perfectly recognisable versions of my colleagues. Still, we’re looking forwards to getting our hands on the new avatar system in version 0.5!

If you're involved in training, you've probably come across Learning Management Systems (LMSs). When we set out to build our virtual academy, we initially thought of it as an LMS you can walk around inside. We customised the environment and provided a set of formal classrooms which could be used for training sessions, with an entrance lobby that would help direct students to where they needed to go.

 

VEGA Virtual Academy Map

 

But as we worked with Wonderland, we expanded our approach. We added equipment models to the main hall, and enlarged the collaborative working areas so users could get together to share information and plan activities.

Most importantly, we wanted to see if our simulation technology would fit inside the Wonderland environment. Would it work? Would it be useful?

Virtual Academy Demonstrator in Project Wonderland

In a short time frame, Bernd had imported one of our aircraft models into a classroom in Wonderland and linked it with a basic aircraft simulation running as a separate application on a simulation server at our company headquarters.

A window in Wonderland displays the user interface: an aircraft cockpit and controls. The simulation models the behaviour of a combination of systems including the hydraulics, fuel, avionics, engines and so on. Meanwhile, the aircraft model in Wonderland is passed the current state of various simulation parameters and responds accordingly.

 

VEGA Virtual Academy

 

To put this more simply: if you move the landing gear lever in the simulation, the wheels on the Wonderland model will go up or down. Push the stick, and the ailerons move. Kick the pedals, and the rudder responds. It was a great moment seeing this happen in the virtual world we had created, and everyone we showed it to got excited about it too. The next thing I knew, we were demonstrating it at the annual ITEC show in Stockholm, Sweden - and the reaction there was extremely good.

We continue to use Wonderland for meetings, and I'm regularly asked to demonstrate our virtual academy to visitors. Given my experiences so far, I'm convinced there's a strong future for the technology, and I'm looking forwards to seeing what future releases of the project bring us!

Chris Harris
Principal Training Designer
VEGA

 
 
 
 

Project Wonderland v0.4 - Release Candidate 1


The Project Wonderland team is pleased to announce Release Candidate 1 of Version 0.4. This release represents a near-final version before the official v0.4 release is made. Community members are invited to download and test this version and report back any problems they find!

The Release Candidate 1 of Version 0.4 adds a number of new features over Version 0.3, including enhanced audio and telephony support, a PDF viewer, VNC viewer, video player, cone of silence, microphone platform, whiteboard, and in-world audio and video recorders. Release Candidate 1 of Version 0.4 also adds support for several new gestures (nodding, waving, and pointing) and also a single web page for launching the Wonderland client and world builder.

Enjoy! 

 

 
 
 
 
 

« August 2008 »
SunMonTueWedThuFriSat
     
2
3
5
6
7
8
9
10
11
13
14
16
17
19
20
21
22
23
24
25
26
27
28
30
31
      
Today

[This is a Roller site]
Theme by Rowell Sotto.
 
© wonderland