Wednesday, July 7, 2010

Immersive 3D Virtual Reality on your Desktop


One feature I've kept in mind is the ability to let ourselves interact with the immerisive environment in a more intuitive fashion. Note how well fashion does in our local malls, and how people rave about new looks. The the screenshot above already shows this possibility even at this stage.

The overall theme of the windows follow what you already have installed on your desktop, so it matches! Simple concept, and I wonder why people make it so hard to match with built in skins that don't match the rest of the desktop.

I think people get carried away with the little gadgets that give fancy affects, and we know we like these, yet they don't alway work or look right across all platforms. Icesphere uses gnome themes which has been customized to help work across platforms. Let's worry about the fancy gadgets later and first make sure the overall theme, skin, and windows decorations match.

The tricky part is I used free or open source SVG graphics for the icons. There are still icon details to fill in as you can see in the image above. These weren't easy to find for their specific purpose, so I had to modify a few of them. SVG made that easy like being able to take a dress and cut it in half for the skirt.

Currently, for next 0.10.x release, I redid a few ways functions are being called internally. This is to make less custom hard-coded hooks and attempt to make use of Linden Lab's design of listeners. This allows the main functionality of the patch to be in one file instead of custom code being patched throughout the viewer source.

Also, there is some new functionality for assets over REST being formatted into XML. This makes it easier for scripting languages to not have to mess with bits and bytes of encoded assest streams. I thought about JSON format, yet JSON doesn't allow the nested flexibility that we find with XML. JSON is good for simple static structures, yet dynamically nested structures aren't so clean in JSON.

Part of the above internal work was to complete the client-side animation override ability. Actually, it flows more as just custom animations instead of how animation overrides used to work. There is still the default UUIDs being called for active animations, yet one could simple use those codes as requests to send to the server the desired animation instead of attempt to query the server the current animations and override them. It may help improve some network traffic such that this kind of customization to animation is more welcome. Sims that have disabled scripts can't prevent this kind of animation override from being able to still make your moves smooth and look good.

I've kept past notices of changes on my repository, so that is still key to release notes. This blog is to get into more details of the changes. I had some requests to make the links I had on the wiki more friendlier.

Related Links:
Current git repository for Icesphere
Current git repository for Snowglobe-375 (pre-patched Snowglobe 2.x viewer source)
SNOW-375 (the patch itself: REST based client-side scripting API)