建议在Ogre、Irrlicht和OpenSceneGraph之间选择哪个C++ 3D引擎更好

31
我对3D图形比较熟悉(我为一个学术项目开发了一个简单的3D游戏引擎)。但现在我需要用C++开发一个音视频工具,其中还需要一些3D功能,因此我不能依靠我的小程序,而是需要一个具有高性能标准和功能的3D引擎框架。
我想知道你们对以下三个我听说过的3D引擎产品中哪个是最佳选择的意见:
1. Ogre 2. Irrlicht 3. OpenSceneGraph
我需要的要求如下:
1. 跨平台支持 2. 高性能 3. 视频编解码器支持 4. 许可证(可能选择使用所选框架编写产品的开源和闭源版本) 5. 图形效果的质量和数量
请注意,我的最佳框架选择不会取决于它的难度,因为我不是在开发视频游戏。我只关心框架提供的功能。
我想更好地了解使用一个框架而不是另一个框架的差异和优势。
6个回答

21

首先,OpenSceneGraph(OSG)和Ogre3D都有非常详细的文档、支持和大型论坛等等...我不太了解Irrlicht,除了它是它们中最新的之外。使用前两者中的任意一个都不会错。有人提到了CrystalSpace;我多年没有关注它了,但它在功能和API方面远远落后于这些公司。

领域

如果我在决定,我希望知道我要集中在什么领域。例如: 整个地球模拟。或者渲染的感觉。比如:从空中看到的地形/地球 | 建筑物内部,但带有一些室外 | 类似CAD的东西 | 信息可视化

我之所以这样说,是因为OpenSceneGraph在模拟和军事设置方面有很强的影响力。披露:那是我的领域,我每天都使用OSG。话虽如此,我一直想尝试Ogre3D,并在幕后关注了它多年;我只是还没有开始。因此,我不能做完整的比较和对比。我会认为由于各自项目的历史和主要用户:Ogre3D更偏向于视频游戏OSG更偏向于模拟产业。但是,两者都不受限于这个领域。

例如,假设我有:
一个重视布娃娃/人物的模拟:我会选择Ogre3D。
必须使用terrapage文件的模拟:基本上必须选择OSG。

跨平台

我不能代表Ogre3D的Linux方面发言。但是,主要开发人员(Robert Osfield)在所有东西上都使用Linux/Macs。使用CMake编译代码。或者只需使用apt-get来尝试它们。

性能

我敢打赌,只要进行适当的调整(再说一遍,是渲染什么... bsp文件、八叉树、高飞模拟?),这两个引擎都会表现良好。并且它们所使用的操作系统可能也会有所影响。

视觉效果

你不能选择任何一个引擎然后指望它看起来很好,而没有好的模型、地形和着色器。这两种引擎可能对不同技术提供了更好的支持,但需要具体的例子才能进行准确比较。

场景管理

在这方面,OSG非常清晰和直观。遍历场景,查找节点,在子图上改变状态,所有这些都非常容易实现。

脚本

虽然你没有提到这个,但我认为我应该补充一下。在这里我会选择Ogre3D。OSG需要第三方或自定义插件。而Irrlicht根本不支持脚本。


既然你已经阅读了我的意见,尽管你可能不需要另一个意见,但这个网站(Devmaster)对其他人来说很不错。虽然它缺乏细节。

ps - 有一种混合引擎(基于OSG):Delta3D。它也得到了良好的支持和更新。还有可能有一个类似于模拟的Ogre3D衍生版本:)


谢谢你的回答。你能告诉我一些关于视频编解码器支持的信息吗? - Heisenbug
@0verbose - 可能已经太晚回复了(我不经常查看网站:(),但我猜这取决于你在做什么。--- 如果是“整个场景到视频”,我从未尝试过。我的意思是,我用FRAPs录制了视频,但那可能不是你要找的。--- 如果是纹理-视频问题(例如,在游戏中运行预先录制的计算机屏幕视频),我相信任何渲染器/引擎都可以实现。不过,我只能代表OSG说话,关于这方面的信息,请参考:osgmovie示例。 - ginbot
你使用哪个OpenSceneGraph文档?在我的(有限的)经验中,OSG文档相当缺乏。例如,我无法找到关于RenderBin在OSG中如何工作的信息。 - HelloGoodbye
在你声称这个框架文档完善之前,你是否真正使用过OSG文档? - HelloGoodbye

8
如果想要选择引擎或任何中间件,您需要清楚地定义您想要能够做什么。您说您不制作游戏,但需要视频编解码器支持。因此,听起来您想要使用C++编写2D/3D、音频和视频播放。
对于2D/3D,ogre是一个非常优秀的库。它已经存在了很长时间,经过充分的测试,但ogre是一个图形渲染引擎,而不是游戏引擎,虽然有第三方库可以添加其他支持。这是一个MIT许可证,非常开放包括商业。
对于视频播放(以及更多内容),您可以寻找诸如FFmpeg等库。具有LGPL许可证,因此商业应用程序不能进行静态链接。
Irrlicht是一个完整的游戏引擎。这可能有用,也可能无用。您可能需要更改您的项目以匹配引擎的工作方式。这使用zlib许可证的副本,可以用于商业用途。
没有更多关于您的项目的信息,很难给出好的建议。希望这有所帮助。

4
"Irrlicht是一个完整的游戏引擎。" 你认真的吗? - cubuspl42

3
我认为这是个人选择。我更喜欢Ogre而不是Irrlitch(API较差)或OpenSceneGraph(社区较差)。Ogre源代码质量很高,并被许多商业游戏使用。但它不支持视频,你可以使用第三方库,如Ogre3D Video
如果你在考虑商业项目,请考虑Unity 3d(付费版本而非免费版本)。
所有3D引擎都非常相似。主要区别在于着色器系统的工作方式。Ogre有一个漂亮而强大的脚本系统来编写着色器。Ogre非常专业和文档完善(有很多有用的示例和良好的社区)。

你能详细说明一下你的这句话:“Ogre源代码有很高的质量”吗? - Heisenbug
你可以自己阅读代码 https://bitbucket.org/sinbad/ogre/src/f02026fb493f。这些类的设计很好,解耦得也很好(在3D引擎中并不容易)。Irrlitch (http://irrlicht.svn.sourceforge.net/viewvc/irrlicht/trunk/source/Irrlicht/) 的解耦程度较低。而且编写Ogre插件更容易。 - Victor Marzo

3

9
Google趋势示例中的一个缺陷是,您捕获了“ogre”的所有用法。尝试使用“Ogre 3d”或“ogre3d”,您将获得更可比较的结果。不过,如果将它们加起来,仍然大约有两倍的竞争对手。 - brendanzab

1

Torque 3D似乎比Ogre3D更成熟,基本上是一个完整的游戏引擎(MIT许可证)。可以在C ++ / Visual Studio中进行开发(几个月前测试过),但它也有嵌入式脚本语言。


1

谢谢您的建议。我不知道这个。但视频编解码器呢?它是否具有对它们的集成支持? - Heisenbug

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接