Blender 的 osgexport:导入的网格影响场景(可能是照明?)

osgexport for Blender: Imported meshes impact scene ( possibly the lighting? )

Blender 版本 2.79

OSG 版本:3.4.0-9

操作系统:Fedora

我一直在使用 Blender 的导出实用程序导出 obj 文件,然后使用 osgconv 将它们转换为 osg 文件。然后将文件导入并渲染到如下所示的场景中: Image of the working scene before using the export tool

今天我安装了 Cedric Pinson 的 osgexport(Github 页面:https://github.com/cedricpinson/osgexport)以直接从 Blender 导出到 osgt 文件。当我导入这些文件并渲染它们时,我得到以下结果。 Image of the scene where everything goes dark and the lighting is wierd

其他详细信息:

有什么想法吗?我看到了效果,但我什至不知道从哪里开始。唯一的区别是转换器的输出文件。其他一切都一样。此外,如果有 newer/better 方法可以将 Blender 文件导出为 OSG 可以读取的文件,那么我愿意接受所有建议。

提前谢谢你,

就其价值而言,OSG forum/mailing 列表通常非常适合回答问题,我相信我经常在那里看到 Cedric 的名字,以及所有主要贡献者:http://forum.openscenegraph.org/

新用户的问题通常需要经过审核,以减少垃圾邮件,所以请耐心等待。

针对这个具体问题,我有3条建议:

  1. 将两个文件都转换为 osgt 和 运行 差异。忽略任何数值差异,寻找节点排列、material 类型等内容

  2. 尝试在 osgviewer 中打开导出的模型,看看默认设置如何显示它。在将其放入您的应用程序之前,您还可以轻松地使用背面、照明设置、裁剪平面等内容 - 按 h 查看所有 运行-time 选项。

  3. 在启用所有 3 种类型的照明的情况下实例化您的灯光。特别是,我发现有些模型严重依赖镜面光照,但有些示例没有打开它。当然,如果你使用这里显示的全白值,你可能会过饱和,但这是为了举例:

    osg::Light *light = new osg::Light;
    light->setAmbient(osg::Vec4(1.0,1.0,1.0,1.0));
    light->setDiffuse(osg::Vec4(1.0,1.0,1.0,1.0));
    light->setSpecular(osg::Vec4(1.0,1.0,1.0,1.0));  // some examples don't have this one