Update rmodels.c, reorder quat multiplication
This commit is contained in:
parent
24c8104189
commit
3532b1d1d7
|
|
@ -4384,7 +4384,7 @@ static void BuildPoseFromParentJoints(BoneInfo *bones, int boneCount, Transform
|
||||||
TRACELOG(LOG_WARNING, "Skipping bone not topologically sorted: Bone %d has parent %d", i, bones[i].parent);
|
TRACELOG(LOG_WARNING, "Skipping bone not topologically sorted: Bone %d has parent %d", i, bones[i].parent);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
transforms[i].rotation = QuaternionMultiply(transforms[bones[i].parent].rotation, transforms[i].rotation);
|
transforms[i].rotation = QuaternionMultiply(transforms[i].rotation, transforms[bones[i].parent].rotation);
|
||||||
transforms[i].scale = Vector3Multiply(transforms[i].scale, transforms[bones[i].parent].scale);
|
transforms[i].scale = Vector3Multiply(transforms[i].scale, transforms[bones[i].parent].scale);
|
||||||
transforms[i].translation = Vector3Multiply(transforms[i].translation, transforms[bones[i].parent].scale);
|
transforms[i].translation = Vector3Multiply(transforms[i].translation, transforms[bones[i].parent].scale);
|
||||||
transforms[i].translation = Vector3RotateByQuaternion(transforms[i].translation, transforms[bones[i].parent].rotation);
|
transforms[i].translation = Vector3RotateByQuaternion(transforms[i].translation, transforms[bones[i].parent].rotation);
|
||||||
|
|
@ -5245,7 +5245,7 @@ static ModelAnimation *LoadModelAnimationsIQM(const char *fileName, int *animCou
|
||||||
{
|
{
|
||||||
if (bones[i].parent >= 0)
|
if (bones[i].parent >= 0)
|
||||||
{
|
{
|
||||||
animations[a].keyframePoses[frame][i].rotation = QuaternionMultiply(animations[a].keyframePoses[frame][bones[i].parent].rotation, animations[a].keyframePoses[frame][i].rotation);
|
animations[a].keyframePoses[frame][i].rotation = QuaternionMultiply(animations[a].keyframePoses[frame][i].rotation, animations[a].keyframePoses[frame][bones[i].parent].rotation);
|
||||||
animations[a].keyframePoses[frame][i].translation = Vector3RotateByQuaternion(animations[a].keyframePoses[frame][i].translation, animations[a].keyframePoses[frame][bones[i].parent].rotation);
|
animations[a].keyframePoses[frame][i].translation = Vector3RotateByQuaternion(animations[a].keyframePoses[frame][i].translation, animations[a].keyframePoses[frame][bones[i].parent].rotation);
|
||||||
animations[a].keyframePoses[frame][i].translation = Vector3Add(animations[a].keyframePoses[frame][i].translation, animations[a].keyframePoses[frame][bones[i].parent].translation);
|
animations[a].keyframePoses[frame][i].translation = Vector3Add(animations[a].keyframePoses[frame][i].translation, animations[a].keyframePoses[frame][bones[i].parent].translation);
|
||||||
animations[a].keyframePoses[frame][i].scale = Vector3Multiply(animations[a].keyframePoses[frame][i].scale, animations[a].keyframePoses[frame][bones[i].parent].scale);
|
animations[a].keyframePoses[frame][i].scale = Vector3Multiply(animations[a].keyframePoses[frame][i].scale, animations[a].keyframePoses[frame][bones[i].parent].scale);
|
||||||
|
|
@ -6649,7 +6649,7 @@ static ModelAnimation *LoadModelAnimationsGLTF(const char *fileName, int *animCo
|
||||||
}
|
}
|
||||||
|
|
||||||
Transform *root = &animations[a].keyframePoses[j][0];
|
Transform *root = &animations[a].keyframePoses[j][0];
|
||||||
root->rotation = QuaternionMultiply(worldTransform.rotation, root->rotation);
|
root->rotation = QuaternionMultiply(root->rotation, worldTransform.rotation);
|
||||||
root->scale = Vector3Multiply(root->scale, worldTransform.scale);
|
root->scale = Vector3Multiply(root->scale, worldTransform.scale);
|
||||||
root->translation = Vector3Multiply(root->translation, worldTransform.scale);
|
root->translation = Vector3Multiply(root->translation, worldTransform.scale);
|
||||||
root->translation = Vector3RotateByQuaternion(root->translation, worldTransform.rotation);
|
root->translation = Vector3RotateByQuaternion(root->translation, worldTransform.rotation);
|
||||||
|
|
@ -7105,7 +7105,7 @@ static Model LoadM3D(const char *fileName)
|
||||||
// Child bones are stored in parent bone relative space, convert that into model space
|
// Child bones are stored in parent bone relative space, convert that into model space
|
||||||
if (model.skeleton.bones[i].parent >= 0)
|
if (model.skeleton.bones[i].parent >= 0)
|
||||||
{
|
{
|
||||||
model.skeleton.bindPose[i].rotation = QuaternionMultiply(model.skeleton.bindPose[model.skeleton.bones[i].parent].rotation, model.skeleton.bindPose[i].rotation);
|
model.skeleton.bindPose[i].rotation = QuaternionMultiply(model.skeleton.bindPose[i].rotation, model.skeleton.bindPose[model.skeleton.bones[i].parent].rotation);
|
||||||
model.skeleton.bindPose[i].translation = Vector3RotateByQuaternion(model.skeleton.bindPose[i].translation, model.skeleton.bindPose[model.skeleton.bones[i].parent].rotation);
|
model.skeleton.bindPose[i].translation = Vector3RotateByQuaternion(model.skeleton.bindPose[i].translation, model.skeleton.bindPose[model.skeleton.bones[i].parent].rotation);
|
||||||
model.skeleton.bindPose[i].translation = Vector3Add(model.skeleton.bindPose[i].translation, model.skeleton.bindPose[model.skeleton.bones[i].parent].translation);
|
model.skeleton.bindPose[i].translation = Vector3Add(model.skeleton.bindPose[i].translation, model.skeleton.bindPose[model.skeleton.bones[i].parent].translation);
|
||||||
model.skeleton.bindPose[i].scale = Vector3Multiply(model.skeleton.bindPose[i].scale, model.skeleton.bindPose[model.skeleton.bones[i].parent].scale);
|
model.skeleton.bindPose[i].scale = Vector3Multiply(model.skeleton.bindPose[i].scale, model.skeleton.bindPose[model.skeleton.bones[i].parent].scale);
|
||||||
|
|
@ -7236,7 +7236,7 @@ static ModelAnimation *LoadModelAnimationsM3D(const char *fileName, int *animCou
|
||||||
// Child bones are stored in parent bone relative space, convert that into model space
|
// Child bones are stored in parent bone relative space, convert that into model space
|
||||||
if (bones[j].parent >= 0)
|
if (bones[j].parent >= 0)
|
||||||
{
|
{
|
||||||
animations[a].keyframePoses[i][j].rotation = QuaternionMultiply(animations[a].keyframePoses[i][bones[j].parent].rotation, animations[a].keyframePoses[i][j].rotation);
|
animations[a].keyframePoses[i][j].rotation = QuaternionMultiply(animations[a].keyframePoses[i][j].rotation, animations[a].keyframePoses[i][bones[j].parent].rotation);
|
||||||
animations[a].keyframePoses[i][j].translation = Vector3RotateByQuaternion(animations[a].keyframePoses[i][j].translation, animations[a].keyframePoses[i][bones[j].parent].rotation);
|
animations[a].keyframePoses[i][j].translation = Vector3RotateByQuaternion(animations[a].keyframePoses[i][j].translation, animations[a].keyframePoses[i][bones[j].parent].rotation);
|
||||||
animations[a].keyframePoses[i][j].translation = Vector3Add(animations[a].keyframePoses[i][j].translation, animations[a].keyframePoses[i][bones[j].parent].translation);
|
animations[a].keyframePoses[i][j].translation = Vector3Add(animations[a].keyframePoses[i][j].translation, animations[a].keyframePoses[i][bones[j].parent].translation);
|
||||||
animations[a].keyframePoses[i][j].scale = Vector3Multiply(animations[a].keyframePoses[i][j].scale, animations[a].keyframePoses[i][bones[j].parent].scale);
|
animations[a].keyframePoses[i][j].scale = Vector3Multiply(animations[a].keyframePoses[i][j].scale, animations[a].keyframePoses[i][bones[j].parent].scale);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user