}
- glm::mat4 m = parentTrans * animTrans * aiMatrixToMat4(ai.mTransformation) * model;
+ glm::mat4 m = parentTrans * animTrans * aiMatrixToMat4(ai.mTransformation);
- for (auto child: children) {
- boneTransforms[std::string(ai.mName.C_Str())] = m;
- }
+ /* for (auto child: children) { */
+ /* boneTransforms[std::string(ai.mName.C_Str())] = m; */
+ /* } */
for (unsigned int i: meshIndices) {
const Mesh &mesh = meshes[i];
std::string nodeName = pair.first;
unsigned int boneId = pair.second.first;
+ // This is actually an inverse-bind matrix
+ // i.e. position of the mesh in bone space
+ // so no need to inverse again!
+ // https://github.com/assimp/assimp/pull/1803/files
glm::mat4 boneOffset = pair.second.second;
glm::mat4 boneTrans(1.f);
- if (boneTransforms.count(nodeName)) {
- std::cerr << "got bone transform from map" << std::endl;
- boneTrans = boneTransforms[nodeName];
- }
+ /* if (boneTransforms.count(nodeName)) { */
+ /* std::cerr << "got bone transform from map" << std::endl; */
+ /* boneTrans = boneTransforms[nodeName]; */
+ /* } */
for (const Animation anim: animMap->at(nodeName)) {
float t = fmod(tick, anim.duration);
for (const aiNodeAnim *nodeAnim: anim.nodeAnims) {
}
}
- boneTrans = boneTrans * glm::inverse(boneOffset);
+ boneTrans = boneTrans * boneOffset;
std::string boneLocStr = "bones[" + std::to_string(boneId) + "]";