Bone* Model::generateSketetalStructure(BoneData boneData, int& numBones){ Bone* bone = new Bone(); bone->setIndex(boneData.boneIndex); bone->setName(boneData.name); bone->setBindPosition(boneData.bindPosition); bone->setBindRotation(boneData.bindRotation); bone->setBindScale(boneData.bindScale); bone->moveToBind(); Matrix4 offsetMatrix(boneData.offsetMatrix[0][0], boneData.offsetMatrix[1][0], boneData.offsetMatrix[2][0], boneData.offsetMatrix[3][0], boneData.offsetMatrix[0][1], boneData.offsetMatrix[1][1], boneData.offsetMatrix[2][1], boneData.offsetMatrix[3][1], boneData.offsetMatrix[0][2], boneData.offsetMatrix[1][2], boneData.offsetMatrix[2][2], boneData.offsetMatrix[3][2], boneData.offsetMatrix[0][3], boneData.offsetMatrix[1][3], boneData.offsetMatrix[2][3], boneData.offsetMatrix[3][3]); bone->setOffsetMatrix(offsetMatrix); bonesNameMapping[bone->getName()] = bone; if (bone->getIndex() >= 0){ numBones++; } for (size_t i = 0; i < boneData.children.size(); i++){ bone->addObject(generateSketetalStructure(boneData.children[i], numBones)); } bone->model = this; return bone; }