在工程应用程序中进行实时3D渲染的最佳方法是什么?

时间:2009-04-18 13:02:27

标签: 3d rendering

我们正在开发一个基于GIS的应用程序,它可以模拟虚拟现实环境中的真实单词对象(即管道,道路等)。目前,我们使用ArcScene包中的ESRI ArcGIS进行3D渲染,并且将来我们打算将其替换为我们自己的3D环境。

问题: 在上述应用程序中进行实时3D渲染的最佳方法是什么? 我在这个领域没有任何经验,我真的很困惑。我应该使用一个可用的3D渲染引擎(下面列出一些)吗?如果答案是肯定的,那么应考虑哪些参数(不论其成本如何)? 有没有人在这个领域有任何经验或建议?

环境和必需品:

  1. 我们使用C#.NET环境开发应用程序
  2. 有大量3D对象可供展示
  3. 3D对象分组在不同的CAD文件中
  4. 与最终3D场景的互动至关重要(例如,选择一个3D对象)
  5. 需要加载,卸载,打开,关闭和设置一个层和/或对象的透明度。
  6. 高性能实时渲染广泛的模型(超过800公顷的区域),高细节(从道路到非常精细的物体,如一个螺丝)
  7. 无需提前着色问题(此时)
  8. 纹理必须适用
  9. Rendring Engines: 经过一些搜索后,我发现了以下3D渲染解决方案:

    1. CadFaster|Engine :“CadFaster | Engine是一种独特且可扩展性最高的3D渲染解决方案,适用于技术应用程序。它比通常的CAD应用程序快十倍。引擎包括3D数据集和几何的专利实时同步机制,允许自动集成到主应用程序.CadFaster | Engine还包含专利的实时多边形缩减,它改进了3D表现。“引自DevMaster

    2. Quest3D :“使用Quest3D创建软件,Web和模拟器.Quest3D是架构可视化,产品可视化,数字娱乐, 计算机辅助培训和高端VR应用程序。“引自Quest3D介绍

    3. OpenSceneGraph :“OpenSceneGraph是一个开源高性能3D图形工具包,应用程序开发人员在视觉模拟,游戏,虚拟现实,科学可视化等领域中使用完全用标准C ++和OpenGL编写...... OpenSceneGraph现已成为世界领先的场景图技术,广泛应用于可视化,空间,科学,石油天然气,游戏和虚拟现实等行业。主要语言:C / C ++语言包装:C#,......“从OSG主页引用。

    4. 此外,DevMaster3DLinks

    5. 还有一个几乎完整的可用引擎列表

6 个答案:

答案 0 :(得分:6)

无论您使用哪种引擎,都需要了解一些关键概念。

由于您处理的是如此多的对象,因此主要的是细节级别(LoD)。确保您的对象具有与之关联的逼真LoD。例如,在查看整个场景时,您不必费心渲染螺丝的高细节模型。此外,当距离它更近但距离足够远时,螺丝的低细节版本足以渲染。

此外,您可以执行Virtual Earth等技巧并平铺数据(与LoD相关)。 最后,剔除将非常重要,但可能会处理您已经提到过的任何引擎。

如果您正在处理GIS内容,请查看AGI的Insight3D。仍处于早期开发阶段,但有许多优秀的技术支持,并设计用于处理大量对象,剔除,LoD等。他们甚至有办法将视频嵌入纹理。

编辑:

如果按照你的说法处理C#,我真的会看一下Insight3D。它是一个3D GIS引擎。不是游戏引擎。它是基于场景图的,这意味着您不必担心逐帧渲染,就像您可能不得不使用其他引擎一样。

他们拥有您需要的所有构造

  1. 非常快速的点击测试(即您选择的实体)。
  2. Scene-Graph类,可轻松控制条件渲染。
  3. 时间作为Scene-Graph的一部分集成到引擎中。这意味着您甚至可以定义之前某个时间点的内容,然后来回查看。
  4. 对我来说,3D引擎和游戏引擎之间的区别可能会非常模糊。从我所看到的,关键的区别在于游戏引擎更担心的是让事情变得好看而不是准确。例如,我们使用虚幻引擎来渲染我们的办公室,但我们必须将所有内容制作成与现实生活不同的尺度。它看起来很棒,但不是真实的尺寸。在处理细节时,这可能会有所不同。

    一个小小的免责声明:我不为AGI工作,但我个人遇到了创建这个引擎的工程师。他们正在整合最新的GPU和渲染技术,因此它是迄今为止我用过的最快,最好的引擎之一。它利用其主要应用程序(STK)使用的知识和技术,许多人用它来进行高分辨率的天文计算。

答案 1 :(得分:3)

SlimDX SDK可能是选项,如果你愿意从底层开始,它基本上是一种让你从.NET访问DirectX的方法。他们还有一系列样品供您开始使用 Ogre - LGPL下的3d引擎或许可证的purcache garagegames.com - 也有一些引擎,取决于您选择的语言(也是“低价”。这里没有500k $引擎)

Ogregaragegames.com都有“旧的”3D引擎,因此您应该能够找到完整的游戏或演示,以便查看效果。我不熟悉编写cad应用程序,所以当你说你有3D对象时我不确定那些是静态的还是在应用程序运行时可以改变的对象。

答案 2 :(得分:2)

我使用过OpenSceneGraph,在我看来,如果你不擅长组织你的图形,你可能会因为模型的细节(高细节,高对象数,分散的场景)而导致性能不佳。您需要能够对场景进行空间分区(如oct-trees,kd-trees等)。

如果成本不是问题,那么您可以选择那些提供咨询服务并销售不需要与OSG完全相同的3D图形专业知识的引擎的供应商。

另一个需要考虑的问题是如何将模型导入引擎。如果您使用文档化的文件格式,您可以自己完成,否则您需要依靠外部库来读取和/或将模型导入您选择的引擎。

如果你的模型非常大,你需要一些能够分页的东西,因为你的模型不适合可用的内存(在这种情况下依赖操作系统进行分页不是最好的想法IMO)。

在这里您可以找到3D引擎列表,其中一些是商业广告:http://en.wikipedia.org/wiki/List_of_3D_graphics_APIs

答案 3 :(得分:1)

Unity 2.5现在有一个在Windows上运行的IDE。还有一个Web查看器,以便(使用插件)您可以在网页上查看沉浸式环境。独立许可只需200美元。

BTW GarageGames现在授权一种名为Torque3D

的新技术

另外值得一试的是C4 Enginedevmaster.net

得到高度赞扬

答案 4 :(得分:0)

http://www.blender.org/附带游戏引擎

答案 5 :(得分:0)

您应该查看WPF,Windows Presentation Framework,(请参阅winfx,请参阅avalon)并深入了解最新的发展。您可能会发现this link有些兴趣。另外,Thriple是什么?