Printscreen Plugin with a Photo Gallery

August 21, 2013

By Dominik Alessandri & Christian Wietlisbach
Hochschule Luzern Technik & Architektur

As part of our bachelor thesis, along with our Kinect module described last month, we developed a printscreen plugin for Open Wonderland. When the plugin is installed on a server, all connected users can choose if screenshots should be saved locally or on the server. If saved on the server, the pictures can be displayed in an automatically updated photo gallery. The update of the picture gallery is made with a shell script which is running as task in the background on the server. We had to implement it this way, as we did not find a way to save directly in the ‘docRoot’ folder in the ‘run’ directory. The shell script uses rsync to keep these two folders in sync.

When a user is connected to a server with the printscreen plugin installed, he can display the controls of the plugin by selecting ‘Window -> Printscreen Folder’:


The Printscreen Folder dialog allows the user to choose where to save the images:


When pressing the ‘o’ key, a new screenshot will be taken and either saved locally or on the server. The reason why the key binding was done with ‘o’ is very simple: The printscreen key is not forwarded from the client to the module. The capture of the key event is done on a level before the module gets the event. On this higher level, the “Print Screen” key is filtered and the module doesn’t get any event. Instead the message “Key is not allowed” appears. Version 3 of jMonkey will support taking screenshots by default, making it easier to capture the screen.

On the server-side, the screenshots are saved in /.wonderland-server/0.5/run/content/images/screenshot/. This folder should be created by an administrator when installing the plugin.

To run the photogallery, the content of the file ‘’ needs to be extracted to /.wonderland-server/0.5/run/docRoot/lightbox/. This photo gallery shows all images stored in /.wonderland-server/0.5/run/docRoot/screenshot/. To update the photo gallery, we need a background task which copies the files from /.wonderland-server/0.5/run/content/images/screenshot/ to /.wonderland-server/0.5/run/docRoot/screenshot/. For example, the shell-script ‘’ can do the job.

An example of this photo gallery can be seen here:


You will need the following files to get the printscreen plugin running:

Avatar Control with Microsoft Kinect

August 1, 2013

By Dominik Alessandri & Christian Wietlisbach
Hochschule Luzern Technik & Architektur

As part of our bachelor thesis, we developed a module called ‘kinect-control’. This module lets you control your avatar by using your body doing gestures.

This module mainly runs on the client but necessary information will be transferred from the server to the client as needed. All the user needs to have is a connected Kinect device and the Kinect SDK Beta 2 installed. This means the module is only available for Windows x86/x64 clients. All other requirements will be shipped from server to client when logging in. This makes it easy for interested parties to use.

To set up a Wonderland server to use the kinect-control module, the administrator needs to change two files on the server:


These two files must be replaced. The extended files can be downloaded from

These new files contain the DLL 'KinectDLL.dll' which is necessary for the connection between Open Wonderland and the Kinect.

If you are running this module on the client-side, the first thing you need to do is to connect the Kinect device to your Open Wonderland client. This can be done using the kinect-controller dialog. After installing the kinect-control module, in Wonderland, click on 'Window -> Kinect Controller':


The dialog contains two buttons: 'Start Kinect' and 'Stop Kinect':

If you have a Kinect device connected to your PC, you can click the button 'Start Kinect'. After a while, your Kinect Device moves to the initial position and the window displays 'Connection Works':


You can adjust the angle of your Kinect device by sliding the slider to the desired position:


Now you are ready to move your avatar by using your body. Place yourself in front of the Kinect device and control your avatar as follows:

  • Walk: Just move your legs up and down
  • Turn right: Hold right arm to the right side
  • Turn left: Hold left arm to the left side
  • Fly up: Hold right arm up
  • Fly down: Hold left arm up

It is possible to extend the gestures recognized by this module. For this, you need to modify the file 'gesturesBDA.txt' located in 'kinect-control-client.jar' inside 'kinect-control.jar' using the software 'KinectDTW'. After this file contains your new gesture, you need to map this gesture to a keyboard-input.

The file 'keyMapping.txt' contains the allocations from gestures to keyboard-inputs. It is located on server in /.wonderland-server/0.5/run/content/modules/installed/kinect-control/client/. The structure of the file is as follows:

[Name of gesture]=[isMouse[0/1]];[keyCode1[decimal]];[keyCode2[decimal]];[time[millis]]

Example 1:

When gesture @Run is recognized, press key 16 (shift) and 87 (w) 2.5 seconds long.

Example 2:

When gesture @Walk is recognized, press key 87 (w) for 3 seconds long.

For a list of all keycodes you can consult

You will need the following files to get the kinect module running:

A video of the running module can be seen on YouTube:

SIPping Wonderland

April 6, 2012

By Bernard Horan

One of the great features of Open Wonderland is its telephony support. In this blog post, I provide a few examples of standard VOIP clients that use SIP to call into an Open Wonderland server. It may seem odd to use an impoverished audio connection to a rich immersive 3d environment, but there are many occasions when users wish to participate in meetings from locations or using devices that are not able to provide the full Open Wonderland experience.

In the video below, I show some examples of how to use two of the many SIP clients to call into an Open Wonderland server. The first of these, Jitsi, is an open-source Java-based client that can be used on a regular desktop/laptop. The second client, 3CX, is available for iPhone (iOS) and Android platforms. The video provides three examples:

  1. Using Jitsi to connect, registrar-less, to an Open Wonderland server running on a local network
  2. Using Jitsi to connect, authenticated, to an Open Wonderland server running on a host on the public internet
  3. Using 3CX installed on an iPad to connect, authenticated, to the same server as in (2). (The settings for the 3CX client are provided at the end of this post.)

These examples augment the existing video that shows how to use a virtual phone to call out via a PBX. There is nothing special about the Open Wonderland installations that I’m using for the demonstrations. The only requirement before producing the examples was to insert a Virtual Phone into the virtual world using the standard ‘Insert Object…’ dialogue. In detail:

  1. The first example uses a source build (rev 4820) of Open Wonderland, with no authentication enabled, running on my home local network.
  2. The second and third examples both use a binary installation (rev 4816) of Open Wonderland, with authentication enabled. The installation is hosted on a public internet-facing server at the University of Essex that has its firewall configured according the the Open Wonderland firewall instructions.

Many thanks to Morris Ford for his guidance on using SIP.

For information about the settings I used to connect the 3CX client, see the figure below.


Styled Sticky Notes

September 8, 2011

Matthew Schmidt By Matthew Schmidt
University of Missouri

The iSocial project is pleased to announce our first open source release: Styled Sticky Notes.


Styled Sticky Notes is an idea that was proposed in May of 2010 as a mashup of the poster module and the sticky notes module. The idea was to come up with a way to present styled text and graphics and to allow for text input on a sticky note. Lots of good feedback was generated on the forum from the proposal, and the design was changed significantly. The result of the design changes was a set of sticky note variations that would support display and editing of styled text.


The Wonderland iSocial Styled Sticky Note module expands on the existing sticky note module by adding two new types of sticky notes. The existing sticky note module has sticky notes (simple text boxes where you can write plain text notes) and task sticky notes (which track the status of a to-do item). The new sticky note module provides Styled Sticky Notes (simple text boxes where you can write styled text notes) and Sectioned Sticky Notes (sectioned text boxes where you can write styled text notes in the top portion and plain text notes in the bottom portion).

The Styled Sticky Note has controls for changing the style of text in the note. To change the style of text in the note, click and drag to select the text you wish to style, then select one of the style buttons. See figure below.

Styled Sticky Note Annotated

The Sectioned Sticky Note has controls for changing the style of text in the note only in the top panel. Text in the bottom panel is not able to be styled. To change the style of text in the note, click and drag to select the text you wish to style, then select one of the style buttons.

The intended purpose of Sectioned Sticky Notes is for providing a way for users to respond to queries in-world. A query is entered and styled in the upper panel, and the user provides a response in the lower panel. An example is provided in the figure below.

Sectioned Sticky Note

The iSocial Styled Sticky Note module can be downloaded from the module warehouse. Its source can be downloaded from the unstable module repository.

We hope that the community finds these extensions to the sticky note module useful. Please feel free to provide feature requests and bug reports on the Wonderland forums.

Google 3D Warehouse Integration

August 19, 2011
Alexios Akrimpai
By Alexios Akrimpai
University of Essex, UK

Hi everyone, my name is Alexios, and I am (was) a member of Frontrunners project for Open Wonderland (OWL) at Essex University under the supervision of John Pisokas.

My project was to develop a module for OWL that will help virtual world designers to quickly and conveniently browse 3D objects from Google Warehouse (GW) and manipulate them in the ‘world’.

The functionality of the module includes:

1.      Easy search and page navigation within the Wonderland client.

2.      Download and install 3D objects in Collada format (Google SketchUp not yet supported)

3.      Save and browse 3D models locally

4.      Model details available on selection

5.      Search history

The internal design of the module is very simple. GW provides an RSS feed that is used inside the module to search for the models and all their info (e.g. author, description, download url, and etc.). Once this info is available, the software displays it in a nice format for the user, and allows easy manipulation (e.g. download, install) of the models.

