[rmodels] Fix GLTF animation interpolation
This commit is contained in:
parent
aa4cf20eae
commit
92a8749c35
1 changed files with 3 additions and 6 deletions
|
|
@ -6614,7 +6614,6 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
|
||||||
cgltf_animation_channel *translate;
|
cgltf_animation_channel *translate;
|
||||||
cgltf_animation_channel *rotate;
|
cgltf_animation_channel *rotate;
|
||||||
cgltf_animation_channel *scale;
|
cgltf_animation_channel *scale;
|
||||||
cgltf_interpolation_type interpolationType;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Channels *boneChannels = (struct Channels *)RL_CALLOC(animations[a].boneCount, sizeof(struct Channels));
|
struct Channels *boneChannels = (struct Channels *)RL_CALLOC(animations[a].boneCount, sizeof(struct Channels));
|
||||||
|
|
@ -6636,8 +6635,6 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
|
||||||
|
|
||||||
if (boneIndex == -1) continue; // Animation channel for a node not in the skeleton
|
if (boneIndex == -1) continue; // Animation channel for a node not in the skeleton
|
||||||
|
|
||||||
boneChannels[boneIndex].interpolationType = animData.channels[j].sampler->interpolation;
|
|
||||||
|
|
||||||
if (animData.channels[j].sampler->interpolation != cgltf_interpolation_type_max_enum)
|
if (animData.channels[j].sampler->interpolation != cgltf_interpolation_type_max_enum)
|
||||||
{
|
{
|
||||||
if (channel.target_path == cgltf_animation_path_type_translation)
|
if (channel.target_path == cgltf_animation_path_type_translation)
|
||||||
|
|
@ -6689,7 +6686,7 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
|
||||||
|
|
||||||
if (boneChannels[k].translate)
|
if (boneChannels[k].translate)
|
||||||
{
|
{
|
||||||
if (!GetPoseAtTimeGLTF(boneChannels[k].interpolationType, boneChannels[k].translate->sampler->input, boneChannels[k].translate->sampler->output, time, &translation))
|
if (!GetPoseAtTimeGLTF(boneChannels[k].translate->sampler->interpolation, boneChannels[k].translate->sampler->input, boneChannels[k].translate->sampler->output, time, &translation))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_INFO, "MODEL: [%s] Failed to load translate pose data for bone %s", fileName, bones[k].name);
|
TRACELOG(LOG_INFO, "MODEL: [%s] Failed to load translate pose data for bone %s", fileName, bones[k].name);
|
||||||
}
|
}
|
||||||
|
|
@ -6697,7 +6694,7 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
|
||||||
|
|
||||||
if (boneChannels[k].rotate)
|
if (boneChannels[k].rotate)
|
||||||
{
|
{
|
||||||
if (!GetPoseAtTimeGLTF(boneChannels[k].interpolationType, boneChannels[k].rotate->sampler->input, boneChannels[k].rotate->sampler->output, time, &rotation))
|
if (!GetPoseAtTimeGLTF(boneChannels[k].rotate->sampler->interpolation, boneChannels[k].rotate->sampler->input, boneChannels[k].rotate->sampler->output, time, &rotation))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_INFO, "MODEL: [%s] Failed to load rotate pose data for bone %s", fileName, bones[k].name);
|
TRACELOG(LOG_INFO, "MODEL: [%s] Failed to load rotate pose data for bone %s", fileName, bones[k].name);
|
||||||
}
|
}
|
||||||
|
|
@ -6705,7 +6702,7 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
|
||||||
|
|
||||||
if (boneChannels[k].scale)
|
if (boneChannels[k].scale)
|
||||||
{
|
{
|
||||||
if (!GetPoseAtTimeGLTF(boneChannels[k].interpolationType, boneChannels[k].scale->sampler->input, boneChannels[k].scale->sampler->output, time, &scale))
|
if (!GetPoseAtTimeGLTF(boneChannels[k].scale->sampler->interpolation, boneChannels[k].scale->sampler->input, boneChannels[k].scale->sampler->output, time, &scale))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_INFO, "MODEL: [%s] Failed to load scale pose data for bone %s", fileName, bones[k].name);
|
TRACELOG(LOG_INFO, "MODEL: [%s] Failed to load scale pose data for bone %s", fileName, bones[k].name);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue