Project Wonderland v0.5 User Preview 2 (updated)

October 21, 2009

We have just released the second preview of Wonderland 0.5. You can download the release from the Binary Downloads page. Since we have been feature frozen since the first preview, this release primarily contains bug fixes. Check out the Issue Tracker to see a list of all 214 bugs that were fixed since September 14th. There are still over 200 known bugs left to fix, so it will take a while longer to work through all of those and arrive at a final 0.5 release. While not the final 0.5 version, we believe that this release is now more stable, and certainly more functional, than v0.4. On the programming side, the APIs have also been stabilized. We strongly encourage anyone still using 0.4 to move to this second preview release as soon as possible.

In addition to bug fixes, the release contains a few previously unfinished or incomplete features. These include:

Apps on HUD

In Preview 2, you can right click on any 2D application and select "Show in HUD" from the context menu. This places a copy of the application on the glass pane, known as the HUD or heads-up display. In the image below, you can see Firefox running in the world (bottom left). By also placing the Firefox window on the HUD, we can walk around or change camera angles while maintaining a pixel-perfect view of the Firefox window.

Firefox on the HUD

To remove the application from the HUD, you can simply click on the blue Remove from HUD icon or the red X in the window header. This will not close the application in-world, but will simply remove the item from your glass pane.

Go to user

"Go to user," an important feature from v0.4, has finally made a reappearance in v0.5. To use the feature, open the Users list (Window –> Users) and click on the name of the person you wish to find. Then click on the icon to the right of the telephone icon, which the cursor is pointing to in the image below.

Also note that you can change the volume for any user in this window, as well as change how name tags are displayed (right-most icon).

Cone of Silence

Some changes have been made to the Cone of Silence. There is no longer a Cone of Silence item in the Components dialog. Instead, you can add a Cone of Silence capability to any object to turn it into a sound-proof area. The property sheet for the Cone of Silence has been re-designed, providing more options for defining the bounds of the cone. Perhaps the most useful new feature is the ability to "Show Bounds."

This lets you see exactly where the sound proof area is located. In the left-hand image below, you can see what the bounds look like when I select "Use Cell Bounds" from the property sheet. Although the object is cylindrical, you can see from the visualization that the bounds are rectangular. If I used these bounds for the cone of silence, people standing right outside the pod would be included in the cone of silence and be able to hear anyone speaking inside. To avoid this problem, I chose to specify a radius, which gives me a spherical shaped area instead of a rectangular one. By adjusting the size of the sphere (below right), I was able to more exactly match the shape of the pod model such that the cone of silence only activates when avatars step inside the pod.

The new property sheet also allows you to specify if you want to hear any audio from outside the cone.  You might want this, for example, if you are holding private meetings in the cone, but still want to hear the buzz of activity from the surrounding space.

Authenticated Login

In this release, a server can be set up with authentication. The new authentication scheme allows you to configure the server so that any guest may log in, but only authorized users can access the Server Admin console.

See the tutorial Configuring Wonderland Authentication for information on how to set up authentication on your own server.


Although not technically part of the Preview 2 release, I wanted to mention the availability of a new stable module for viewing webcams in world. The Webcam module is available for download from the Documents and Files section of the wonderland-modules open source site. To install this module, download webcamviewer.jar and save it on your computer. Then use the Manage Modules section of the Server Admin console to install the module on your server. The next time you restart the Darkstar server, you will have a Webcam item in your Component dialog (Insert –> Component…). For more information on installing modules, refer to the Managing Modules section of the Web-Based Administration tutorial.

The image below shows the Webcam application running in the world. To switch cameras, right click on the application and select "Take Control" from the context menu. Then click on the Open icon (second one from the left) and enter a camera URL. For example, for this Citron-crested Cockatoo cam in Germany, I entered:×480

For more information, see Nigel’s New Webcam Module forum post.


A Very Spooky Test

October 20, 2009

Yesterday we conducted our second community test of the release candidate for Project Wonderland v0.5 User Preview 2. On the whole, the test went extremely well.

As you can see from the screenshots and video, the test script was based on a Halloween theme. The video should give you a sense of the interaction. During the session, we tested various HUD windows including the Users list, the FPS (Frames Per Second) Meter, and Gestures. The bulk of the test focused on Capabilities, including Audio, Placemarks, Cone of Silence, Clickable Link, and Portal.  During the test we added spooky sounds to objects in the world, including creating a "tomb of silence," we piled into a coffin, and we stepped through a tombstone portal to the "great beyond." In the afterworld, we made good use of our time by creating sticky notes with things that went well during the test and things that went wrong. During this debriefing session we recorded and discussed the various problems that cropped up.

