0

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

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

一旦加载到 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();
}

我已经观察了很长时间,我找不到任何可以解决这个问题的东西。

任何帮助表示赞赏。

4

1 回答 1

0

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

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

于 2014-03-25T08:10:55.997 回答