Posted by: Peter Quirk | March 1, 2009

Modrex update

I’ve been a little quiet of late due to digging into modrex while getting up to speed in a new job. For those who don’t know what modrex is, it’s a project to integrate all of the realXtend features with the mainline OpenSim code by incorporating them in a optional regionmodule – hence the project name modrex. The work is being done by Adam Frisby. The stability of the code is surprisingly good, though there are lots of missing pieces at present.

Paul Fishwick has been documenting how to build OpenSim with modrex (at least for Windows). You can help test by following the instructions on the Opensim wiki. Feel free to update the Linux build instructions if that’s your preferred environment.

A fairly current list of implemented features is documented here. The status of Python event handlers is here.

I hope to report soon that some of my tutorials have been implemented successfully on Opensim+modrex.

Posted by: Peter Quirk | January 21, 2009

Sensor networks and virtual worlds

There’s a surprisingly strong connection between virtual worlds and sensor networks. Many proponents of virtual worlds position them as mirror worlds — 3D canvases for visualizing what’s going on in the real world. The Eolus One initiative to model and control the energy consumption of a physical house in the virtual world is well-known to users of Second Life. The prototype, while interesting, doesn’t show how an individual might so the same thing with his/her house. Last year, the realXtend group shipped a virtual world platform that included sample code for controlling a device through an X10 controller. (See the X10manager download here and read the included readme.txt for instructions.) Although it contained no sample code for sensing X10 state, it’s easy to extend the code to read the state of X10 controllers.  With this platform running inside your house you could monitor and control many devices in your home.

But what if your goal is to measure the energy use of an entire community in order to change consumer behavior? There are many wireless and power line networks Read More…

Posted by: Peter Quirk | January 16, 2009

Building Sketchup plug-ins the right way for Vista

When I made some small modifications to the original Ogre Mesh Exporter plug-in developed by Fabrizio Nunnari from an earlier work by Kojack, I never anticipated how much more work would be involved in doing it right, and how few Sketchup plug-ins are designed to work with Vista’s improved security model. I was running on Windows XP when I published the plug-in, and like most users was content to edit the configuration parameters within the plugins folder, which resides within the Program Files folder. Jules Vos commented that it was a pain to configure the plug-in under Vista due to the tightened security. Recently I upgraded my Windows XP system to Vista (32-bit) and then Vista (64-bit), so I got a chance to eat my own dog food!

As in Windows XP, the Program Files folder in Windows Vista requires elevated privileges to install software. But Vista goes further in that it virtualizes per-user files in another folder. If you or your software application attempts to modify settings in a plug-in, the modified file will be written to C:\Users\{user}\AppData\Local\VirtualStore\Program Files (x86)\Google\Google Sketchup 7\Plugins. The idea is to protect each user from the other by ensuring that they see either the original version of the file, or their personal version if they have modified it. Of course, to modify a file in the Plugins directory, you have to invoke Notepad or another editor with the “Run As Administrator” option before you open the file.

The first thing that needs to change is where we store the plug-ins Read More…

One of the most annoying aspects of supplying parameters to scripted objects in Second Life is the need to use notecards. Notecards have a variety of annoying restrictions, and LSL lacks decent parsing tools for dealing with parameters on notecards. In contrast, RealXtend has a remarkable, but up till now undocumented facility for supplying configuration data to models in any format you like with virtually no size restrictions on the data. When combined with your favorite object serialization library in Python, a fantastic world of possibilities for initializing and persisting object data appears.

I’ve just started to explore the potential of this approach, so I’ll give you one working example to get you started. This example demonstrates solutions to a few problems that bug builders from time to time:

  • How to switch units from meters to cm, feet or inches
  • How to specify colors by name using the W3C / X11 color names
  • How to automatically place cloned objects on the ground when the ground is uneven

The example uses the Python ConfigObj library by Michael Foord and Nichola Larosa. ConfigObj implements a read/write (round-trip) handler for .ini files. Grab a copy of ConfigObj and store it in the rexserverScriptenginesLib folder. (By rights, it should be stored in site-packages, but the IronPython doesn’t seem to look there.) Read More…

The RTT (Render-to-Texture) camera feature used in the previous tutorial can be exploited in numerous ways to create interesting devices for the realXtend platform. The good news for OpenSim fans is that that the realXtend functionality will soon be merged into OpenSim as an optional regionmodule which can be activated on a per region basis.

