Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Bruno Heidelberger, posted on August 19, 2001

Image Description, by Bruno Heidelberger

The above picture shows a few models animated with Cal3D, a free skeletal-based character animation library I am developing in my spare-time. It will be used in the 3d clients for WorldForge, but its design is very general and flexible, so many other projects can benefit from it too.

Here is a list of the most interesting features:
  • Transformation of vertices and normals according to one or more weighted bones (no hardcoded limit).
  • Powerful animation system that allows seamless blending and mixing between different animation tracks.
  • Flexible material handling with unlimited materials and map-channels.
  • VIPM for level-of-detail that takes material borders into account.
  • Platform- and graphic API-independency. Written in "vanilla" C++ and STL.
  • Unified exporter framework to support different 3d modellers, currently working with 3d Studio MAX / Character Studio.
  • Released under a free license, source-code and all specifications are open.
  • A short description of the stuff you can see in the screenshot:
  • An animaton cycle of a segmented skeleton with rigid bone-assignments on the bottom.
  • A one-skin paladin with about 18 different materials and up to 5 influences per vertex on the top-left.
  • Tux doing some sort of hip-hop in the middle.
  • A high-poly model (~50'000 faces) that was used to test the LOD algorithms in the library on the top-right.
  • An animation system is hard to present with a screenshot, so I suggest you take a closer look at The Cally Demo which shows many features in an interactive way. It can be found on the project website with everything else, such as more screenshots, source-code, file-formats, message-board etc.

    That was my humble part, now I am eagerly awating your critical feedback ;)

    Bruno Heidelberger

    Image of the Day Gallery


    Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
    Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
    Nate Miller

    August 19, 2001, 03:21 PM

    Very nice. I like the dancing skeleton.



    August 19, 2001, 03:33 PM

    I like "Tux doing some sort of hip-hop in the middle"


    August 19, 2001, 03:34 PM

    Looks really good. In order to blend between walking and running do you synchronize the animations (for example in both animations the character takes two steps and starts off on the left foot) or do you have a better way of handling this?



    August 19, 2001, 03:50 PM

    How is Worldforge coming along anyway? I was following the project for a while several months ago, but haven't checked it since. Is it getting close to a playable release?


    August 19, 2001, 04:00 PM

    There was a release of Acorn 0.4 some weeks ago which is a first playable game built on top of the WorldForge technology. It's a very important milestone for the project.

    All in all the projects starts getting a lot of momentum, but as you surely know, a full system for a MMORPG will take a lot of time to build.


    August 19, 2001, 04:09 PM

    Currently all cycles (this is how I call animations like walk, run, jog etc.) have to be synchronized in order to get a decent result when blending them in a loop. The library allows you to de-synchronize them though, if you really want that.

    Thomas Young

    August 19, 2001, 04:49 PM

    For the blending between different animation tracks,
    do you support different blend percentages for different parts of the body?
    This is a nice way to stop foot sliding that can otherwise result from the blending.
    (increase the blend percentage for each foot only when that foot is already moving)


    August 19, 2001, 05:01 PM


    btw. I don't have any comments, but I would really like to know where you got that Tux model from :)


    August 19, 2001, 06:01 PM

    tux grooving... should replace the dancing baby at any cost :)

    very nice work, if only i knew how it all worked...


    August 20, 2001, 01:54 AM

    does your codes optimized, how about having 100 character in scene?
    can characters have any tools in hands or having different dresses?


    August 20, 2001, 02:04 AM

    what colision detection algorithm should i use to process regarding your engine?
    suppose a vrtual combat in that two character contact to each other
    very fast and Continuously.ehat colision system do you consider?


    August 20, 2001, 02:26 AM

    No, you can't set different blend percentages for different body parts, not in the same animation track. But it's possible to export an animation track for only a part of the skeleton, so this can prevent sliding too.


    August 20, 2001, 02:45 AM

    Cal3D isn't optimized yet. The last few weeks brought many new features into the library and it's not worth to do much optimization in such an early stage. This doesn't mean that the code is very slow, just that there is some room for improvements.

    The number of animated models at the same time depends on the complexity of the meshes. I have done a little demo (unoptimzed again) with 30 animated models, each built with ~800 faces. It runs with >30 fps on a GeForce 256/PIII 600 Mhz (normals are skinned too and used for lightning). No idea if this is fast enough, or not =)

    You can get the current transformations for the bones and other exported dummy objects, so attachment of tools etc. is possible.

    Different dresses can be accomplished in two ways: First you can simple switch the texture(s) of the model, or you can switch meshes (the whole model or only parts).


    August 20, 2001, 02:52 AM

    Collision detection is one of the missing parts in the library. It is not that easy to handle for skinned models, and I currently lack knowledge about this topic.

    There will probably be a simple collision detection system in the Cal3D library in the future, but for now you have to come up with something on your own, or use another library specialized on collision detection. Sorry for this.

    * mythos *

    August 20, 2001, 04:38 AM

    nice work ! I will have a look
    does your exporter work with Max3 or Max4 ?


    August 20, 2001, 04:55 AM

    It works with both.

    Note that there is a well-known problem in the MAX 4 SDK, that will most likely result in some compiler-errors. Read the thread on this topic in the Cal3D message-board for a solution.


    August 20, 2001, 08:52 AM

    very sweet. it's great to see ppl are willing to release their source code. I agree with lycium, *death to dancing babies*


    August 20, 2001, 02:15 PM

    Interesting ... very interesting


    August 20, 2001, 02:35 PM

    surely you could generate bounding volumes and warp them along with the mesh, then use those to bound perfect triangle/triangle intersection tests. no?

    This thread contains 19 messages.
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.