[Bf-committers] Armatures for beyond Release 2.4

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Dec 23 20:12:15 CET 2005


Hi,

Gilbert, Joseph T. wrote:
> Thx Brecht :) This is useful info and I think we can apply it.
> It would be nice to have a mat3_to_vec_roll in there somewhere that way
> I wouldn't have to figure it out :)

Here you go:

/*  Computes vector and roll based on a rotation. "mat" must
     contain only a rotation, and no scaling. */
void mat3_to_vec_roll(float mat[][3], float *vec, float *roll)
{
     if (vec)
         VecCopyf(vec, mat[1]);

     if (roll) {
         float vecmat[3][3], vecmatinv[3][3], rollmat[3][3];

         vec_roll_to_mat3(mat[1], 0.0f, vecmat);
         Mat3Inv(vecmatinv, vecmat);
         Mat3MulMat3(rollmat, vecmatinv, mat);


         *roll= atan2(rollmat[2][0], rollmat[2][2]);
     }
}

That should fit nicely in armature.c, but not committing it
now due to the freeze.

Brecht.


More information about the Bf-committers mailing list