Today’s tutorial involves the construction of a realistic working overhead projector. It’s realistic to a point, but it doesn’t project the slides onto your avatar if you step between the projector and the screen! Here’s a video to give you a sense of what it’s like.

Read More…

Posted by: Peter Quirk | December 28, 2008

Tutorial: Creating a reflecting mirror with an RTT camera

RealXtend 0.4 includes a new feature from Ogre3D that renders a scene from a particular viewpoint onto a texture. Using this so-called Render-to-Texture (RTT) camera feature we can easily create a mirror for the dresser we constructed in the previous tutorial.

Read More…

In a recent post I described changes to the Ogre export scripts for Sketchup to simplify the import of models into realXtend from Google’s 3D warehouse via Sketchup. At the time, there was a bug in the newly-released realXtend 0.4 viewer which prevented the importing of meshes that didn’t have textures associated with some faces. That problem has now been fixed with the release of a new realXtend viewer. You can fetch the new realXtend.exe from Sourceforge.Net. It’s just a replacement executable, not a complete installer file. Pick up here.

I recommend modeling with Sketchup 7. The new templates for working in different measurement units make it so much easier to build models that transfer correctly to realXtend if you choose one that is in meters. Start with “Simple template – meters” if you can’t decide. If you haven’t installed Google Sketchup, you can get it here. After installing it, you need to add two files to the Sketchup plugins directory. You can retrieve them from here.

Read More…

Posted by: Peter Quirk | December 14, 2008

Virtual worlds and the bureaucratic class

My good friend Gina Minks started a lively debate when she took an opposing position to my good friend Anders Gronstedt who vented his frustration with lawyers, IT pros and HR organizations that block the adoption of social networks and virtual worlds like Second Life. Whose side should I take?

Of Second Life, Gina says that “In [her] experience, it’s not an application that can be integrated into an enterprise environment.” I have to agree. The mistake is to think that you integrate Second Life or another other virtual world existing in the cloud into an enterprise. The trick is to work out how to integrate the enterprise into Second Life. Second Life is not just an application outside the firewall like Kenexa’s Brassring or ADP’s payroll services.  It’s a constellation of communities, creative individuals, micro-applications, an economy, government embassies, educational institutions, large corporations and small businesses, all evolving in strange and wonderful ways. We don’t integrate the Canadian market into an enterprise any more than we integrate the world of Second Life into the enterprise. It behooves the enterprise to determine whether there’s value in integrating into Second Life, and how its customers, partners, employees, competitors, shareholders and analysts might use this rich and social communication channel to interact with the company.

Read More…

Back in July I posted a tutorial on how to use Google Sketchup to bring models from the Google 3D Warehouse into realXtend. It proved to be the most popular article ever, and has been translated into a number of languages. The process has a number of manual steps which annoyed me. Another concern was the way that the exporter script dumped all objects in the same directory, but the xml2mesh tool (or rexmeshtool?) would crash if there were .material files from multiple models in the directory. My original process included a batch file to cloak all .material files from other models by adding a .cloaked suffix and  another script to uncloak It was also clear from questions from readers that the process was error prone. Yesterday I decided to fix it.

Read More…

RealXtend 0.4 was released today with a sample world that really begins to show the superiority of the Ogre-based graphics over the traditional prims and sculpties of Second Life.

Opening scene in Beneath the Waves

Opening scene in Beneath the Waves

Major features of this release include a full implementation of Ogre materials and material scripts, including lighting effects and a material editor. Ogre materials can be used on meshes, primitives and particles. Flash animations are supported, and used frequently in the quest embedded in the sample world. (If at first you’re puzzled about how to proceed, approach one of the fish sculptures and click on it. From there you should be able to work everything else out. There are more clues in the video below.) Mozilla plugins are discoverable by the embedded browser, so lots of new functionality should be possible. Another foundation feature that enables a more realistic world is mesh animations. From fish to flexible trees to caterpillars, these animated meshes will add a huge amount of realism (and fantasy) to realXtend worlds.

Once you can present a realistic animal or a rustling tree, it needs to make sounds that emanate from it, so there’s now support for location-based sound loops. And to move that animal over the landscape or under the waves, there’s a new rexbot feature that allows you to control the locomotion of these non-player characters.

There’s so much more to describe, but it will take quite a few postings to cover any of these features in adequate detail. I’ll focus the next few posts on those features can enhance enterprise applications. For now I’ll leave you with the short video and encourage you install it and try it out.

Older Posts »