Monogame进口Blender .FBX不受灯光影响

时间:2015-10-03 03:41:15

标签: 3d xna monogame lighting fbx

我最近将旧的Monogame项目升级到Monogame的最新版本。一切都在运行,但是,我导入的.FBX模型看起来像纯黑色(意味着它们没有被点亮)。

enter image description here

(汉堡包+磁带是在运行时使用Quads动态制作的。它们应该受到照明的影响。)

我的代码(在旧版Monogame中使用)用于显示模型如下:

public override void Draw()
    {
        foreach (ModelMesh mesh in model.Meshes)
        {
            foreach (BasicEffect effect in mesh.Effects)
            {
                effect.World = Matrix.CreateRotationZ(rotX);
                effect.World *= Matrix.CreateRotationX(rotY);
                effect.World *= Matrix.CreateTranslation(new Vector3(pos.X,
                                                                    pos.Y,
                                                                    0f));

                effect.View = MainGame.matrixView;
                effect.Projection = MainGame.matrixProj;

                effect.TextureEnabled = true;
                effect.Texture = tex;

                effect.EnableDefaultLighting();
                effect.AmbientLightColor = new Vector3(0.2f, 0.2f, 0.2f);
                effect.EmissiveColor = new Vector3(1, 0, 0);
            }

            mesh.Draw();
        }
    }

模型从Blender导出为FBX 7.4 Binary(如果我使用FBX 6.1 ASCII,项目不会编译)。

提前致谢。我希望这不是我所忽视的愚蠢行为。

2 个答案:

答案 0 :(得分:1)

我知道我已经晚了好几年才来帮助您,但我只是自己解决了这个问题。无论如何,对我来说,问题是通过在 Blender 中获取 .FBX 文件并将任何材料的粗糙度设置降低到任何小于 1 的值来解决的。任何粗糙度设置为最大值 (1) 的材料大部分都会显示为黑色。

答案 1 :(得分:0)

上周我遇到了同样的问题。我认为这实际上是Blender的二进制FBX导出器的一个问题,其中纹理没有正确地导出或引用在* .FBX文件中。我假设这是因为我在XNA中构建了ASCII版本,然后在游戏的monogame版本中引用了编译的* .xnb文件并且它正确渲染。我一直在使用的修复是:

导出太ASCII并首先在XNA中构建
这不是最干净的方法,但是直到fbx出口商得到补丁才能得到它。

参考MonoGame中的* .xnb文件
引用已编译的XNB文件并将“Build Action”设置为“Copy”。但请记住,您还需要引用构建的纹理文件。

希望这可以解决它。

相关问题