添加到 XNA 时 Fbx 动画模型变形

Posted

技术标签:

【中文标题】添加到 XNA 时 Fbx 动画模型变形【英文标题】:Fbx Animated Model deforming when added to XNA 【发布时间】:2014-05-02 13:54:02 【问题描述】:

嘿,我的问题是我在 3dsMax 中为我想要的东西创建了完美的模型,我使用皮肤修改器绑定了一个 Biped,

我正确定位了信封并使用帧为 Biped 设置动画,然后导出为 .fbx 并使用 SkinnedModelPipeline 将其加载到 XNA 中。

一旦加载到 XNA 中,模型就会变形,并且它似乎只在模型的右臂上。

由于我只是一个新成员,我现在无法及时发布图片,所以我发送了一个在线图片的链接。

3dsMax 模型:

模型已加载

模型绘制函数

//an array of the current positions of the model meshes
this.bones = animationPlayer.GetSkinTransforms();

for (int i = 0; i < bones.Length; i++)

       bones[i] *= Transform.World;                   


//remember we can move this code inside the first foreach loop below
//and use mesh.Name to change the textures applied during the effect
customEffect.CurrentTechnique = customEffect.Techniques[technique];
customEffect.Parameters["DiffuseMapTexture"].SetValue(diffuseMap);

customEffect.Parameters["Bones"].SetValue(bones);
customEffect.Parameters["View"].SetValue(Game.CameraManager.ActiveCamera.ViewProperties.View);
customEffect.Parameters["Projection"].SetValue(Game.CameraManager.ActiveCamera.ProjectionProperties.Projection);

foreach (ModelMesh mesh in model.Meshes)

    //move code above here to change textures and settings based on mesh.Name
    //e.g. if(mesh.Name.Equals("head"))
    //then set technique and all params

    foreach (ModelMeshPart part in mesh.MeshParts)
    
        part.Effect = customEffect;
    
    mesh.Draw();

我已经搜索了很长时间,但找不到任何可以解决此问题的方法。

感谢任何帮助。

【问题讨论】:

【参考方案1】:

在转换骨骼时,您不会在“世界”空间中移动它们。 他们应该继承他们父母的转换,所以所有的骨头都必须相对于他们的父母移动。

3dsmax 中的比例\平移矩阵问题也可能导致类似的外观问题。 这可以通过将 FBX 重新导入 3dsmax 来检查,如果这样做后看起来不错,则问题出在代码中。

【讨论】:

我把它作为一个 fbx 带回了 max,所以你说它是代码是正确的。我问了一个程​​序员,他们告诉我试试这个....尝试将此模型与仅执行平移的世界矩阵一起仅缩放仅旋转但我不完全确定该怎么做... 它们可能意味着您一次尝试使用一种类型,导出一种您只是平移模型的位置,一种用于旋转 1 个骨骼的位置,另一种使用比例 - 作为 3 个单独的导出。 哦,是的,我明白了。我这样做了,但仍然变形。这真的会是我的死哈哈。所以你认为这指向一个最大的问题还是绝对是代码...... 如果你让它们打印出旋转\平移等,那么你可以与你在最大的情况下进行比较。也可能通过创建一个更小的“装备”更容易调试,例如只有两个骨骼的圆柱体。然后旋转骨骼,导出,然后看看发生了什么。 是的,非常感谢您的帮助...非常感谢。

以上是关于添加到 XNA 时 Fbx 动画模型变形的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式使用 xna 为 fbx 模型设置动画

3dmax文件导出fbx文件,3dmax里的路径变形效果,到lumion里就失去效果了,是怎么回事???

Unity模型添加旋转动画就变形,怎么回事?

为 XNA 创建我自己的 FBX 文件? (在 3ds max 中)

XNA 3D RPG 编程继承

如何将搅拌机中的所有动作(动画)导出到文件。 FBX?