Well, I’ve learned enough about WiX and MSI to get an installer ready for the XSI v5 exporter, which will accompany OGRE v1.0.6 in just over a week’s time. Getting it working didn’t actually take very long, although sometimes the declarative syntax can be a little obtuse. The thing that had be pulling hair out for a good while was that I wanted to auto-locate the XSI install folder so the user didn’t have to choose it.
I managed to build a working version of the OGRE XSI exporter for XSI v5.0 using VC.Net 2005 Express today, which is excellent. I had a problem at first because I had all sorts of linker errors with XSI::CString, but it turns out it’s because one of the changes in VC.Net 2005 is that wchar_t is a built-in type, and you can’t link against older libs which aren’t using that option and wide characters (XSI uses wide characters and is built with VC 7.
Ok, so I’ve been looking quickly for free tools for creating MSI files, since deploying the dependent Visual C++ runtime libraries as Merge Modules is the only really supported way of deploying applications built with VC8 on all versions of Windows. The 2 main contenders are MakeMSI and WIX. I haven’t had lots of time to investigate them but here’s my initial assessment. MakeMSI MakeMSI purports to automate the process to some degree, although you are still manually editing text files.
Ok, after further investigation the origin of the .Net 2.0 dependency on binaries created with VC8 Express is becoming clearer. The major change that has occurred in VC8 is that the core C/C++ runtime libraries and standard libraries like STL, MFC, ATL etc are now configured as ‘side-by-side native assemblies’ rather than the usual simple native DLLs. The point of this is to allow version control over shared libraries so that different applications don’t mess each other up by overwriting shared DLLs.
Well, the OGRE community has been taking it’s first look at VC8 (2005) Express Edition, which on the face of it seems like quite an incredible deal - a free copy of a great IDE with an optimising compiler and all the tools you need to make most native applications with C++ (among other things, but that’s what we’re most interested in). Besides a few minor missing features, such as a resource editor, 64-bit support and profile-specific optimisations, this seemed like the perfect tool for a budding native application writer.
I’ve been catching up on a few of my TODO items, one of which is addressing a few remaining stability issues with the OGRE DirectX7 render system, a plugin which allows you to run OGRE on older computers running Win98 (which can’t run DirectX9) and with perhaps pretty dodgy drivers. It’s not been a priority for a while, since to attract new users it’s generally the newer tech that interests people, but at the same time having a solid solution for older computers makes it more useful for those targetting the shareware market.
Well, I managed to get the morph / pose animation enhancements I talked about last week in at the weekend, plus a few other tweaks such as targetting individual vertex data sections in submeshes for performance with combined skeletal / facial setups. I need to do a little more testing on the combos and then think about adding export support for it to XSI. I also managed to bash through a chunk of patches, so the OGRE patch list is a little more manageable now.
I spent some time today with XSI, because I had a bug report queued up from earlier this week that needed some attention, and I wanted to build an OGRE exporter for my fresh copy of XSI v5. Well, the former went well, apart from taking a lot of time to figure out what the issue was. I like XSI’s API, it’s generally very consistent and stable, but it the amount of cross-referencing and re-indexing of data can get very confusing sometimes, especially since the exporter does it’s own set of reorganisations too (to create the best mesh for runtime performance, rather than flexibility like the originating data).
It’s a bit of a ‘family week’ this week since the funeral was yesterday and extra family are in the island, so we’re having a few get togethers and thus there won’t be too many code commits this week. Over the weekend I made a little progress on the animation enhancements I mentioned a few days ago, hopefully I should get those in over the weekend. I might even get chance to play with XSI v5 a little more and start planning morph / facial animation export support for that (I’ll backport it to 4.
I added morph animation to Dagon a little while back, but I’ve recently been pondering some further enhancements, mainly following a few experiments with XSI v5.0’s shape animation. The problem with animation is that there are so many variables. Firstly you can have morph animation, skeletal animation, or a combination of both. Then, either one can be powered by the CPU or by shaders. Finally, you have stencil shadows (potentially hardware extruded) adding their extra little complications.