The excitement in the open source virtual world developer community has been bubbling over since realXtend brought many OpenSimulator developers over to Finland to reveal the extraordinary amount of work they have done “extending” the function of the OpenSimulator project in just 4 months.
See here for an account of this amazing meeting in Oulu, Finland, by one of the participants from the OpenLife grid. Pictured above is a screenshot of the new mesh avatars being conformed inworld. Adam Frisby explained to me:
Meshes behave just like another prim type – you can drag, scale, and rotate meshes around using the same method that you use on primitives and object groups. You can link meshes with other primitives, save them to inventory and use them in pretty much the same way you use primitives.
Second Life is built with prims, so I asked my friend, Zha Ewry, for a 101 on meshes versus prims. “A prim, is a solid, defined by an equation – a cube, and such with permutations, like twist and taper, and cut. Whereas a mesh, is a series of triangles in 3d which conform to the shape of the object.”
Meshes are groovy because “they can do arbitrary surfaces. You can lay a mesh over any shape, add more triangles, increase resolution. A prim you can’t make any shape, only what the math bends it to, so you blend them into shapes by composition.”
SL originally went with prims and not meshes “because they are more compact, lower cost to render and easier to map to the physics model.” But, “many 3d programs build meshes by default and nothing builds prims,” so the introduction of meshes facilitates one of the key new realXtend features – support for proper 3D models.
I asked Zha if meshes would have a negative effect on concurrency. Zha said the answer to that question is not entirely clear yet, “but its not as bad as it seems because its prim+texture vs mesh=texture.”
Zha explained that a lot of people think of meshes as much more expensive when its not prim vs. mesh but rather, prim+texture vs mesh+texture so the difference is smaller, “and even more to the point, for many things, its Prim+prim+prim+prm+textures vs mesh+texture set. Often, even for small objects, you can do several prims worth of detail in a mesh.”
I have heard from OpenSim developers that the expectation for OpenSim is for concurrencies of 100 at least in the next six months.
Two realXtend companies, Admino & Ludocraft, have been dedicating 20 personnel (programmers, designers and content creators)‘ to extending’ the function of the OpenSimulator Project, both server side and client side respectively. The project is backed by the vision and generosity of Juha Hulkko, who has another fascinating project Radio Arkala (also in Second Life on Arkala Island).
Click on the screenshot above for the realXtend video demo. There is a full list of realXtend features on their site here. RealXtend give a summary of some of the most important functionality they have added.
The most important realXtend-specific development areas were the media tools such as VoIP and document sharing, OGRE renderer support and, of course, the separate realXtend avatar storage / authentication infrastructure that enables seamless transition from one world to another.
Having support for proper 3d models as well as simpler primitive type objects is an asset in many different ways. Most importantly, just about all the professionals and advanced amateurs who create content suitable for virtual worlds like to work with proper 3d modeling software. There’s already a lot of existing material that can now be directly transferred to the virtual reality if for example a movie maker wants to create a virtual world based on an animated film and the same goes for computer game developers. Thanks to proper 3d model support, practically all of their material should be easy to transfer from games to realXtend based virtual worlds and vice versa.
Another central feature is the global avatar architecture. A network of interconnected virtual worlds simply doesn’t exist until users can take their virtual representatives with them wherever they choose to go. Architecturally this means separating the avatar and their asset storage functionality from the virtual world server. Avatar service will provide the users with identity and authentication independent of the world they happen to be in at any given time. In practice the role of the avatar service will be somewhat similar to what email is today. Security is naturally a major issue whenever someone’s identity or asset ownership is concerned and it has been an important consideration in the design of the avatar architecture.
The picture below is of the web page as a texture feature.
Under testing for the next release (29th of February 2008)
- Free-form non-humanoid avatars
- Global avatar mesh, skeleton, textures, attachments and animations
- Single sign-on to multiple worlds for teleporting
- Avatar generator
- Avatar attachment tool to help set 3D meshes to different bones
- Unlimited amount of attachments per bone
- Teleports between realXtend and Secondlife
- Avatar storage to move avatar appearance between realXtend grids/worlds
- Mesh tool to scale and set pivot of 3d models
- Server launcher and configuration application
- Home automation example using X10 technology
- Bot with Python scripting
- Media library for world builders
- Server status window
Pictured below is the the location of this historic meeting which was also attended by Chris Collins of Linden Lab. I did hear some very interesting anecdotes about the visitors introduction to Finnish culture – flaming drinks, saunas, and hot metarati rolling in snow!!! But, the focus of this post is the road map for an open standards virtual world’s future, so I will leave it to others to tell those tales.
What follows is an extract from realXtend press release, and then I move on to an interview I did with Adam Frisby who was in New York last weekend. He shared some of his thoughts on the future of the Open Simulator project with me on another snowy weekend of skiing and snowboarding in upstate New York (lots of snow again but no flaming drinks, just Ribena, Mario Galaxy, and snowball fights with Ugotrade Jr).
Oulu, Finland – even a blizzard couldn’t delay the meeting
Team up to make open source Virtual World standard
Open source virtual world developers OpenSim are building a global standard to power the 3D internet, now joined by Finnish developer’s realXtend, OpenSim gains many new key features and technologies.
OpenSim is a free and open standard virtual world server founded at the beginning of 2007 by a small group of developers. The OpenSim platform can be used for creating and deploying immersive 3D Virtual Interactive Environments. The realXtend project’s mission is to assist in bringing forth the next generation of virtual reality development by focusing on interoperability technologies, usability and real-life application support. realXtend brings to OpenSim professional experience and development in the realm of 3D engine programming, voice over IP and network support, and is contributing many new features such as improved 3D graphics and voice chat.
“I welcome the realXtend project to join us. It is my pleasure to see that the OpenSim gets a huge professional code contribution. The future of the OpenSim project looks bright as the developer base continues to grow with giant leaps like this”, says OpenSim project manager Darren Guard (aka core developer Michael Wright).
realXtend is contributing all the server side code for their developments to OpenSim and continues to do so from now on. This collaboration of two projects with a similar vision enables realXtend and OpenSim to focus on common issues, and solve them more quickly – leveraging experience and knowledge from each party. realXtend project manager Jani Pirkola comments on the joining as “I see this as a great possibility to quickly make OpenSim the global de facto standard and to significantly speed up the global technology development in this area. Our common goal is to create the best open source virtual world server platform, and to continue the rapid evolution of OpenSim”.
Interview with Adam Frisby of OpenSim
Snowball fight in the Catskills while “snowed in with Open Sim”
Me: Could you tell me more about the “avatar server?”
Adam: The “avatar server” improvement allows you to sign in remotely from another region and bring your avatar & attachments across with you. It allows you to sign onto a OpenSim with an address like: adam firstname.lastname@example.org — and then bring across your avatar & appearance. Inventory/etc is going to come in with this sign on method as well.
Me: You also mentioned to me how this would really change the concept of griding and introduce a different model to the Second Life grid.
Adam: Right, that’s tied in with that [the avatar server] a little – you don’t need a big central grid in the way they are operating. Their philosophy has been more akin to the world wide web — lots of interdependent sites that can link to each other. The avatar server is the first step towards that, since it allows you to login to multiple independent installations with one account.
Me: Do these changes, potentially, signify more of a fork from Second Life or not?
Adam: Definitely. This is the first time we’ve broken compatibility with SL feature-wise and implemented things that go far beyond SL.
Me: Will the Rex viewer work with SL?
Adam: You can still connect to SL with the Rex viewer, but your missing lots of nifty functionality, like the new rendering engine.
Me: What do you think are the implications of that and do you think the fork will continue to get wider or not?
Adam: Well, the subtle irony of it is that Linden Lab can’t take the changes back because of their client being GPL’d and they still rely on non-GPL’d components, i.e., FMOD and other bits and pieces. They can take BSD [all the realXtend server side work is BSD, but the client source code is GPL’d at the moment.
If we released the patches as BSD licensed, which RealXtend intends to try to do, then yes they could take those ones back.
Me: So why the conflict exactly?
Adam: LL use a set of proprietary components in their official release, for example the Kakadu JPEG2000 library – which means their official release is actually GPL-incompatible. RealXtend have to extract out any bit of Linden IP or derivative work in order to be able to release it under a more permissive license. (The GPL is actually fairly restrictive). In copyright law, you can generally make a open source license more restrictive, but never the other way around – it’s one of the reasons that OpenSim is licensed under one of the least restrictive Open Source licenses. If LL took the GPL’d code RealXtend had done back, they would be under the terms of the GPL via RealXtends IP.
Me: So taking the client code back could cause problems?
Adam: Well, if they took it – yes. But unfortunately they really can’t. They could in their pure-open-source release, but not in their mainline release.
Me: What do you think is the best path forward re interoperability?
Adam: I think the best path forward for a standard is to release everything to either the public domain, or as close as you can get. It allows all parties to use the code for any purpose whatsoever.
Me: So you mean no GPL no BSD?
Adam: BSD is fairly close legally – it’s effectively public domain with a “Don’t sue us” clause. There’s a small group of licenses which are essentially public domain:
- New BSD (what OpenSim/libsl are under)
and a few others.
Me: Can Linden Lab switch from GPL to BSD?
Adam: They can – as far as I know they have never accepted anything into their codebase which would prohibit it. They have been discussing lately switching a few key files to BSD, which would definitely be appreciated – but the whole client would be better. A lot of people do – I’m not going to go into names (you can if you want), but there’s a fairly large group of people who dislike the GPL. At least for this kind of standards setting thing.
Me: So what is the road map for OpenSim now? What do you see as the 3 month goals to be, and then 6 month and then one year?
Adam: 3 month goals – we’re going to try and align the two codebases we have now into one seamless codebase that works well both with the official SL client, and with the improved Realxtend one.
We’ve also got a few short term goals in terms of stability, getting features working properly, and maybe with a little luck, doing a bit of work on our client networking. Of course – anything I say has to be taken with a grain of salt, open source means people can work on what they like effectively.
In six months time, I’d like to have the majority of the features in the official client supported, and to be reasonably stable enough for large scale deployments.
I think that might take longer than 6 months, but you never know.
A years time, I’d like to be working towards next generation features – what sorts of things we think the standard virtual world must support, better support for linking environments has to happen over the next year – and we definitely need to be well on our way towards a really good standard infrastructure that can scale to the size of the web today.
Me: Re the discussion of standard features – what do you think is the best forum for this discussion? And, has realXtend committed to more development?
Adam: They have committed to working on this until their backing runs out, but it sounds like they might have found a way to continue working for a good while yet.
Me: And, the forum for the discussion of standards – what do you think is best for that?
Adam: I think that’s going to just happen on it’s own.
A lot of the standards bodies that have been setup seem to be moving no-where, and while we are all happy to participate in them – I think more is going to be achieved by doing things, testing them, seeing what works.
Me: And sorting out a more permissive licensing situation seems like it would help?
Adam: It would help – because it means we don’t need to spend so much time reinventing the wheel. We have to reinvent everything LL has done to be able to license it permissively.
Adam: The Rex serverside changes – those are all BSD, and we’re incorporating it back. Their viewer changes – those are GPL’d by necessity, and we’re not touching those. The RealXtend company has two different companies working on it to avoid any IP contamination. The serverside stuff was done by Admino, and the clientside by Ludocraft.
We’ve got two pieces of software here:
and the server side changes to list them are the avatar server and….. and all the meshes etc. are on the client side with Ludocraft. The server side changes are things like the Python scripting, backend support for the meshes, avatar server, etc. The client side changes are the new rendering engine, client side mesh support, shadows, improved lighting, etc.
Me: Does Windlight goes out if Rex comes in?
Adam: Yes, Rex are looking at integrating Windlight properly into their viewer at the moment. But they can integrate that in without too much of a problem because that’s strictly a client side thing, and that’s already GPL’d.
Me: My friend Ben Goertzel of Novamente who is developing Artificial General Intelligence projects in VWs wanted to know if the skeletons allowed “the ability to script fine-grained control of skeletons controlling characters of different types.” He wants to control characters via inverse kinematics not just by launching pre-fab animations because without that you can’t have naturalistic or adaptable motor control. Will the mesh avatars allow that sort of thing?
Adam: IK is on RealXtend’s feature list – they haven’t implemented it yet, but they are working towards it. What your friend might appreciate is that you can have completely customised bones under the realxtend avatar.
The default skeleton has 220 bones in it, but you can make your own custom skeletons for things like anthropomorphic avatars.
One of the avatars we got shown was someone wandering around as a giant collection of mushrooms.
Me: Can you control the angles of motions of the joints?
Adam: Yeah, you can.
Me: Cool! Ben is going to be so happy. AI just moved a big step forward!
Me: Ben also said if I want to stress you are ask if you can implement realistic physics of fluids for him
Adam: We’ve got a physics engine that supports it, but client will take a lot of work!