void SkeletonBlendedGeometry::calculateJointTransform(void)
{
    //Precalculate the matrix for each joint
    Matrix m;
    for(UInt32 i(0) ; i<getNumJoints() ; ++i)
    {
        m.setValue(getBindTransformation());
        m.multLeft(getInternalJointInvBindTransformations(i));
        m.multLeft(getJoint(i)->getToWorld());

        if( m != _JointPoseTransforms[i])
        {
            _JointPoseTransforms[i].setValue(m);
            _NeedRecalc             = true;
        }
    }
}
Matrix SkeletonBlendedGeometry::getBindTransformationDiff(UInt32 index) const
{
    Matrix Result(getInternalJointInvBindTransformations(index));
    Result.multLeft(dynamic_cast<Node*>(getJoint(index)->getParents()[0])->getToWorld());
    return Result;
}
Matrix SkeletonBlendedGeometry::getAbsoluteBindTransformation(UInt32 index) const
{
    Matrix Result(getInternalJointInvBindTransformations(index));
    Result.invert();
    return Result;
}