3

为了好玩,我正在用 Python 构建一个渲染引擎。我需要加载 3D 场景。任何标准的现代格式,如 DAE、3DS 或 MAX 都可以使用:我可以轻松地在标准格式之间转换我的文件。

OpenSceneGraph 似乎是最全面且维护良好的解决方案。能够毫不费力地在 Python 中使用它是理想的选择。是否有适用于 OSG 的 Python 绑定,它们易于安装、可在 Mac OS X(我使用的是 10.8)上运行并且与最新版本的 OSG 兼容?

我四处搜寻,发现了 osgswig (http://code.google.com/p/osgswig/) 和 PyOSG (http://sourceforge.net/projects/pyosg/),但它们似乎没有得到积极维护. 我没有看到任何与这些软件包相关的近期活动,而且似乎人们在 OSX 上运行 osgswig 时遇到了麻烦。理想情况下,我想找到一些“正常工作”的东西,而没有主要的编译麻烦。我只想安装一个包并能够导入一个可以让我加载 COLLADA 或 3DS 文件的模块。

我还遇到了 pycollada(https://github.com/pycollada/pycollada)。它似乎很活跃,但还处于早期阶段。理想情况下,我想要一个相当全面的包,它支持高光贴图、法线贴图和其他相当高级的功能。动画也会很好。

总之,我需要在 Python 中加载 3D 场景。OSG 的绑定可能是理想的,因为 OSG 是如此全面。但我需要一些适用于 OSX 的东西。我也更喜欢可以相当容易安装的东西。这样的事情存在吗?

谢谢!

4

3 回答 3

2

看看 Open Asset Import Library(简称:Assimp)。它是一个可移植的开源库,以统一的方式导入各种知名的 3D 模型格式。http://www.assimp.org/

于 2012-12-01T11:24:55.530 回答
1

你应该在 panda3D (http://www.panda3d.org/) 上掠夺,它是一个具有大量 python 绑定的游戏引擎。它具有您想要的功能:http: //www.panda3d.org/manual/index.php/Features

我用了几年,它是一个可靠的工具。

于 2012-11-28T09:31:51.960 回答
0

出于类似目的,我制作了自己的 osgswig 项目克隆镜像的分支。我在 Windows 和 Mac 上使用 OpenSceneGraph 3.2.1 版;很可能我最终也会为 linux 完善它。我已经根据我的 osgswig 版本向客户交付了一种产品,并且我正在考虑制作其他产品。在这里找到我的叉子:

https://github.com/cmbruns/osgswig

如果其他人表现出足够的兴趣,我可能会被哄骗为我的 osgswig 模块版本创建二进制安装程序,以使安装更容易。

如果您只想要 OSG 3.2.1 的最简单的 OpenSceneGraph 绑定,您可以在此处停止阅读此答案。请继续阅读以了解我对未来的更多想法。

虽然我正在维护一个 osgswig 的分支(如上所述),但我有点讨厌 SWIG,我更喜欢使用基于 Boost.Python 的绑定,而不是 SWIG。对于大型、复杂的 C++ API,比如 OpenSceneGraph,Boost.Python 可以比 SWIG 优雅得多,无论是对于 API 使用者还是对于绑定维护者(我和我)。我在https://code.google.com/p/osgboostpython/找到了一个使用 Boost.Python 来包装 OSG 的项目,但是开发人员非常喜欢手工包装界面的每个部分,因此只完成了一小部分大型 OpenSceneGraph API。

以那个基于 Boost.Python 的项目为灵感,我在https://github.com/JaneliaSciComp/osgpyplusplus创建了另一个 OpenSceneGraph Python 绑定项目。最终,我想使用这个 osgpyplusplus 项目来满足我所有的 python osg 需求。我将不胜感激帮助做好准备。目前,与 osgswig 相比,osgpyplusplus 存在以下弱点:

  1. osgpyplusplus 尚未在任何工作产品中使用
  2. 构建环境很难设置,需要 Boost.Python 和 Pyplusplus
  3. 最近没怎么关注osgpyplusplus,继续忽略它可能会生锈。
  4. 尽管 osgpyplusplus 可能封装了大部分 OpenSceneGraph API,但可能有一些重要的缺失部分在有人尝试使用它开发重要项目之前无法识别。
  5. 在这一点上为 osgpyplusplus 创建一个二进制模块安装程序对我来说需要做很多工作,所以请不要让我这样做。
于 2015-02-27T14:18:44.527 回答