|
From: Thomas S. <th...@dr...> - 2010-11-26 10:24:07
|
Hi Carsten, Thanks for your nice words. Concerning bone animations: I already had my share of explanation tries. My last and most exhaustive version can be found here: http://sourceforge.net/projects/assimp/forums/forum/817654/topic/3880745 Nodes: are local named coordinate systems that specify a transformation in relation to their parent. They're standard building blocks of a scene hierarchy. By default, they don't have anything to do with bones. Bones: are math helper structures that describe how certain parts of a mesh deform with the movement of a scene node. The bone's name matches exactly one node's name - that's the connection between bones and nodes. The bones describes which mesh parts are affected, the node describes the current pose of the skeleton. The bone's offset matrix desribes the transformation from mesh space to local bone space. The node's current transformation in concatenation with its parents describes the other way around. Together they form the bone's transformation matrix which you can use to deform vertices, e.g. in a vertex shader. > - Why do they exist at all (there are aiNodes already)? Bones contain vertex weights and the offset matrix, sometimes also called inverse bind matrix. > - Does a bone with name "x" unambiguously refer to a node with the > same name "x"? Yes. This is also validated by Assimp if you specified the corresponding post processing step on import. You have to instruct your artists to comply, though. In my experience they tend to do this automatically, but copy&paste sometimes bites you in the back. > - If so, why do bones have another 4x4 offset matrix? (are bones a > kind of sub-node?) The bone's offset matrix describes the transformation from mesh space to local bone space. The corresponding node and its parents describe the reverse direction. > - An aiAnimation instance animates aiNodes (never aiBones), right? Yes. > - How do I compute the coordinate of an animated vertex? See the link above. Good luck. Bye, Thomas |