Hi,
I am having a weird issue when rotating my character with animation. The issue is that a position in the world is being interpreted differently depending on the direction of the character. When I do not apply the animation rotation data to it, it seems correctly identify the position -519.0f, 0.0f, 1210.0f
but when I do apply the animation rotation data, this same position is understood to be somewhere else when the characters forward direction begins facing the opposite way In this diagram, the pink arrow denotes the forward direction of the character. the Red flag is where the position -519.0f, 0.0f, 1210.0f
should be and it is where the player ends up with no animation rotation applied.
The white flag is where the player ends up when applying animation rotation and im not sure why this is happening
if(joint->joint_name == "RootBone")
{
offset_from_parent.x = playerpos.x + blendedTranslation.x;
offset_from_parent.z = playerpos.z + blendedTranslation.z;
if(AnimState == TurnLeft || AnimState == TurnRight)
{
if(!transitionToAnim.empty())
{
// get the latest animation to transition to in the queue
auto transitionAnim = transitionToAnim[transitionToAnim.size() - 1];
// check if this is the final frame of the animation
if((transitionAnim.frame_count - 1) == ((frame + 1) % transitionAnim.frame_count))
{
auto animRot = transitionAnim.SampleAnim((frame + 1) % transitionAnim.frame_count, jointID);
Quaternion a_rotY = Quaternion(animRot.y, vec3(0.0f, 1.0f, 0.0f));
playerpos = vec3(0,0,0);
playerdir.Rotate(animRot.y, vec3(0.0f, 1.0f, 0.0f));
playerdir = dir.unit();
playerpos = offset_from_parent.toVec3();
}
}
}
}