mirror of
https://github.com/raysan5/raylib.git
synced 2026-07-31 04:38:54 +00:00
[rmodels] Fix GLTF animation interpolation (#6007)
This commit is contained in:
@@ -6614,7 +6614,6 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
|
||||
cgltf_animation_channel *translate;
|
||||
cgltf_animation_channel *rotate;
|
||||
cgltf_animation_channel *scale;
|
||||
cgltf_interpolation_type interpolationType;
|
||||
};
|
||||
|
||||
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
|
||||
|
||||
boneChannels[boneIndex].interpolationType = animData.channels[j].sampler->interpolation;
|
||||
|
||||
if (animData.channels[j].sampler->interpolation != cgltf_interpolation_type_max_enum)
|
||||
{
|
||||
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 (!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);
|
||||
}
|
||||
@@ -6697,7 +6694,7 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -6705,7 +6702,7 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user