-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Robert Osfield wrote:
> On Dec 10, 2007 8:27 PM, Jeremy Moles <[EMAIL PROTECTED]> wrote:
>> One thing that should be kept in mind when using Cal3D is that in it's
>> current state, Cal3D isn't a skeletal system alone--it's a skeletal
>> animation system+mesh format, and one cannot be divorced from the other.
>> Furthermore, there is a lot of data reproduction in Cal3D that already
>> exists in OSG, and no way to easily (or cleanly) make changes therein.
> 
> How big is Cal3D?  I ask in terms how much effort would it be required
> to reimplement the unique parts not found in the core OSG?

Cal3D implements basically these things:

1) Data loading (including exporters for popular modelling packages) -
mesh, skeleton, animation files. Skeleton can be arbitrary - e.g. an
octopus or even a car, it is not restricted to humanoid skeletons
(important feature, IMO!).

2) Keyframe interpolation - you get two poses of the skeleton and you
need to calculate the in-betweens smoothly. Basically quaternion
slerping, but it can get hairy.

3) Animation blending/mixing. You want a guy to walk and e.g. wave his
hand or fire a weapon at the same time - this is animation mixing.
Switching between animations should be smooth, not abrupt - blending
between poses of different animations over a given time.

4) A little bit of support for spring-mass systems, this was intended
for cloth simulation. It doesn't work too well.

5) Software skinning - after calculating the final pose of the skeleton,
the mesh is deformed to conform with it. This can be bypassed, if the
renderer implements hardware skinning instead.

6) Support for attachments - e.g. a guy picking up a sword from the
ground and the sword is then animated together with his hand.

As such, the library is not really big. I would hesitate to go and
re-implement it without reason, because lot of things you cannot do too
differently than what Cal3D does already. If there are specific issues
with the library, I would prefer to try to fix it first before throwing
it away, together with the large amount of existing data for it and the
set of working exporters.

On the other hand, a person who knows what he is doing with regards to
character animation could re-implement most of the Cal3D functionality
easily. However, please, keep in mind that the animation stuff goes way
beyond rendering a guy using a hardwired shader for skinning playing a
single animation (that is what e.g. osgCharacter does). That is a toy
that is not really usable. At least, the keyframe interpolation and
animation blending/mixing are essential and need to be in place. Only
then can a system such as ReplicantBody or even higher level be used to
actually build a usable animation control system on top of it - with
navigation, path finding, ground following, motion planning, etc.

I do not see much issue with data duplication - the only thing that
could be duplicated is the mesh geometry that OSG could potentially load
from elsewhere. Skeletons and animations have no support in OSG at the
moment. There is also no rendering code in Cal3D itself - all happens on
abstract data structures, the library is completely independent on any
renderer. It only provides data suitable for feeding into e.g. vertex
arrays in OpenGL.

However, there is no problem with adding an external loader for these
data to Cal3D - everything can be built procedurally, bypassing the
native data formats (XML-based, btw). Potential integration could be
e.g. with Collada file format that seems to have some support for
skeletal animation built-in.

>> In the opinion of someone who is familiar with Cal3D, I'd say that we
>> wait a bit on inclusion of this until someone has the time to cleanup
>> the current plugin. Hardware skinning is a pretty common performance
>> boost these days, and whatever solution arises for OSG, I'd personally
>> look at support for this feature as the make-or-break aspect.
> 
> I thought there was already hardware skinning support in place.  So
> which versions which hardware skinning?

The osgCal2 plugin has hardware skinning already, however the code needs
a bit stabilization and cleanup, IMO. Also, it could use wider testing,
specifically for the threading issues.

>> To be completely honest, character animation is such a huge issue unto
>> itself that it probably deserves a lot of discussion and review before
>> any steps are taken--but that's just my opinoin.
> 
> Indeed - a good topic to break out into a separate thread...

True. However, Cal3D and osgCal2 are fairly mature libraries, being in
development for many years (Cal3D at least). They provide at the very
least the minimal support one needs to get skeletal animation running.
Unless somebody sits down today and delivers a new library tomorrow,
there is nothing else free (as in freedom) available on the table with
comparable features.

Regards,

Jan
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Mandriva - http://enigmail.mozdev.org

iD8DBQFHXrKWn11XseNj94gRAkfNAJ9kzc8ZoGkOBAe1Skz+zpa4NdUT9gCg1bjW
jK4YPectOSPrtDDZM+uejJE=
=9Rnh
-----END PGP SIGNATURE-----
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to