C# 具有三维模型的奇数几何体XNA+;搅拌机

C# 具有三维模型的奇数几何体XNA+;搅拌机,c#,xna,C#,Xna,好的,没有图片很难解释。我制作了一个非常有限的格洛克式搅拌机模型,底座是挤压立方体,桶体是按比例缩放的立方体。 在搅拌机中,它看起来很好: 但是,将模型导出到.fbx并将其加载到编译器后,结果如下: 我不知道到底发生了什么事。模型上的所有内容都正确地进行了UV映射,坐标也正确,只是看起来平移是。。关 以下是我的drawModel代码: private void DrawModel(Model model, Matrix world, Matrix view, Matrix projectio

好的,没有图片很难解释。我制作了一个非常有限的格洛克式搅拌机模型,底座是挤压立方体,桶体是按比例缩放的立方体。 在搅拌机中,它看起来很好:

但是,将模型导出到.fbx并将其加载到编译器后,结果如下:

我不知道到底发生了什么事。模型上的所有内容都正确地进行了UV映射,坐标也正确,只是看起来平移是。。关

以下是我的drawModel代码:

private void DrawModel(Model model, Matrix world, Matrix view, Matrix projection)
{
    foreach (ModelMesh mesh in model.Meshes)
    {
        foreach (BasicEffect effect in mesh.Effects)
        {
            effect.EnableDefaultLighting();                   
            effect.World = world;
            effect.View = view;
            effect.Projection = projection;
        }
        mesh.Draw();
    }
}
任何提示都会有帮助

编辑:应用旋转、位置和缩放后,我能够将它们放置在正确的位置,但为什么它看起来是透明的

谢谢你的帮助

启用深度缓冲区:

      GraphicsDevice.DepthStencilState = DepthStencilStates.Default;
要在Xna中绘制模型,您可以按照以下步骤进行操作,即显示如何应用骨骼变换以获得正确位置的网格。

发生这种情况的原因: 深度缓冲区未启用,因此当GPU先绘制桶体,然后绘制库存/手柄时,手柄将绘制在桶体顶部,即使桶体的某些部分被认为是不可见的,因为它们将被桶体隐藏

如何修复:
如其他答案所示启用深度缓冲区。和/或根据与摄影机的距离对模型中的网格进行排序,并按从近集到远集的顺序绘制tehm。现在这似乎没有什么用处,但当您开始使用透明对象时,您将看到为什么这是一件值得学习的事情。

正如Nikola所提到的,在Blender的更高版本中,它们具有适当的XNA支持

以下是我在导出模型时选择的设置的屏幕截图:


您是否在搅拌机中应用了旋转/缩放/平移?您需要在导出之前执行此操作,以便导出的模型拾取新的位置/比例/方向。我认为这不是绘图问题,代码似乎正确,您在Blender中犯了错误。我添加了比例,但我认为我忽略了翻译