搅拌机动画到XNA失真错误
本文关键字:失真 错误 XNA 动画 搅拌机 | 更新日期: 2023-09-27 18:12:37
我按照以下视频中的说明操作: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];
}
}
我认为这个bug可以通过编辑上面的代码来修复,我只是不知道怎么做。谁能帮我解决这个失真问题?
这里是项目源代码的链接:
www.mediafire.com/download/ps5ocf1nxbfgrru/SkinningSample_4_0.zip
这是Blender文件的链接:
www.mediafire.com/download/vrt8h1p83vkd76g/wave.blend
XNA已经停产,所以这个"黑客"已经被删除。一夫一妻制通常被视为一种替代品,但它仍然没有解决这个问题。
找到问题。XNA的内容管道似乎无法正确处理动画fbx。所以XNA有缺陷。幸运的是,Blender 2.68a及更早的版本已经"修复"了这个问题。当导出FBX时,只需检查"XNA旋转动画hack"