Merge branch 'master' into enable_vs_warning_all

This commit is contained in:
Kim Kulling
2020-03-17 19:19:29 +01:00
committed by GitHub
2 changed files with 59 additions and 0 deletions

View File

@@ -814,6 +814,47 @@ void glTF2Exporter::ExportMeshes()
if(aim->HasBones()) {
ExportSkin(*mAsset, aim, m, b, skinRef, inverseBindMatricesData);
}
/*************** Targets for blendshapes ****************/
if (aim->mNumAnimMeshes > 0) {
p.targets.resize(aim->mNumAnimMeshes);
for (unsigned int am = 0; am < aim->mNumAnimMeshes; ++am) {
aiAnimMesh *pAnimMesh = aim->mAnimMeshes[am];
// position
if (pAnimMesh->HasPositions()) {
// NOTE: in gltf it is the diff stored
aiVector3D *pPositionDiff = new aiVector3D[pAnimMesh->mNumVertices];
for (unsigned int vt = 0; vt < pAnimMesh->mNumVertices; ++vt) {
pPositionDiff[vt] = pAnimMesh->mVertices[vt] - aim->mVertices[vt];
}
Ref<Accessor> v = ExportData(*mAsset, meshId, b,
pAnimMesh->mNumVertices, pPositionDiff,
AttribType::VEC3, AttribType::VEC3, ComponentType_FLOAT);
if (v) {
p.targets[am].position.push_back(v);
}
delete[] pPositionDiff;
}
// normal
if (pAnimMesh->HasNormals()) {
aiVector3D *pNormalDiff = new aiVector3D[pAnimMesh->mNumVertices];
for (unsigned int vt = 0; vt < pAnimMesh->mNumVertices; ++vt) {
pNormalDiff[vt] = pAnimMesh->mNormals[vt] - aim->mNormals[vt];
}
Ref<Accessor> v = ExportData(*mAsset, meshId, b,
pAnimMesh->mNumVertices, pNormalDiff,
AttribType::VEC3, AttribType::VEC3, ComponentType_FLOAT);
if (v) {
p.targets[am].normal.push_back(v);
}
delete[] pNormalDiff;
}
// tangent?
}
}
}
//----------------------------------------