Merge branch 'glt2anim' of https://github.com/haroonq/assimp into glt2anim

pull/2191/head
Haroon Qureshi 2018-10-29 14:46:43 -07:00
commit bfe1dc2914
2 changed files with 37 additions and 0 deletions

View File

@ -973,9 +973,14 @@ inline void ExtractTranslationSampler(Asset& asset, std::string& animId, Ref<Buf
return;
}
<<<<<<< HEAD
const vec3 kZeros = {0, 0, 0};
std::vector<float> times(numKeyframes);
std::vector<vec3> values(numKeyframes, kZeros);
=======
std::vector<float> times(numKeyframes);
std::vector<vec3> values(numKeyframes);
>>>>>>> 57d3d71b6ec68f41a10c1da2f01d096f1308e88c
for (unsigned int i = 0; i < numKeyframes; ++i) {
const aiVectorKey& key = nodeChannel->mPositionKeys[i];
// mTime is measured in ticks, but GLTF time is measured in seconds, so convert.
@ -997,9 +1002,14 @@ inline void ExtractScaleSampler(Asset& asset, std::string& animId, Ref<Buffer>&
return;
}
<<<<<<< HEAD
const vec3 kZeros = {0, 0, 0};
std::vector<float> times(numKeyframes);
std::vector<vec3> values(numKeyframes, kZeros);
=======
std::vector<float> times(numKeyframes);
std::vector<vec3> values(numKeyframes);
>>>>>>> 57d3d71b6ec68f41a10c1da2f01d096f1308e88c
for (unsigned int i = 0; i < numKeyframes; ++i) {
const aiVectorKey& key = nodeChannel->mScalingKeys[i];
// mTime is measured in ticks, but GLTF time is measured in seconds, so convert.
@ -1021,9 +1031,14 @@ inline void ExtractRotationSampler(Asset& asset, std::string& animId, Ref<Buffer
return;
}
<<<<<<< HEAD
const vec4 kZeros = {0, 0, 0, 0};
std::vector<float> times(numKeyframes);
std::vector<vec4> values(numKeyframes, kZeros);
=======
std::vector<float> times(numKeyframes);
std::vector<vec4> values(numKeyframes);
>>>>>>> 57d3d71b6ec68f41a10c1da2f01d096f1308e88c
for (unsigned int i = 0; i < numKeyframes; ++i) {
const aiQuatKey& key = nodeChannel->mRotationKeys[i];
// mTime is measured in ticks, but GLTF time is measured in seconds, so convert.

View File

@ -751,9 +751,15 @@ static void BuildVertexWeightMapping(Ref<Mesh>& mesh, std::vector<std::vector<ai
attr.weight[0]->ExtractData(weights);
attr.joint[0]->ExtractData(indices);
<<<<<<< HEAD
for (int i = 0; i < num_vertices; ++i) {
for (int j = 0; j < 4; ++j) {
const unsigned int bone = indices[i].values[j];
=======
for (unsigned int i = 0; i < num_vertices; ++i) {
for (unsigned int j = 0; j < 4; ++j) {
const int bone = indices[i].values[j];
>>>>>>> 57d3d71b6ec68f41a10c1da2f01d096f1308e88c
const float weight = weights[i].values[j];
if (weight > 0 && bone >= 0 && bone < map.size()) {
map[bone].reserve(8);
@ -894,7 +900,11 @@ aiNodeAnim* CreateNodeAnim(glTF2::Asset& r, Node& node, AnimationSamplers& sampl
samplers.translation->output->ExtractData(values);
anim->mNumPositionKeys = samplers.translation->input->count;
anim->mPositionKeys = new aiVectorKey[anim->mNumPositionKeys];
<<<<<<< HEAD
for (unsigned int i = 0; i < anim->mNumPositionKeys; ++i) {
=======
for (int i = 0; i < anim->mNumPositionKeys; ++i) {
>>>>>>> 57d3d71b6ec68f41a10c1da2f01d096f1308e88c
anim->mPositionKeys[i].mTime = times[i] * kMillisecondsFromSeconds;
anim->mPositionKeys[i].mValue = values[i];
}
@ -916,7 +926,11 @@ aiNodeAnim* CreateNodeAnim(glTF2::Asset& r, Node& node, AnimationSamplers& sampl
samplers.rotation->output->ExtractData(values);
anim->mNumRotationKeys = samplers.rotation->input->count;
anim->mRotationKeys = new aiQuatKey[anim->mNumRotationKeys];
<<<<<<< HEAD
for (unsigned int i = 0; i < anim->mNumRotationKeys; ++i) {
=======
for (int i = 0; i < anim->mNumRotationKeys; ++i) {
>>>>>>> 57d3d71b6ec68f41a10c1da2f01d096f1308e88c
anim->mRotationKeys[i].mTime = times[i] * kMillisecondsFromSeconds;
anim->mRotationKeys[i].mValue.x = values[i].w;
anim->mRotationKeys[i].mValue.y = values[i].x;
@ -942,7 +956,11 @@ aiNodeAnim* CreateNodeAnim(glTF2::Asset& r, Node& node, AnimationSamplers& sampl
samplers.scale->output->ExtractData(values);
anim->mNumScalingKeys = samplers.scale->input->count;
anim->mScalingKeys = new aiVectorKey[anim->mNumScalingKeys];
<<<<<<< HEAD
for (unsigned int i = 0; i < anim->mNumScalingKeys; ++i) {
=======
for (int i = 0; i < anim->mNumScalingKeys; ++i) {
>>>>>>> 57d3d71b6ec68f41a10c1da2f01d096f1308e88c
anim->mScalingKeys[i].mTime = times[i] * kMillisecondsFromSeconds;
anim->mScalingKeys[i].mValue = values[i];
}
@ -965,7 +983,11 @@ std::unordered_map<unsigned int, AnimationSamplers> GatherSamplers(Animation& an
std::unordered_map<unsigned int, AnimationSamplers> samplers;
for (unsigned int c = 0; c < anim.channels.size(); ++c) {
Animation::Channel& channel = anim.channels[c];
<<<<<<< HEAD
if (channel.sampler >= static_cast<int>(anim.samplers.size())) {
=======
if (channel.sampler >= anim.samplers.size()) {
>>>>>>> 57d3d71b6ec68f41a10c1da2f01d096f1308e88c
continue;
}