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

时间:2017-12-19 03:12:22

标签: c++ blender openscenegraph

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

其他详情:

  • 代码设置为遵循人类角色。其余的场景 是静态的。
  • 当我使用旧的人体模型时,我得到了工作效果, 但使用转换器的整个目的是能够导出 它的动画。

有什么想法吗?我看到了效果,我甚至不知道从哪里开始。唯一的区别是转换器输出的文件。其他一切都是一样的。此外,如果有更新/更好的方法将blender文件导出到OSG可以读取的文件中,那么我可以接受任何和所有建议。

提前谢谢你,

1 个答案:

答案 0 :(得分:0)

对于它的价值,OSG论坛/邮件列表通常非常适合回答问题,我相信我经常在那里看到Cedric的名字,以及所有主要贡献者:http://forum.openscenegraph.org/

新用户通常必须审核他们的问题,减少垃圾邮件,所以请耐心等待。

关于这个具体问题,我有3条建议:

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

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

  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