8

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

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

情况和必要性:

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

Rendring Engines: 经过一番搜索,我找到了以下 3D 渲染解决方案:

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

  2. Quest3D:“使用 Quest3D 创建软件、网络和模拟器。Quest3D 是建筑可视化、产品可视化、数字娱乐、计算机辅助培训和高端 VR 应用程序的完美解决方案。” 引自 Quest3D 介绍

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

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

4

6 回答 6

6

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

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

此外,您可以使用 Virtual Earth 之类的技巧并平铺您的数据(与 LoD 相关)。最后,剔除将非常重要,但可能涉及您已经提到的任何引擎。

如果您正在处理 GIS 的东西,请查看 AGI 的Insight3D。仍处于早期开发阶段,但有很多好的技术支持,旨在处理大量对象、剔除、LoD 等。他们甚至有办法将视频嵌入为纹理。

编辑:

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

他们有你需要的所有结构

  1. 非常快速的命中测试(即您选择了哪个实体)。
  2. 具有用于条件渲染的简单控件的场景图形类。
  3. 时间作为场景图形的一部分集成到引擎中。这意味着您甚至可以定义事物在前一个时间点的样子并在其上来回切换。

对我来说,3D 引擎和游戏引擎之间的区别可能会变得非常模糊。就我所见,关键的区别在于游戏引擎更关心的是让事情看起来很好而不是准确。例如,我们使用虚幻引擎渲染我们的办公室,但我们必须将所有东西都制作成与现实生活不同的比例。它看起来很棒,但不是现实生活中的尺寸。在处理细节到螺丝钉时,这可能会有所不同。

一点免责声明:我不为 AGI 工作,但我亲自见过正在创建这个引擎的工程师。他们正在集成最新的 GPU 和渲染技术,因此它是迄今为止我用过的最快、性能最好的引擎之一。它利用了许多人用于高分辨率天文计算的主要应用程序 ( STK )使用的知识和技术。

于 2009-04-19T16:36:53.277 回答
3

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

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

于 2009-04-18T15:51:04.503 回答
2

我曾与 OpenSceneGraph 合作过,在我看来,如果您不擅长组织图形,则考虑到模型的具体情况(高细节、高对象数、分散的场景),最终可能会导致性能不佳。您将需要能够在空间上对场景进行分区(如八叉树、kd 树等)。

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

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

如果您的模型非常大,您将需要能够分页的东西,因为您的模型不适合可用内存(在这种情况下依赖操作系统进行分页并不是 IMO 的最佳主意)。

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

于 2009-04-21T13:00:49.520 回答
1

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

BTW GarageGames 现在获得了一项名为Torque3D的新技术的许可

同样值得一试的是在devmaster.net上获得高度评价的C4 引擎

于 2009-04-18T15:59:23.407 回答
0

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

于 2009-04-18T14:12:40.497 回答
0

您应该查看 WPF、Windows 演示框架(请参阅 winfx,请参阅 avalon)并深入了解最新的发展。您可能会发现此链接有些有趣。另外,什么是三倍

于 2009-04-19T16:18:54.367 回答