Annwvyn 0.3.1 : Ogre 2.1 rendering merged, BtOgre forked, libraries un-vendored.

Just so you know, this article was written around the 0.3.1 release on GitHub, but wasn’t published, as I forgot and had better things to do.

So, since the last article, the described changes have been made. Annwvyn’s master branch is using Ogre 2.1. There’s no binary distribution of this version of Ogre (that is still under heavy development and tagged as “unstable”), but it’s already usable.

Some (small libraries) where in the source code of the engine (as “vendored code” you would said) and have been pulled out. TinyXML2 is now a dependency of Annwvyn. The case of BtOgre is a bit more complicated…

BtOgre is a thin Ogre – Bullet communication layer. It’s basically a library that permit to create Bullet shapes from Ogre meshes, and to associate RigidBodie’s “motion state” to Ogre Node auto-magically.

This library is not compatible with Ogre v2. Ogre v2 uses a new more efficient mesh format. Ogre still has the old code, and for creating Physics data, we are forced to load Ogre v1 mesh and use that.

The old v1 code is available inside the Ogre::v1 namespace, making the current code-base of BtOgre not compile when including Ogre 2. This problem was solved on GitHub by a user called nyxkn, permitting to use it if you are loading v1 mesh format.

It was lacking a debug drawer, I wrote one because I cannot develop physics stuff without seeing what is happening. But I still wasn’t happy, for two things :

  1. It’s relying on Ogre::v1 code, that will probably be gone one day
  2. I’m forced to load an old format of the files, and convert them on the fly, while keeping the old one loaded in memory until physics is initialized. Making my objects bigger and pointing to some memory hold by v1::MeshManager in a shared pointer.
  3. When looking at the code, most of the implementation is inside an header, and it’s not really easy to read, and there’s no documentation at all, and It’s doing a bunch of stuff the C++ standard lib is doing.

So, I decided that I needed to make this code works with Ogre v2 meshes, and that it deserved a good cleanup.

BtOgre21 is a fork of btOgre for modern Ogre, partially re-written in C++11. More info hrere and here

Source: New feed

Leave Comment

Your email address will not be published. Required fields are marked *