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

Posted

技术标签:

【中文标题】Monogame 进口 Blender .FBX 不受灯光影响【英文标题】:Monogame imported Blender .FBX unaffected by lighting 【发布时间】:2015-12-31 08:14:15 【问题描述】:

我最近将旧的 Monogame 项目升级到了最新版本的 Monogame。一切都像以前一样运行,但是,我导入的 .FBX 模型显示为纯黑色(暗示它们没有被点亮)。

(汉堡+胶带是在运行时使用 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,项目不会编译)。

提前致谢。我希望这不是我忽略的傻事。

【问题讨论】:

移植游戏时是否重新编译了模型资源? 【参考方案1】:

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

先导出 ASCII 并在 XNA 中构建 这不是最干净的方法,但在 fbx 导出器得到修补之前,这是需要的。

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

希望这能解决问题。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Monogame 进口 Blender .FBX 不受灯光影响的主要内容,如果未能解决你的问题,请参考以下文章

如何从Blender导出fbx纹理以用于Monogame

无法将 .fbx 从搅拌机正确加载到 Monogame

Blender 不喜欢 FBX 6100 文件 [关闭]

在 Blender 中导入 .fbx 字符[关闭]

为啥从 Blender 导出到 Unity (.fbx) 后动画会这样 [关闭]

Blender fbx 从 ascii 格式导入