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 不受灯光影响的主要内容,如果未能解决你的问题,请参考以下文章