The only major drawback of the module at the moment is that Google SketchUp models are not yet supported. This may change in the near future, when I, or someone else, may develop a ‘SketchUp to Collada’ independent (light) converter, or support to the SketchUp format directly from OWL.

The source code of the module is available in a github repository called Google-Warehouse-Explorer as well as in the Wonderland unstable module directory. I am pretty sure that the module contains a few small bugs that I missed. Also, I am planning some improvements for the next version. Please do not hesitate to let me know of any errors found, any improvements, and/or additional futures that you think will make it more useful and user friendly.

Next Wonderland Wednesday Project

May 31, 2011

It happened without any fanfare, but the Wonderland Wednesday “Subsnapshot” project has been completed!

Test of subsnapshot "export" command

Test of subsnapshot "export" command.

As soon as the module is added to the Module Warehouse, I’ll post more details on how to use the new feature. In the mean time, please join us for tomorrow’s Wonderland Wednesday session to help decide on the next group project:

Wonderland Wednesday New Project Idea Session

Even if you are not a developer, we would value your input in terms of ranking the many great ideas that are currently under consideration. In last week’s meeting, we started the process of reviewing possible project ideas. Using Bob Potter’s Card Wall application, we started reviewing and annotating potential project ideas.

Annotating and organizing project ideas on a card wall.

Annotating and organizing project ideas on a card wall.

You can see these ideas in text format on the Community Wiki.  In tomorrow’s session, we will finishing going through the ideas with the goal of prioritizing them and hopefully deciding on one to pursue.

Wonderland a twitter

July 28, 2010

Continuing with the theme of increased internet integration as outlined in my last blog post, I’m pleased to announce the addition of a Twitter Viewer module to the Wonderland Module Warehouse.

It uses Twitter4J–a Java library for the Twitter API, and relies on the existing Twitter search operators. It requires no authentication, and can be installed and used by any user logged in to Wonderland. The user is able to enter a search query and the resulting tweets are added to the virtual world in two ways: firstly in a list widget displayed in the heads up display; and secondly as animated bubbles floating up from a 3D model of a pigeon.

Here’s a brief video of the Twitter Viewer in use.

As mentioned in the video, the query is performed every 30 seconds and will continue executing even if no user is logged in to the world. All the results of the query are presented in the list widget next time a user logs in. The list widget (actually a table widget) will hold a maximum of 99 tweets, after which it discards old tweets.

The module is now in the Module Warehouse and the source code in the Positive Spaces SVN repository. If you take a look at the source, you’ll see that this module includes three features of Wonderland:

  • Animation of tweets, using the Trident animation framework
  • Connection from the Wonderland server to an external service provider, in this case Twitter, via the use of the Darkstar service layer
  • A periodic task to execute a query, retrieve the results and forward to clients.

In my last blog posting, the instructions for checking out the source code were cropped. Here they are in full: inside a terminal window, execute each of the following command as one line (when prompted, use ‘anonymous’ as the username and a blank password):

% cd ~/src/trunk
% svn checkout
UEssex/wonderland-modules +spaces-modules

This will create a directory called +spaces-modules that is a sibling to the wonderlandand wonderland-modules directories.

Xland 3D Blog

July 23, 2010

I hope you will agree with me that this tw0-part guest blog post describing the work of a group of students in China is remarkable in many ways. First, over the course of a single semester, these four students implemented over 15 Wonderland modules! Some of you may have noticed the large influx of new modules contributed recently to the Wonderland Module Warehouse, most of which are an outgrowth of this Xland project. In addition, they have produced THREE demo videos. In part two of this article, which will be published in several days, Jiang Yufei describes each module and provides links to not only the source code for most of the modules, but also a considerable amount of technical documentation. To me, perhaps the most astonishing thing is the quantity of English-language text the students have produced, included this lengthy, but very informative, guest blog post. Please join me in congratulating these students on their fantastic accomplishment and also thanking them, their professor, and their university for this generous contribution to the Wonderland community.

What is Xland?

By Jiang Yufei, Nanjing University

We designed the Xland project as a 3D immersive blog. Xland was part of the CHIPS (CHina Innovation Program for Students) program sponsored by Sun Microsystems and the Chinese Education Department. Xland received a CHIPS “excellent project ” award. Our team, working under the direction of our mentor Professor Zheng Tao, is from Nanjing University in China and included Jiang Yufei, Gao Ruizhi, Feng Tao and Huang yuan.

This article will briefly introduce you to the chief features of Xland. The video “Xland based on OpenWonderland trailer” is a promotional video which gives you a first impression of our work.

Parts one and two of the video “Xland based on OpenWonderland Demo”, guide you through the details of this virtual space with 16 minutes of explanation and vivid animation to show you how the system works.

Part 1

Part 2

Why a 3D Blog?

According to psychology theory, all user interface and online operation should simulate operations in everyday life, like the e-book tries to simulate the experience of reading a real book and the Macintosh desktop copies the way we put items on a desktop in the real world. You can think of a blog as our online domicile. A 2-dimensional display cannot adequately simulate the sense of house or home. A 3D space, however, has the potential to improve the users’ experience of reading text logs, viewing pictures, and appreciating music.

All social networking systems have six basic properties: identity, relationships, presence, sharing, conversation, and on-line activities. Specific social networking applications tend to concentrate on one or two features. For example, Flickr and YouTube focus on sharing, Facebook focuses on identity and relationships, and Twitter focuses on presence. We noticed that on-line activities haven’t been adequately exploited partly because of the difficulty in representing them. With the exception of on-line games, we lack ways to socialize on-line. We believe a 3D immersive blog can improve the experience of on-line activity.

The essence of a blog is to show a person’s distinct personality. It is often difficult to do this using language alone. In the real world, we can get an impression of a person by observing his or her gait, apparel, and rooms’ decor. In contract with an ordinary blog, our 3D blog provides hosts more freedom and individualization, allowing them to change almost all aspects of their 3D space.

How does this blog system work?

From the point of view of a user, here is an overview of how the system works:

  1. After the server starts for the first time, there is only a Public Zone. No 3D blogs – represented as small rooms – exist yet in this world, since there are not yet any registered users.
  2. Once a user registers, he or she logs in to the world and his or her avatar appears in the Public Zone. We created the Public Zone model from scratch, using Google Sketchup.
  3. When the user walks through a portal in the public zone, the system automatically initializes a new, empty room (but where? Don’t worry, we will explain below) and the user emerges from the portal in the center of this room.
  4. To leave this room, the user just walks through the door of room, which leads back to the public zone.
  5. Even when the user exits Xland, the system maintains the room so that when they log in again and go through the portal, they can continue their work.
  6. You can easily visit your friends’ 3D blog by clicking on the name of your friend in the Friends panel. With the help of this panel, you can add/delete friends, send/receive messages, and share music, pictures and logs with friends.
XLand Friend List

Friend List

Note that we put all rooms under the horizon of the public zone, so users cannot see where these rooms are. When a server is filled with a maximum number of rooms, we can take advantage of Wonderland’s federation capability to create a new empty world on a different server to accommodate more rooms as new users register to create 3D blogs.

Layout of XLand World

Layout of Xland World

For more information on Xland, please contact:

Jiang Yufei

Open Wonderland on FLOSS Weekly

June 11, 2010

I just wanted to let everyone know that I did a video podcast interview on a program called FLOSS Weekly:

FLOSS Weekly 123: Open Wonderland

FLOSS is an acronym for “Free Libre Open Source Software” and the show is hosted by Randal Schwartz. I was pleased to discover that the co-host, Aaron Newcomb, is himself a former Sun employee who had experimented with Wonderland while at Sun. He asked a question about Darkstar during his introduction to the show, which I realized on listening to the show, I neglected to answer. I thought I would take the opportunity do it here.

Project Darkstar, which is game server infrastructure that provides a platform for scalable communications and persistence, was a parallel project to Wonderland in Sun Labs. In fact, it was the Darkstar team that got us started. In 2007, they were looking for a way to demonstrate their server technology. They knew that our Collaborative Environments research team had been inspired by a challenge by then VP for Eco Responsibility Dave Douglas to “build Sun’s next building in the virtual world.” We had gotten as far as forming a reading group to investigate the use of virtual worlds for business collaboration when the Darkstar team asked us if we could quickly pull together a virtual world demo built on top of Darkstar. They needed the demo in three months for their booth at the upcoming Game Developers Conference (GDC). I’m not quite sure how we pulled it off, but we joined forces with the Project Looking Glass team and created both the Wonderland platform as well as the virtual world called “MPK20: Sun’s Virtual Workplace.” Here’s Karl Haberl, who was the manager for both Wonderland and Darkstar, demoing Wonderland for the very first time in the Sun booth at the GDC conference in March 2007:

Like Wonderland, the Darkstar project has continued to thrive as a community-based open source project since our “liberation” from Sun. The forked version of the code is now known as Red Dwarf.  If you would like more information about the current architecture of Wonderland – which has changed substantially since that first demo version -  and how Darkstar / Red Dwarf fits in, there’s a diagram and a brief architectural overview on our Developer Resources page.

Aaron, I hope that helps to answer your question. And thanks for the opportunity to speak on the show!


Get every new post delivered to your Inbox.

Join 56 other followers

%d bloggers like this: