Advertisement Jump to content
Sign in to follow this  
JohnnyCode

bone transformations without translations?

This topic is 1880 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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!

Share this post


Link to post
Share on other sites
Advertisement

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.

Share this post


Link to post
Share on other sites

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.

Edited by Paradigm Shifter

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!