Saturday, April 14, 2007

3D Worlds and Interoperability

I attended a working lunch this week at Harvard to discuss 3D interoperability. It was an interesting discussion. I think the biggest problem was simply the definition of interoperability. For some people at the conference, it meant as little as reconstructing someone elses content in another 3D environment, or maybe being able to somehow copy 3D data sets from one place to another. Others viewed it as being able to reuse and dress-up your personal avatar for shopping or for role-playing.

We even discussed the possibility of hooking Croquet up to Second Life via Croquet portals. This should be relatively straightforward to do - it would require a compound application of some sort, but since Croquet is already designed to hand off rendering to the adjacent Island (Croquet Islands and Second Life Islands are different kinds of things) when rendering through a portal, handing it to the Second Life client would not be much different. Coming back the other way might require a bit more finesse, as we would have to add some portal support to SL, and would have to call into an image based system. We have been doing something similar recently, so it is quite possible.

I think David Reed (one of my fellow Croquet architects) really nailed what 3D interoperability should be. When we share 3D objects, we also need to share their behaviors. In most ways, the visual representation of an object is its least interesting aspect. What it can do, and how it interacts with the users and the worlds around it, however is REALLY interesting and very valuable.

This is also really hard to do. Everyone uses different languages and scripts, and some - like Croquet - use a very different mechanism for enabling behaviors. Croquet has TeaTime and the concept of future replicated messages to manage its behavior. This enables a peer-to-peer approach to designing interactions, which otherwise would be near impossible. The only other solution is what everyone else has to do, which is maintain a central server and replicate the results of the computations.

No comments: