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

时间:2014-03-24 23:08:06

标签: c# model xna 3dsmax fbx

嘿我的问题是我已经在3dsMax中创建了我想要的完美模型我使用皮肤修改器装配了一个Biped,

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

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

由于我只是新成员,我此时无法发布图片,因此我会在线发送图片链接。

3dsMax模型:

enter image description here

模型加载

enter image description here

为模型绘制函数

//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 个答案:

答案 0 :(得分:0)

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

3dsmax中的scale \ translation矩阵问题也会导致类似的问题。 可以通过将FBX重新导入3dsmax来检查这一点,如果在执行该操作后看起来很好,那么问题出现在代码中。