Skip to content

Commit

Permalink
Merge pull request assimp#2261 from timmmeh/timmmeh-gltf2-validation-…
Browse files Browse the repository at this point in the history
…patch

Fix failed Assimp validation for glTF2.0 official sample animations
  • Loading branch information
kimkulling committed Dec 11, 2018
2 parents 0cbd798 + ae7a045 commit 15fe157
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions code/glTF2Importer.cpp
Expand Up @@ -832,15 +832,29 @@ aiNode* ImportNode(aiScene* pScene, glTF2::Asset& r, std::vector<unsigned int>&
aiBone* bone = new aiBone();

Ref<Node> joint = node.skin->jointNames[i];
bone->mName = joint->name;
if (!joint->name.empty()) {
bone->mName = joint->name;
} else {
// Assimp expects each bone to have a unique name.
static const std::string kDefaultName = "bone_";
char postfix[10] = {0};
ASSIMP_itoa10(postfix, i);
bone->mName = (kDefaultName + postfix);
}
GetNodeTransform(bone->mOffsetMatrix, *joint);

std::vector<aiVertexWeight>& weights = weighting[i];

bone->mNumWeights = weights.size();
if (bone->mNumWeights > 0) {
bone->mWeights = new aiVertexWeight[bone->mNumWeights];
memcpy(bone->mWeights, weights.data(), bone->mNumWeights * sizeof(aiVertexWeight));
bone->mWeights = new aiVertexWeight[bone->mNumWeights];
memcpy(bone->mWeights, weights.data(), bone->mNumWeights * sizeof(aiVertexWeight));
} else {
// Assimp expects all bones to have at least 1 weight.
bone->mWeights = new aiVertexWeight[1];
bone->mNumWeights = 1;
bone->mWeights->mVertexId = 0;
bone->mWeights->mWeight = 0.f;
}
mesh->mBones[i] = bone;
}
Expand Down Expand Up @@ -1028,7 +1042,7 @@ void glTF2Importer::ImportAnimations(glTF2::Asset& r)
++j;
}
}

// Use the latest keyframe for the duration of the animation
double maxDuration = 0;
for (unsigned int j = 0; j < ai_anim->mNumChannels; ++j) {
Expand All @@ -1053,7 +1067,7 @@ void glTF2Importer::ImportAnimations(glTF2::Asset& r)
}
}
ai_anim->mDuration = maxDuration;

mScene->mAnimations[i] = ai_anim;
}
}
Expand Down

0 comments on commit 15fe157

Please sign in to comment.