The good news is that most of the functionality worked for most of the people. Of course, as with any test, we did find a number of problems. If you’re interested in the details, the issues are listed in my recent forum post. The worst problem of the day happened near the end of the session when everyone’s sticky notes simultaneously vanished. Although vanishing was in keeping with our theme, the cause of this unintended vanishing was a real mystery. Fortunately, a few us were able to recreate the problem after the test. It had to do with some software cleaning up too vigorously when people teleported to a far-away place like the "great beyond." Once identified, the problem was easy to fix. The other serious issue that surfaced during the test was a shared application "deadlock" problem. The test helped to characterize the problem, which we had seen before. This one is a bit more complex to fix, but a fix is in the works.

Below are some still images from the test. One feature to point out is the Happy Halloween scary face one. This shows a PDF document on the HUD, which is a new feature in the Preview 2 release.

It’s Raining 0.5 Tutorials

October 15, 2009

Eerily coincident with downpours on both coasts of the US, we are publishing a deluge of new and updated Wonderland 0.5 tutorials. You can find links to all of them on the documentation wiki, but here’s a rundown:

For world builders, we have these tutorials: 

  • Assembling Worlds, an introduction to assembling worlds by inserting, moving, rotating, and resizing new components.

Developers should check out these:

  • Working with Modules describes the module architecture of Project Wonderland, the basic structure of a module, and how to deploy a module using the Web-based Administration UI.
  • Writing Client and Server Plugins describes how to write client and server plugins for Project Wonderland, code that runs when either the client or server is first initialized.

Finally, there are some updates on the basics:

How to Make a Skyline for Wonderland

October 12, 2009

In what may be my city-girl roots showing, I feel uncomfortable in a virtual world that has a never-ending horizon. I need the psychological comfort of a skyline. This prompted me to experiment with creating skyline models for Wonderland. Recall from my last blog post, this sand dune skyline:

Sand dune skyline in Wonderland

I thought I would describe how I made this skyline so that those of you out there interested in creating your own models for Wonderland could give it a try, and hopefully share some models with the rest of us.

Preparing the Texture

The first step is to take or find a nice skyline panorama photo such as one of these Death Valley panoramas generously donated to the Wonderland community by MIT Professor and ace nature photographer, Chris Schmandt:

Death Valley Panoramas

Don’t be tempted to use the higher resolution versions of these photos. The texture file size will be too large to perform well. Once you have a photograph, use your favorite graphics editor, such as Adobe Photoshop Elements, to edit out the sky. In Photoshop, I use the magnetic lasso to select the sky. I almost always have to zoom in and add and subtract bits from the selection to end up with an accurate selection of the sky. Then I feather my selection with a value of "1" to make a smooth edge and delete the sky. In Photoshop, the space that was the sky is now transparent (as indicated by the gray checkerboard pattern in the image below). Some tools, like GIMP, require you to "add transparency" to the image to achieve this effect.

Once you have deleted the sky, save your edited photo in a new file. Assuming that your original photo is a partial panorama like this one and not a 360 degree scene, you’ll need to make sure the image tiles properly. To do this, double the width of your canvas, and paste another copy of the panorama into the file.

Then do a "flip horizontal" on the copy. By having the outer edges of the photo be the same, you ensure that the texture will look correct when another copy of the texture is placed next to it.

Carefully align the two images so that you can’t see a middle seam. You may need to do a bit of image editing to remove any odd artifacts at the seam. Finally, save the final image "for the web" in the PNG-24 format.

Before you leave your image editing application, you might want to clip out a small piece of the image to make a ground texture that matches the skyline. In the screenshot at the beginning of this post, you’ll see that I made a sandy ground plane by using a small portion of this panorama photograph.

Modeling the Skyline

Now on to SketchUp. In SketchUp, create a circle at the origin with a radius of 150 meters. Then extrude the circle upwards to create a cylinder. Usually about 12 meters high works well. Then delete the top and bottom circles so you have just the ring.

There’s a trick I use for importing the texture. Create a "scratch" rectangle someplace in the document that is 12 meters high. Import your image as a texture and apply it to the rectangle. Now delete the rectangle. Select the Paint Bucket tool and navigate to the "Colors in Model" or "In Model" category. You will see a thumbnail of your skyline texture. Click on the skyline thumbnail and use the Paint Bucket to apply the texture to the inner surface of the cylinder. You may need to experiment with different sized circles to get the texture to repeat properly.

Dune Skyline in SketchUp

When finished, save the model and then select File –>  Export –> 3D Model… Make sure the format is set to "Google Earth File (*.kmz)."

