Cafu Engine now mirrored at SourceForge
Sunday, 2012-01-22
Merry Christmas
Monday, 2011-12-26
Dear friends, first and above all, I wish you all a merry Christmas, and a happy New Year! I hope that everyone is up and well, and has some good and peaceful holidays. For Cafu, it has been an exciting year that was centered around the development of the new Model Editor ( Introduction), which is a component build into CaWE next to the Map Editor, the GUI Editor and the Font Wizard. The work on the Model Editor is almost complete now, and early in the new year, we will conclude it with a new stable binary release of the Cafu Engine. There are only two issues left to be implemented before the release: - The automatic computation of the tangent-space vectors should be user tweakable. Right now, the Cafu model code implements a very good compromise for computing these vectors, but sometimes you just need a slightly different method, e.g. one that implements the hard, faceted shading that sometimes comes with models that need no smoothing, or the smoothing method should do the averaging computations a bit differently than normally.
- The other feature has been mentioned in my previous news post Of animation channels, blending and poses:
It turns out that animation channels, blending and poses are just different ways to apply and combine weights to the individual bones of a model (analogous to the way how weights assign mesh vertices to one or several bones). All this can naturally be described in "expressions" that are easy to write in C++ code, script code, and if necessary even in a graphical editor. Here are some examples (they are very abstract pseudo-code though):
Code: a = AnimExpressionT(Apply the "walking" animation to channel "legs") b = AnimExpressionT(Apply the "shooting" animation to channel "torso") c = a + b
Now play "c" on the model. Note how the "+" operator naturally combines the individual expressions a and b, yielding a new composite expression c.
A slightly more complicated example:
Code: walk = AnimExpressionT(Apply the "walking" animation to channel "legs") run = AnimExpressionT(Apply the "running" animation to channel "legs") shoot = AnimExpressionT(Apply the "shooting" animation to channel "torso")
c = cross_fade(walk to run) + shoot
Again, play "c" on the model. Similar to the "+" operator, the cross_fade() function in the above example is actually a way to construct a new composite expression from its child expressions walk and run.
You'll hear more about this soon. 
Finally, as we changed the way how GUIs are fixed to models, we recently added new terminal models as well (using the Model Editor, of course  ). Here is a screenshot of the new teleporter stations in map BpWxBeta:
Post and read comments about this news item at the related forum topic.
Cafu on Ubuntu 11.10 (Oneiric Ocelot)
Friday, 2011-10-21
We just completed a set of minor changes to make the Cafu Engine compile and work on the new Ubuntu 11.10 (Oneiric Ocelot). Ubuntu 11.10 comes with the GCC 4.6.1, and we used the opportunity to streamline the build process as well. When you compile from source code, you can update to the latest revision as usual with the command Code: svn update This takes care of everything automatically, but if you run this in an existing working copy that was checked out before r410, please run the following commands as well: Code: rm -rf ExtLibs/freealut/build/ rm -rf ExtLibs/mpg123/build/ rm -rf ExtLibs/openal-soft/build/
These commands make sure that stale and now unused files created in earlier builds don't confuse the linker in current builds. After the above commands, just re-run SCons as usual: Code: scons and everything should work properly on Ubuntu 11.10 -- and of course on older versions and on other systems as well!
Post and read comments about this news item at the related forum topic.
Of animation channels, blending and poses
Thursday, 2011-10-06
As indicated in my previous post, we continue to make very good progress with the Model Editor, and it looks as if we will not only meet our technical goals, but we can even achieve more than what was originally planned: While the Model Editor itself is almost complete now, we've also taken the opportunity to improve the underlying model code. Our latest feature addition was support for animation channels. Channels allow animations to play only on a subset of the model joints, so that multiple animations can play on different parts of the model at the same time. For example, you can play a walking animation on the legs, an animation for swinging the arms on the upper body, and an animation for moving the eyes on the head. At the same time, it makes sense to consider animation blending. Blending means that you can blend from e.g. a "standing idle" animation to "walking", or from "walking" to "running", with an elegant and smooth transition of the legs from one action to the next. Without blending, the legs used to pop from standing still to extended for running with no transition at all. Blending is also fully compatible with channels, that is, you can set different blends for different channels. Finally, channels and blending give rise to animation poses. The pose of a model is the result of the combined application of a set of animation sequences at given frame numbers playing in given channels, possibly blended. Poses are especially of technical interest, because they encapsulate all related data and keep it separate from the main model definition (which is "pose agnostic"), thus improving both the code clarity and design, as well as the capability for caching pose-related data. Once complete, all this functionality will be accessible both from C++ game code as well as from map scripts. Much of the above has been implemented already, and we're currently focusing on completing the rest. Implementing this is a lot of fun, too, and now in fact I'm looking forward to get back to work!
Post and read comments about this news item at the related forum topic.
Model Editor Screenshot
Sunday, 2011-08-07
After we made a lot of very positive progress with the development of the Model Editor ( Introduction) during the past few months, it will soon be complete and ready for release. Here is a screenshot of the current state, showing how we used the Model Editor to add a GUI fixture to a model. A GUI fixture defines how and where a GUI can be attached to a model. Normally we attach GUI fixtures to computer screens and controls panels, but for testing, we took the Trinity player model, making it look as if she holds an interactive GUI panel in her hands: Note that the attached GUI is fully functional: - When the model is animated, the GUI is animated as well (video),
- and in the game, the GUI can of course be interactively used (even when animated
).
We'll next finish the few remaining details as quick as possible, and expect to make a new release that contains the new Model Editor in early September. Among other features we're working on, we've started looking into and working with Premake, in order to provide an alternative to SCons that makes building all Cafu-related software on all platforms possible in the native IDEs (e.g. Visual Studio) and thus as easy and convenient as possible.
Post and read comments about this news item at the related forum topic.
Reference Documentation
Tuesday, 2011-03-15
New and up-to-date reference documentation for bothis now available!  We've been documenting most of the C++ source code in the special commenting format for Doxygen for years. Doxygen is a tool for creating reference documentation from special C/C++ source code comments, and finally we got around to look into the setup, configuration, upload details and active usage of Doxygen. Secondly, we have been able to migrate our Cafu scripting reference documentation from our Wiki to a second, separate Doxygen system as well. This leaves all "prose" and introductory documentation in the Wiki, but allows us to enjoy all the nice features of Doxygen for our scripting reference documentation.  The new C++ reference documentation is found at http://api.cafu.de/, the new scripting documentation is found at http://api.cafu.de/scripting/. For convenient access, both links are also available in the "quick links" menu at the top right of each Cafu website: As always, also regarding the new documentation, any help with augmenting or improving, as well as any feedback, is always much appreciated. Enjoy!
Post and read comments about this news item at the related forum topic.
|