bone transformations without translations?

Started by
2 comments, last by Paradigm Shifter 10 years, 4 months ago

HI,

I have a question wheather it is pefectly reasonable to create bone transformation matricies without translation part.

in case, that, all bones are connected to each other, plus, bones cannot bend, plus, bonnes cannot scale (move their ends closer), plus, all bones are rooted to common ancestor. Will this result in a 'in place' animation, which will be the same animation, but bones will not move if the common ancestor translates (in the end, translation of common ancestor bone is ignored too). The common ancestor is spine. Each bone has its absolute 3x3 matrix of rotation, that contains in its matrix rotations of parent bones up to ancestor.

Thanks!

Advertisement

If you don't have a translation then the origin (0, 0, 0) always gets transformed to itself when you multiply matrices.

"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

Becouse I have a little disbelief. If one rotates something in space by 3x3 matrix , he rotates it around 0,0,0 point. Rotation around an arbitray point of the space is a transformation thet needs the fourth translation part? Is it? I would like the bone matricies be in object space, not bone local space, thus, they would have to rotate around 0,0,0 point, but, have them effectively rotate around their local rooty point, which in turn is an arbitrary point of object space.

A 3x3 matrix can only transform a 3D Vector Space to itself via a linear mapping, and a linear map always sends the origin to itself. You need an affine map which is a linear map combined with a translation part, 4x4 matrices work nicely for that (you can just use a 3x3 matrix and a 3D translation vector, but the maths is less elegant (i.e. less simple)).

EDIT: Note multiplying the 4D origin by a matrix also results in the 4D origin, i.e. (0, 0, 0, 0). That isn't a valid point in 4D homogeneous space though, the 3D origin in homogeneous space is (0, 0, 0, w) for any non zero w. Homogeneous space is 3D space with points at infinity "bolted on" basically. The vector (x, y, z, 0) represents a vector pointing in the direction of (x, y, z) in 3D space but infinitely far away (so handy for directions of normals). (0, 0, 0, 0) doesn't point anywhere so it makes no sense in 4D homogeneous coordinates.

"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

This topic is closed to new replies.

Advertisement