If you would like, now is the time to make your coordinating ground plane. While still in SketchUp, you can open a new document and create a circle with the same 150 meter radius. Extrude the circle .02 meters since there can be issues in Wonderland with zero width models. Create a small "scratch" rectangle and import your ground texture and delete the rectangle. Then use the Paint Bucket tool to apply the texture to the circle. For good measure, I also apply the texture to the rim and the underside of the circle. You may find that you’ll need to go back and edit the texture image if it doesn’t look good when tiled. Save this file and export it to .kmz format.

Importing the Skyline into Wonderland

To try out the skyline, consider starting with an empty Wonderland world. To get an empty world, navigate to the "Manage Worlds" section of the Wonderland Server Admin console and click "make current" in the "Empty World" row of the Initial Worlds table. Please be sure no one else is using the server before you do this. Then launch the Wonderland client and log in. Make sure you are standing in the exact center of the world by using Placemarks –> Starting Location.

Next, drag and drop the skyline .kmz file you just created into the Wonderland window. If you started with an empty world, you should also drop in a ground plane with the same or larger radius as your skyline. Again, be sure you are standing exactly in the center when you drop in the ground.

There are several adjustments you may need to make. First, make sure your ground plane is at ground level. Right click on the ground model and select "Edit" from the context menu. Now click on "Details" to open the Details pain. If the "Y" position is anything other than zero, change the number to zero and press Tab. Your ground will now be located at the proper level, giving you a point of reference for adjusting your skyline.

If the skyline is too low, right click on it and select Edit. Using the Details pane, increase the "Y" value to move the skyline up until the bottom edge is where you’d like it to be. One technique is to move the skyline up until you see a gap between the ground and the skyline, as illustrated below, and then lower the skyline until the two surfaces meet.

Aligning the skyline

The second adjustment involves lighting. Right click on the skyline again and select "Properties…" When the Properties dialog opens, click on the "Model Component" item in the Capabilities pane. Then uncheck "Lighting Enabled" and click "Apply." This will more closely approximate the lighting settings used in SketchUp. Do the same for the ground model, if desired. Now all you need to do is add other content to your world, such as the Temple of Horus or an Environmental Home, and you are on your way to having a unique virtual setting.

Temple of Horus against sand dune skyline

Environmental Home against sand dune skyline

Skylines in the 3D Warehouse

If you have created a new skyline that you would be willing to share, please upload it to the Google 3D Warehouse and let us know, preferably by posting a message to the Wonderland Discussion Forum. I have started a 3D Warehouse collection of models appropriate for use in Wonderland worlds.

Models for Project Wonderland

This sand dune skyline, plus the two others from my previous blog post are included in the Skyline collection. Coordinating ground planes are located in the "Floors for Project Wonderland" collection.  I’ll be delighted to add your skyline and coordinating ground planes to the collection. If you do upload to the 3D Warehouse, it’s a good idea to geo-locate your model.  Although it seems silly to associate a location with a model like this one, it is the only way to get both .skp and .kmz files included on the page for the model. Instructions for geo-locating a model are embedded in this help document:

Placing a SketchUp Model in Google Earth

Follow steps 1-6. After that, upload the model using File –> 3D Warehouse –> Share Model… Just be sure that you uncheck the box "Google Earth Ready" in the upload dialog.

I’m looking forward to seeing your creations.

Tips for Using SketchUp Models in Wonderland (updated)

October 8, 2009

To make the videos that I’ve posted this week, prepare for live demos, and work on new tutorials, I have spent a lot of quality time in Wonderland, Google SketchUp, and the Google 3D Warehouse. As some of you may know, SketchUp was originally designed as a tool for architects and engineers. Google bought the company that created SketchUp in 2006 in order to provide a free tool for people to model buildings for Google Earth. What’s significant is that SketchUp was not originally designed for real-time environments like Wonderland or Google Earth.  That means that many of the SketchUp models you find in the 3D Warehouse will not perform well in Wonderland. They are made up of too many polygons, which makes it difficult for the Wonderland client to draw them quickly.

Identifying Appropriate Models in the 3D Warehouse

After experimenting with importing lots of different models from the 3D Warehouse into Wonderland, I learned that the models that work best in Wonderland are those created specifically for Google Earth. You can identify these by the blue ribbon in front of their name. Here’s a random example:

