PDA

View Full Version : Skeletal Animation



Rockinredross867
12-30-2015, 02:50 PM
I want to know where I can find a GOOD tutorial online about skeletal animation. I have been searching everywhere for a nice tutorial that I can understand this and also how to implement skeletal into my code. For example this site http://ogldev.atspace.co.uk/www/tutorial38/tutorial38.html is great, but one problem when I am implementing it into my code he puts variables that aren't even declared in his code. I just need a good enough tutorial where I can understand this. I am using Assimp to do this. I know that this is a complex concept, but I need it to where a person that is just a beginner to understand.

Rockinredross867
12-31-2015, 05:15 PM
Please just any other tutorials online that show the process of implementing this and explaining in detail on what everything is. I will be soo happy once skeletal animation is through with.

Dark Photon
01-01-2016, 12:46 PM
I just need a good enough tutorial where I can understand this. ... I know that this is a complex concept, but I need it to where a person that is just a beginner to understand.

I remember that feeling well. Here's my recommendation to a similar request from a past post (https://www.opengl.org/discussion_boards/showthread.php/178151-Animation?p=1239683&viewfull=1#post1239683):

A lot of the skeletal animation info available on the net is just "so-so" (many assume knowledge of things you might not know or use odd or confusing names for things), so you can spend a lot of time here if you don't know where to look. I would suggest you first read Chapter 11 of Jason Gregory's Game Engine Architecture (http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135/ref=sr_1_1?ie=UTF8&qid=1341514685)-- or if you're impatient, just Sections 11.1 - 11.5 (you can pick up the rest later). For a short-but-good tutorial on the skeletal transforms specifically (Gregory covers this well also), read Chapter 4.2: Filling the Gaps: Advanced Animation Using Stitching and Skinning from Game Programming Gems (http://www.amazon.com/Game-Programming-Gems-CD/dp/1584500492) (also in Best of Game Programming Gems (http://www.amazon.com/Best-Game-Programming-Gems-DeLoura/dp/1584505710/ref=sr_1_1?s=books&ie=UTF8&qid=1341514816&sr=1-1&keywords=best+of+game+programming+gems)).

The situation may have changed since, but at the time, I never did find any comprehensive skeletal tutorials on the net that I thought explained everything superbly well from first principles with a base knowledge of only matrix transforms and OpenGL. Many assume a specific import tool or file format and skip some of the basics. I think you could save yourself a lot of time in the long run if you read through at least one (if not both) of the above two sources I list above. Then you'll be able to map that knowledge to any tool and import pipeline you choose to use.

Once you understand the math clearly, Meiri's Tutorial 38: Skeletal Animation With Assimp (http://ogldev.atspace.co.uk/www/tutorial38/tutorial38.html) is a good tutorial to look at. But it uses Assimp for import, and Assimp's documentation isn't really clear in some cases where it comes to skeletal. This makes it difficult to know exactly what some of the transforms it provides you actually are, even after you clearly understand how skeletal transforms work.

If you have questions later, feel free to follow-up.

Rockinredross867
01-01-2016, 07:49 PM
Thank you for the response! I will order the book and read it. I really hope this helps me!

Rockinredross867
01-11-2016, 03:08 PM
As I'm reading I see concatenate. How would I concatenate matrices? Would you just simply do bone->orientation = orientation * localOrientation;? He is also using matrices and I am using GLM which GLM's invert function returns a quaternion. I'm also using assimp so.

GClements
01-11-2016, 04:32 PM
As I'm reading I see concatenate. How would I concatenate matrices? Would you just simply do bone->orientation = orientation * localOrientation;?
For a 3x3 or 4x4 matrix, yes.

If you're using 3x4 matrices containing a rotation and a translation, [M1|T1]*[M2|T2] = [M1*M2|M1*T2+T1]. A similar principle applies to concatenating quaternion-translation pairs.


He is also using matrices and I am using GLM which GLM's invert function returns a quaternion.
The matrix inverse() method returns a matrix. The quaternion inverse() method returns a quaternion.

Rockinredross867
01-11-2016, 05:45 PM
In his book he also uses XFormVec which I have no idea what that is.