嘿我的问题是我已经在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();
}
我已经玩了很长时间,我找不到能解决这个问题的东西。
感谢任何帮助。
答案 0 :(得分:0)
转换骨骼时,不要在“世界”空间中移动骨骼。 他们应该继承他们的父母转变,所以所有的骨头都必须相对于他们的父母移动。
3dsmax中的scale \ translation矩阵问题也会导致类似的问题。 可以通过将FBX重新导入3dsmax来检查这一点,如果在执行该操作后看起来很好,那么问题出现在代码中。