The blue ribbon designation means that someone from the Google Earth team hand-selected the model for inclusion in the Google Earth 3D layer. For excellent performance in Wonderland, there are two other factors to consider in addition to the blue ribbon. First, look at the “Model complexity” rating in the lower right corner. Models with a “Simple” rating work best. Then click on the “Download Model” button and look at the file sizes. Anything under 1MB is likely to work extremely well. If the file is over 2MB, you will probably start to see some performance impact.

To find simple complexity Google Earth models, use the advanced search page.

Enter your query, and in the “Item type” section, select complexity “simple” and file type “Google Earth (.kmz).”  Then check the first two check boxes in that section. What’s amazing is that there are over 30,000 models in the Google Earth 3D buildings layer that meet these criteria. For example, I found this model of the Parisian Palais de l’Élysée as well as an attractive red sculpture model which we used as a backdrop for this week’s staff meeting.

Note that when you bring models like this into Wonderland, they may look too dark. You can fix this by right-clicking on the model and selecting “Properties” from the context menu. In the “Model Component” property sheet, uncheck “Lighting Enabled.” This restores the original SketchUp lighting. To learn more about positioning your models in the world, refer to the Assembling Worlds tutorial.

One unfortunate aspect of the 3D Warehouse is that Google treats geo-located models differently from objects that don’t have a location. This means that small models like tables, chairs, lamps, etc. do not have the Google Earth (.kmz) formatted files associated with them, nor do they have a complexity rating. The only guidance you have about whether or not the model will work well in Wonderland is the file size of the Sketchup (.skp) download. The same rule of thumb applies – the smaller the file size, the better.

If you want to try a model that does not have a .kmz version listed in the Downloads section, simply download the .skp file for the most recent SketchUp version, open it in SketchUp, and select File –> Export –> 3D Model… Make sure the “Google Earth File (*.kmz)” format is selected and save the file. This will generate the .kmz file you need to drag and drop into Wonderland.

When you are adding models to a Wonderland world, it’s a good idea to show the FPS (frames per second) meter (Window –> FPS Meter).

In this example, notice in the middle how the frames per second dropped dramatically. That happened when I turned my avatar to look at some trees with very high polygon counts. Each time you add a new model to the world, face the model and check your meter. If your frames per second drop, then the model may not be suitable for use in Wonderland.

SketchUp Guide for Creating Your Own Models

In researching how Google Earth modelers manage to create fantastic-looking models of large buildings that are often under 1MB, I came across an extremely helpful reference that Google has put together for people creating models for Google Earth:

Modeling a City

I would encourage everyone who is creating their own models using SketchUp to read this document carefully. Let me give you one tip from the document that I have found particularly useful. When you create your own textures, you should export them from your graphics editor (eg, Adobe Photoshop Elements) for the web in PNG-24 format. This format does the best job with transparency and small file size. This has allowed me to create some nice-looking skyline models shown here in Wonderland:

Tree skyline in Wonderland

Dune Skyline in Wonderland

You could model these skylines in Sketchup by applying the texture and then tracing the skyline and cutting out the sky parts. That would create a model with a huge number of polygons. Instead, using a transparent PNG-24 texture, as recommended in the “Modeling a City” guide, I was able to create an extremely simple model with interesting contours.

In my next blog post, I’ll describe how you can make one of these skyline models for yourself.


October 7, 2009

In my September 12th blog post, 0.5 Preview is on the Way, I highlighted the new Wonderland feature called Capabilities. The first video on this page provides a more in-depth look at several of the capabilities that come with the Wonderland v0.5 Preview1 release. Since security is such an important topic, there is a separate video focused entirely on the security capability. Here’s a short description of the capabilities included in the video clips:

Audio Capabilities – Provides the ability to add recorded audio or an audio stream from the web to any object. You may also select from several options for playing the audio, including always, when an avatar is in proximity, or manually via a "Play" command on the right-click context menu.

Cone of Silence – This allows you to associate a sound-proof area – cone of silence – with any object. People outside can’t hear what’s being said inside, but you can opt for some amount of outside audio to penetrate the cone. In the nightly builds there is now a feature that allows you to visually see the bounding box (or sphere) of the cone of silence and adjust its size.

Container – This capability is used to group objects. Any object created while an avatar is within the bounds of a container will be associated with that container. All the objects in the container object can be moved as a group. Security properties applied to the parent object will also be inherited by all the other objects included in the container.  You can use the World Hierarchy pane in the Cell Editor, which you’ll find in the Wonderland Tools menu, to view how objects are grouped. You can also drag and drop objects onto one another in the World Hierarchy pane to create and edit groups.

Portal – Using this capability, any object can be turned into a portal. Portals can take users to another location on the same server or to a location on a different server. Portals are part of the support for federation in 0.5, where Wonderland servers can be linked together as easily as web sites.

Security – This capability is used to individually protect objects in the world. Users can restrict what other users can see or do to objects they own by enabling or disabling view and modify access. Object-level security works in conjunction with another new Wonderland feature called Groups. You can create and edit groups using either the in-world Groups editor (select "Groups…" from the Edit menu) or the Group Editor in the Server Admin Console.

Combining Capabilities

Some combinations of capabilities are particularly helpful. For example, combine a portal with the security capability so that only a subset of users can see the portal. This provides an extra level of protection for areas you wish to secure.

The security video also demonstrates how you can combine the container, cone-of-silence, and security capabilities to create a private, sound-proof space in the middle of a public area. By protecting the interior shell of a building, all users can see the exterior shell, but only authorized users may enter the private space. Even if unauthorized users attempt to enter the protected space by turning off collision, neither the interior of the space or the audio within that space will be seen or heard by the unauthorized person.

Write Your Own Capability

While we provide a few important capabilities, any developer may create a new capability. One capability that has already been contributed by a community member is a Clickable Link capability. When you apply this capability, you can enter a URL in the Clickable Link property sheet. After doing so, that URL will launch in an external browser window whenever a user clicks on the in-world object. If you want to experiment with this capability, you can download the module by right-clicking on the jar file link below and saving the file on your desktop:

To install it on your own server, simply navigate to the Manage Modules section of the Wonderland Server Admin console, scroll to the bottom of the page, and click the "Browse…" button. Once you locate the jar file you just saved, click on "Install." You should get a message that the module was successfully installed.

Jordan is writing a developer-level tutorial on how to write new capabilities, so that will be coming soon. In the mean time, you can use clickablelink module in the "unstable" section of the wonderland-modules workspace as an example if you’re inspired to try your hand at writing a new one. Here’s where you can find it in the source code repository:

Project Wonderland v0.5 Preview1 Debut

October 5, 2009

So much has been happening around 0.5 since the Preview1 release on September 14th, that I haven’t had a chance to do any writing. It’s time to start catching up! Today, I’ll tell you about two virtual world conferences a number of people on the Sun Labs team attended and show you one of the new 0.5 demo videos that we’ve been working on.

Engage Expo – 3D TLC Track

Jonathan, Mike, and I attended the 3D Training, Learning and Collaboration (TLC) track at the Engage Expo conference in San Jose on September 23-24. Eric and Sam Driver from ThinkBalm talked about their most recent report on the barriers to entry for virtual worlds in business. I’m sure it will come as no surprise that computer hardware and firewalls were two of the biggest problems.  There weren’t too many people demo’ing at the conference, but we did hear from a number of companies that have been doing real virtual world projects. My favorite project was the virtual chocolate factory created by FXPal. Visitors can take tours of the virtual factory and workers can monitor the factory remotely. They also had a mobile interface for controlling some of the factory systems.

On Thursday, I participated on a panel called "Integrate or Evaporate: Plugging 3D into the Enterprise Infrastructure." I prepared the video above for this session. The video shows how a business might use Wonderland to create a world from "found art," primarily from the Google 3D Warehouse, and existing marketing collateral in the form of web pages, images, and PDF documents. Users can create ad hoc worlds by dragging and dropping existing art into the virtual world without requiring an artist to create custom content. Our import mechanism makes it possible for artists to create high-quality artwork which can be deployed just as easily. In the world shown in the video, we can give presentations, interact informally with customers in front of a whiteboard, and run live training sessions in-world using a web-based tool.

FountainBlue Virtual World Event

The following day, the same crew, plus Paul, attended the FountainBlue Virtual World event, which Mike hosted on Sun’s Santa Clara campus. FountainBlue is an organization that runs events for entrepreneurs, investors, and other innovators. I was asked to demo Wonderland v0.5 during lunch. This marked our very first live demo of the Preview1 release! Jordan and Miriam participated remotely from the east coast. I’m happy to report that the demo went flawlessly. We used the Orientation World, the only artist-created default world that comes with the Wonderland release.

Orientation World

The demo focused on application sharing, audio features, brainstorming, and world creation using drag and drop. I also demo’d object-level security, but since it’s difficult to show with only a single computer, I used a video clip. I’ll include that video in my next post.

CNBC Interview

The second live demo of Preview1 happened only hours after the first one. Miriam and I were interviewed by a CNBC reporter in the same Wonderland world we demo’d earlier in the day. The most stressful part of that demo was that the reporter asked us to do the screen capture for them! Fortunately, all went well. I’ll certainly post a link to the story if and when it appears.

%d bloggers like this: