How Can I Interpolate Rotation Matrices for Skeletal Animation?

Click For Summary
SUMMARY

This discussion focuses on interpolating rotation matrices for skeletal animation, specifically using quaternions and Euler angles. The standard methods for interpolation are identified as quaternions and Euler angles, with quaternions being favored for their effectiveness. The process involves finding the eigenvector of the rotation matrix, which is straightforward due to the orthogonality of the matrices. Additionally, direction cosines can be used as an alternative method for relating frames to reference axes.

PREREQUISITES
  • Understanding of 3x3 rotation matrices
  • Knowledge of eigenvectors and their calculation
  • Familiarity with quaternions and Euler angles
  • Basic concepts of skeletal animation systems
NEXT STEPS
  • Learn about quaternion interpolation techniques in skeletal animation
  • Study the process of converting rotation matrices to Euler angles
  • Research the calculation of eigenvectors for 3x3 matrices
  • Explore the use of direction cosines in animation frame interpolation
USEFUL FOR

Game developers, animators, and software engineers working on skeletal animation systems who need to implement efficient rotation interpolation techniques.

Dissident Dan
Messages
244
Reaction score
1
I'm working on a skeletal animation system, and I want to interpolate the rotations between frames. The rotations are represented by 3x3 matrices.

It's easy enough to interpolate one of the axes linearly by averaging the values from the two frames and re-normalizing, but when you do this with 3 axes, they usually lose their orthogonality.

One possible way to interpolate them would be to convert them to Euler angles (which I still need to learn/figure out how to do), interpolate those, and then convert back to a matrix.

Is there any way to interpolate matrices without first converting them to another representation?
 
Physics news on Phys.org
Dissident Dan said:
Is there any way to interpolate matrices without first converting them to another representation?

Not that I know of. The two standard approaches (to interpolating rotations) are to use either Euler angles or quaternions. I've never heard of any other technique.
 
Of master coda's two, quaternions will probably work best.

You'll find the eigenvector for your rotation matrix. Then you rotate about your eigenvector. That's an oversimplified general description but gives the general gist.

All of your rotation matrices are orthogonal, so finding the eigenvector is pretty easy. If you think of the top row as being associated with your x-axis, 2nd with the y, 3rd with the z and think of your 1st column as x, 2nd as y, 3rd as z, your eigenvector winds up being:

x : yz-zy
y : xz-zx
z : xy-yx

There's a more formal way to find eigenvectors for matrices in general, but I honestly couldn't tell you what it is anymore (if I ever could).

The alternative is to relate your frames directly back to your reference axes using direction cosines. It's a little harder to visualize, but it works just as well.

I think the actual difference between the two methods is pretty minor, although programmers get into pretty heated debates about it. My general impression is that quaternions are considered way more cool by most programmers.
 

Similar threads

  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
Replies
3
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 10 ·
Replies
10
Views
6K
  • · Replies 4 ·
Replies
4
Views
1K
  • · Replies 6 ·
Replies
6
Views
3K