【问题标题】:Blender animation to XNA distortion bugBlender 动画到 XNA 失真错误
【发布时间】: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

【问题讨论】:

    标签: c# animation matrix xna


    【解决方案1】:

    XNA 已停产,因此此“hack”已被删除。 Monogame 通常被视为替代品,但它仍然没有解决这个问题。

    【讨论】:

      【解决方案2】:

      发现问题。 XNA 的内容管道似乎无法正确处理动画 FBX。所以XNA有一个bug。幸运的是,Blender 2.68a 和更早版本对此有一个“修复”。导出 FBX 时只需勾选“XNA 旋转动画破解”即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-15
        • 2011-02-26
        • 2022-08-19
        • 1970-01-01
        • 2015-04-23
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多