Quote:Original post by jyk
My argument is that using quaternions rather than matrices should be an informed decision, based on a thorough understanding of the relative advantages and disadvantages of the degree evidenced in your post.
I agree with that completely :) I'd venture that there's a sizable portion of people that don't understand rotation matrices, but I'm willing to believe that the proportion is higher for quaternions.
Quote:Original post by Trienco
Not faster, but getting the axis and angle and building a new rotation from the interpolated angle is still simple and intuitive.
Sure, but for any advantage of rotation matrices, I could make the same argument: converting a quaternion to a matrix is simple and fast. Thus I still count interpolation as one of the primary advantages of quaternions.
Quote:Original post by Trienco
But seeing how many cross products are happening all over the place with quaternions...
Quaternion multiplation (composed rotation) is effectively four dot products with a few negations (depending on your internal representation). No cross products necessary...
Quote:Original post by Trienco
I wouldn't say much. 18 mults, 9 adds, 1 sin, 1 cos vs. 1 div, 3 mults, 1 sin, 1 cos.. if the compiler makes good use of SSE instructions the difference should be just a few ops.
Incidentally the formula for building a rotation matrix around an arbitrary axis is exactly the formula for converting a quaternion to a rotation matrix.
Quote:Original post by Trienco
Ignore hardware skinning, because with a variable number of bones per vertex it is pretty messy.
Unrelated, but not with Sh (http://libsh.org) ;)
Anyways I'm not opposed to converting quaternions to matrix form very early in the process - for example at each transform hierarchy node (in a scene graph) to compose a local affine transformation. That way you can keep the interpolation and composition advantages where they help, and pay a rather negligable cost (only need to convert to matrix form on update AND can be done lazily wrt the scene node).
Moreover take the performance advantages/disadvantages with a grain of sal; as I mentioned I've yet to see these operations bottleneck a modern computer.
To summarize, I totally agree that you could get away without ever touching quaternions. However one has to admit that they make some things similar and perform at least as well as matrices. Because the conversion process is simple though, you can get the best of both worlds in almost all cases :)