最近我正在进行骨骼动画导入,所以我用一些IK技术制作了一个类似3D的类似Minecraft的模型来测试Assimp动画导入.输出格式是COLLADA(*.dae),我使用的工具是Blender.在编程方面,我的环境是opengl/glm/assimp.我认为这些信息对我的问题来说已经足够了.有一件事,模型的动画,我只是记录了7个不移动关键帧来测试assimp动画.
首先,我猜我的变换除了局部变换部分是正确的,所以让函数只返回glm::mat4(1.0f),结果显示绑定姿势(不确定)模型.(见下图)
其次,回头值glm::mat4(1.0f)到bone->localTransform = transform * scaling * glm::mat4(1.0f);,那么模型变形.(见下图)
在搅拌机中测试图像和模型:
(bone->localTransform = glm::mat4(1.0f) * scaling * rotate;:这张图片在地下:()
这里的代码:
void MeshModel::UpdateAnimations(float time, std::vector<Bone*>& bones)
{
for each (Bone* bone in bones)
{
glm::mat4 rotate = GetInterpolateRotation(time, bone->rotationKeys);
glm::mat4 transform = GetInterpolateTransform(time, bone->transformKeys);
glm::mat4 scaling = GetInterpolateScaling(time, bone->scalingKeys);
//bone->localTransform = transform * scaling * glm::mat4(1.0f);
//bone->localTransform = glm::mat4(1.0f) * scaling * rotate;
//bone->localTransform = glm::translate(glm::mat4(1.0f), glm::vec3(0.5f));
bone->localTransform = glm::mat4(1.0f);
}
}
void MeshModel::UpdateBone(Bone * …Run Code Online (Sandbox Code Playgroud)