I have a properly constructed bone tree. Each bone has a relative local matrix. When I apply a rotation to any bones it never rotates on its own point of rotation (its position) but always around its parents or root origin, this is obviously not the case for the root bone which always rotates on itself as I wish…. My bone’s rotation method is as follows:
void boneTransform(const glm::vec3& in_Translation, const glm::quat& in_Quat)
{
glm::mat4 translationMatrix = glm::translate(glm::mat4(1.0f), in_Translation);
glm::mat4 rotationMatrix = glm::mat4_cast(in_Quat);
glm::mat4 transformationMatrix = translationMatrix * rotationMatrix;
localMatrix = transformationMatrix;
}
I specify that my global transformation and bind pose procedures have been validated but I can show on demand.