Wonderland Wednesday – Nanjing Showcase

August 9, 2010

We have a special Wonderland Wednesday planned for this week. Jiang Yufei from Nanjing University in China, who recently contributed the two-part WonderBlog article on the XLand 3D Blog (part 1, part 2), will be showcasing some of the Module Warehouse contributions resulting from this project.

Nanjing University Piano Module

Nanjing University Piano Module

To try to accommodate people in different time zones, we have planned to run this session twice, once at 9am US Eastern time and once at 9pm US Eastern time. The two Facebook events provide a link for easily converting this time to your local time.

Nanjing Showcase – First Session

Nanjing Showcase – Second Session

I hope you can join us for one or the other of these sessions.

If you have a Wonderland module you would like to showcase on the community server, please post a comment here, contact me via email (nicole@openwonderland.org), or post a message on the Open Wonderland Forum.


XLand Modules

July 26, 2010

This is part 2 of the guest blog post on Xland, the 3D blog project from Nanjing University in China. In case you missed it, you can find Part 1 – Xland 3D Blog – here.

Xland Module Highlights

By Jiang Yufei, Nanjing University

Xland provides users with colorful modules, elements, and gadgets that provide infinite ways to assemble content for showcasing a blog host’s talents. Here are some of the ways users can customize their 3D blog.

Piano

The Piano module allows you to use the computer keyboard to play mellifluous music and share it with all the friends in your room.

Piano module
Piano module

We use JFugue to implement the mapping between key and note. Using the same mechanism, we plan to develop saxophone, trumpet, cello, and others until we can form an orchestra.

Tour Rocket

The Tour Rocket is huge! This splendid module will shock visitors when it is inserted into the world.

Tour Rocket
Tour Rocket

Utilizing a model of the Saturn V, this module gives anyone who stands on the platform at the bottom of the rocket a 100-second flying experience. During the elevation, you can see the world from above for a fabulous view.

Static Decorations

To help users build rooms with different styles, we supply different kinds of pre-made, customizable objects. For example, beds, tables and lamps. These all are static objects. For each type of object, bed, for example, we  supply several styles for users to choose from.

Bed module
Bed module

Different users may use different beds and different lamps. Only in this way may users feel they are unique. We put beds, tables, lamps and other furniture or artifacts like that into modules and we call them static decorations. Once a static decoration is inserted into host’s room, the host can choose different types of room decorations through a menu. The server remembers what the host’s favorite style is and renders the correct model in the scene.

News and Weather Forecast

The Weather Forecast and Rolling News are implemented as panes on the heads-up display (HUD). We display the information after parsing the weather and news XML source.

News Feed
News Feed

Particle effect

We add the particle effect to at least four modules including the real-time weather module, the tour rocket, the piano, and the portal.

Particle effect applied to different objects
Particle effect applied to different objects

Let’s take the real-time weather module as an example. This module synchronizes the in-world weather with the real-world weather. When snowflakes waft outside your real window, it also snows outside the window of your Xland room, as you can see demonstrated in the Xland video trailer. A previous WonderBlog article about a way to implement a snow effect inspired us; Douglas Finnigan, the author of that guest blog post, developed his snowflake particles using Groovy. Since we weren’t familiar with Groovy, we studied JME’s particle system and decided to use ordinary Java to create our particle effects. It turns out that JME provides a simple and powerful way to create particle effects. We simply needed to set some parameters and JME handled creating and managing the particles for us. All related classes are located in package com.jmex.effect.particles. The essential mechanism of JME’s particle system is its ParticleMesh which plays two roles in the class hierarchy. First, it is a child of Mesh class. This means it can be attached to any Node. At the same time, it is a particle system. You simply define attributes of particle emitter and add influences to particles, then update and render them in world. This mechanism gives you any particle effect you want.

New Camera Collision

In order to solve the problem of the camera colliding with geometry when an avatar turns a corner or gets too close to a model, we modified some of the camera collision code in the Wonderland core to correct these issues. (Note that some of these bugs have now been corrected in the official Wonderland release.) If you are interested in knowing how we solve this problem in our own way, please refer the link below which gives a brief technical description on this.

Photo Album

As we know, users can drag-and-drop jpg, png and gif images directly into a Wonderland window. This meets most requirements, but for a 3D blog, we wanted visitors to be able to preview a set of pictures rapidly using a series of thumbnails and then choose the ones they want to view. Furthermore, authority control was an essential concern—we couldn’t allow a visitor to drag-and-drop pictures into someone else’s space. Only the owner of a photo album can upload, delete and modify the album. Based on that, we created an alternate mechanism for uploading photos that addresses these issues.

Photo Album
Photo Album

A key part of the Photo Album module is its uploader. We use some tricks to reuse Wonderland’s intrinsic communication mechanism between client and server. Because of the limited length of one message, we divide the photos into many pieces and deliver them with ID respectively. Then, on the server side, we reconstitute the image according to the IDs. Due to the reusability of this technology, we can apply this mechanism to modules that allow people to easily and dynamically replace textures with local pictures. For instance, we apply this technique to changing wall paper in a host’s room. According to the testing we have done, this mechanism works quite efficiently and did not require any core code changes.

Blog Editor and Viewer

The Blog Editor and Viewer uses a mechanism somewhat like the Photo Album, but since text delivery is much less costly than images, it is even easier. This service is provided via two separate modules corresponding to the editing part and reading part respectively. It is simple for a guest to figure out how to use the reading panel. They simply have to click on a title of interest from the list. The editing parts is only accessible in a host’s room. To use it, the host left clicks on “the big book” model which represents the user interface of this function. An edit panel, implemented as a HUD pane, pops up for the host to write down what’s on his or her mind.

Blog module
Blog module

Music Player

“Music is what feelings sound like.” Hosts can play a piece of music in their cute room to create atmosphere. Every entry in the playlist stored in the database contains a unique internet address of a piece of music. We implemented the buffering and sharing, at the same time, let Jlayer handle how to play them.

Music Player
Music Player

Authority Control

Authority Control is the basis for the whole of Xland, guaranteeing the normal performance of the system and keeping order in the whole virtual world—no authority control, no Xland. For any blog, the editor, reader, photo album and music sharing constitutes the skeleton and the core set of the services, all of which deeply rely on the authority control. Our basic idea is to use cell IDs as the primary basis to judge if someone has the appropriate authority to access the content.

Motion Movie Recorder

The Motion Movie Recorder is a set containing two modules—flying movie recorder and circle movie recorder, both of which are modified versions of the existing Movie Recorder module. When we created our demo, we found that having a static movie recorder in Wonderland is fine, but not sufficient. We also wanted some movement. We made two new versions of movie recorder, one that moves straight ahead and one that moves in a circle, rotating at the same time to keep the lens facing the centre of the circle.

Motion Movie Recorder diagram
Motion Movie Recorder diagram

To use it, users click on the Motion Movie Recorder and it moves following the specific pattern. We hope these movie recorders will help you make your own awesome demo videos of your Wonderland worlds, or that you will simply using them to make a 3D film.

Circle Movie Recorder
Circle Movie Recorder

Database and Modification in Wonderland Core Code

We have uploaded almost all our modules to Open Wonderland Module Warehouse. But besides that, we also open all the details of the schema of our database and offer all modified core Wonderland code and the methodical guide to instruct you on configuring your own environment. Here are the links.

Final Thoughts

We designed this set of modules with the goal of making Xland a complete solution for building a 3D blog system in Wonderland. Here I want to thank everyone who has supported us: our mentor Professor Zheng Tao, without whose instruction we couldn’t finish such a project; Nicole Yankelovich, the Executive Director of the Open Wonderland Foundation, without her encouragement this article couldn’t exist and XLand couldn’t be known by so many people; and the Wonderland team, because of  their remarkable work, Wonderland is such a extensible project with brilliant software engineering where we can release all our imagination in this virtual land.

If you are interested in more information about Xland, please contact:

jjsahalf@gmail.com
jiangyufei07@software.nju.edu.cn

Jiang Yufei


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:

jjsahalf@gmail.com

jiangyufei07@software.nju.edu.cn

Jiang Yufei


Follow

Get every new post delivered to your Inbox.

Join 56 other followers

%d bloggers like this: