How Can I Interpolate Rotation Matrices for Skeletal Animation?

Dissident Dan
Messages
236
Reaction score
2
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.
 
##\textbf{Exercise 10}:## I came across the following solution online: Questions: 1. When the author states in "that ring (not sure if he is referring to ##R## or ##R/\mathfrak{p}##, but I am guessing the later) ##x_n x_{n+1}=0## for all odd $n$ and ##x_{n+1}## is invertible, so that ##x_n=0##" 2. How does ##x_nx_{n+1}=0## implies that ##x_{n+1}## is invertible and ##x_n=0##. I mean if the quotient ring ##R/\mathfrak{p}## is an integral domain, and ##x_{n+1}## is invertible then...
The following are taken from the two sources, 1) from this online page and the book An Introduction to Module Theory by: Ibrahim Assem, Flavio U. Coelho. In the Abelian Categories chapter in the module theory text on page 157, right after presenting IV.2.21 Definition, the authors states "Image and coimage may or may not exist, but if they do, then they are unique up to isomorphism (because so are kernels and cokernels). Also in the reference url page above, the authors present two...
When decomposing a representation ##\rho## of a finite group ##G## into irreducible representations, we can find the number of times the representation contains a particular irrep ##\rho_0## through the character inner product $$ \langle \chi, \chi_0\rangle = \frac{1}{|G|} \sum_{g\in G} \chi(g) \chi_0(g)^*$$ where ##\chi## and ##\chi_0## are the characters of ##\rho## and ##\rho_0##, respectively. Since all group elements in the same conjugacy class have the same characters, this may be...
Back
Top