搅拌机动画到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已经停产,所以这个"黑客"已经被删除。一夫一妻制通常被视为一种替代品,但它仍然没有解决这个问题。

找到问题。XNA的内容管道似乎无法正确处理动画fbx。所以XNA有缺陷。幸运的是,Blender 2.68a及更早的版本已经"修复"了这个问题。当导出FBX时,只需检查"XNA旋转动画hack"