2

好的,没有图片这很难解释。我在 Blender 中制作了一个非常有限的 glock 模型,其中一个挤压立方体构成了底座,一个缩放立方体构成了桶。在 Blender 中,它看起来不错:

1

但是,在将模型导出为 .fbx 并将其加载到编译器后,它会变成这样:

2

我不知道到底发生了什么。模型上的所有东西都经过正确的 UV 映射并且坐标正确,看起来翻译是.. off..

这是我的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();
    }
}

任何指示都会有所帮助!

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

3

谢谢大家的帮助!

4

3 回答 3

1

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

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

在此处输入图像描述

于 2013-08-29T11:54:54.417 回答
1

发生这种情况的原因:您的深度缓冲区未启用,因此当您的 GPU 先绘制枪管,然后是枪托/手柄时,手柄会绘制在枪管顶部,即使它的某些部分应该是不可见的,因为它们会被桶藏起来。

如何修复:按照其他答案的建议启用深度缓冲区。和/或根据与相机的距离对模型中的网格进行排序,并按从近到远的顺序绘制网格。这现在可能看起来没什么用,但是当您开始使用透明对象时,您会明白为什么这是一件值得学习的好东西。

于 2013-08-29T11:39:00.473 回答
0

启用深度缓冲区:

      GraphicsDevice.DepthStencilState = DepthStencilStates.Default;

要在 Xna 中绘制模型,您可以按照本教程进行操作,该教程显示了如何应用骨骼变换以使网格处于正确位置。

于 2013-08-29T11:34:29.713 回答