Page dedicated to knowledge related to skinning.

Bone diagram

classDiagram class aiScene{ +aiMesh[] } class aiMesh{ +aiVector3D vertices[] +aiBone[] } class aiBone{ +string name +mat4 offsetMatrix +aiVertexWeight[] } class aiVector3D{ +float x +float y +float z } class aiVertexWeight{ +uint VertexID +float Weight } note for aiVertexWeight " VertexID: Index of the vertex which is influenced by the bone. Index is from aiMesh array of vertices. " aiScene "1" --* "0..*" aiMesh aiMesh "1..*" --* "0..*" aiBone aiMesh "1..*" --* "0..*" aiVector3D aiBone "1..*" --* "0..*" aiVertexWeight aiVertexWeight "1" --> "1" aiVector3D

Animation diagram

classDiagram class aiScene{ aiNode RootNode +Animations[] } class aiNode{ +string Name +mat4 Transformation +aiNode Parent +aiNode Children[] } note for aiNode "Matrix transform from node space into parent space If the node represents a bone, the names must match. " class aiAnimation{ +double Duration +double TicksPerSecond +aiNodeAnim Channels[] } note for aiAnimation "A single animation represents a sequence of animation frames. " class aiNodeAnim{ +string Name +vector3D Positions[] +quaternion Rotations[] +vector3D Scalings[] } note for aiNodeAnim "Each channel is the bone with all its transformations. The name must match the bone name. " aiScene "1" --* "1" aiNode aiScene "1" --* "0..*" aiAnimation aiNode "1..*" --* "1..*" aiNode aiAnimation "1" --* "0..*" aiNodeAnim