Almost 0.11.1
Friday, 22 August 2008

Today has been spent polishing the next alpha release of my current work project, ESS-STS-125. In english, that's Educational Spacewalk Simulation STS-125, where STS-125 is the upcoming NASA mission to service the Hubble Telescope, possibly for the last time. In support of this, it's almost time to release Digital Spaces 0.11.1 .

The simulation consists of pretty much one long animation. There are several objects animating that interact together, as well as objects that attach and detach to the astronauts hands and equipment. Yesterday I got the UI for jumping around the animation working, as well as getting the actual jumping around working. I had a bug that made the sim appear to lock up. It wasn't really locked, just working very very hard manually calculating information for 100 frames per second of animtion. When all it needed was generally about a dozen, for the whole animation.

Today I converted sounds from uncompressed WAV to OGG. DSS (an acronym for Digital Spaces, not to be confused with our supporter, DigitalSpace) currently decodes OGG to WAV at load up, but at least the on-disk footprint is smaller. With this addition, this alpha is ready to release.

Of course, to run the content, they need DSS. And I've been making lots of changes to DSS. The big one was changing how the scene graph management works. Previously, the scene graph had to consist of either Scene Nodes (which have position/orientation/scale, and heirachy), and Render Objects (which don't do anything except be attached to Scene Nodes). However this didn't reflect how the scene graph was actually being used. Some objects weren't scene nodes because they didn't move (independently of their parent Scene Node), but they could have children. An example of this is a model (or an Entity in Ogre3D parlance) with a skeleton. Each of the skeletons bones is movable, but the model itself isn't.

So I've rewritten the SGManager (the component responsible for scene graph management) so that it now breaks objects up into three categories. SGObject is a "does nothing" object that contains common functionality, SGHeirachal can have children, and SGMovable can move, independent of it's parent object. There is also SGAnimated, used for triggering animations, but it's not well designed and is really just a special case for Ogre3D Entities.

When rewriting the SGManager, I removed support for the old old 3DScenegraphManager API. This was used before the SGManager, and was needed case specific code for nearly every type of object in the scene. When we moved to the SGManager, I kept support for the older API, since the new implementation's API produced basically the same results, and used the same distinction between types of objects. However, it was marked as deprecated.

So, after removing it, I had to go through and touch up all the parts of the code that hadn't been updated. Mostly it's was straight forward, but in a few cases it revealed bugs in the new implementation.

I've ran the current build through our "test suite", which consists of the Spaces found on our Demo page. Each one runs, give or take some updates where their scripts used the old 3DScenegraphManager API. I need to produce new versions of the Spaces, as well as a new installer, source package and API. But that is for tomorrow! It's currently some remarkably low number near freezing here, and my office is a partially converted shed.

 

Comments
Search
Only registered users can write comments!

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."