【发布时间】:2016-11-07 01:12:41
【问题描述】:
我按照以下视频中的说明进行操作:www.youtube.com/watch?v=SissgQ0IXvk
我正在使用 XNA 4.0 和 Blender 2.69
我将带有动画的模型导出到 .FBX 文件。
动画是一个人在挥手
这是 Blender 中的样子:
i.stack.imgur.com/481r9.jpg
这是它在 XNA 中的渲染方式:
i.stack.imgur.com/iWk1E.jpg
动画出现的手臂严重扭曲。
我认为错误发生在 AnimationPlayer 类中:
/// <summary>
/// Helper used by the Update method to refresh the WorldTransforms data.
/// </summary>
public void UpdateWorldTransforms(Matrix rootTransform)
{
// Root bone.
worldTransforms[0] = boneTransforms[0] * rootTransform;
// Child bones.
for (int bone = 1; bone < worldTransforms.Length; bone++)
{
int parentBone = skinningDataValue.SkeletonHierarchy[bone];
worldTransforms[bone] = boneTransforms[bone] *
worldTransforms[parentBone];
}
}
/// <summary>
/// Helper used by the Update method to refresh the SkinTransforms data.
/// </summary>
public void UpdateSkinTransforms()
{
for (int bone = 0; bone < skinTransforms.Length; bone++)
{
skinTransforms[bone] = skinningDataValue.InverseBindPose[bone] *
worldTransforms[bone];
}
}
我认为可以通过编辑上面的代码来修复该错误,我只是不知道该怎么做。 有人可以帮我修复这个失真错误吗?
这里是项目源代码的链接:
www.mediafire.com/download/ps5ocf1nxbfgrru/SkinningSample_4_0.zip
这是 Blender 文件的链接:
www.mediafire.com/download/vrt8h1p83vkd76g/wave.blend
【问题讨论】: