当前位置:文档之家› 主流三维引擎对比分析说明书

主流三维引擎对比分析说明书

主流三维引擎对比分析
随着计算机可视化、虚拟现实技术的飞速发展,人们对实时真实感渲染以及场景复杂度提出了更高的要求。

传统的直接使用底层图形接口如OpenGL、DirectX开发图形应用的模式越来越暴露出开发复杂性大、周期性长、维护困难的缺陷。

为此国外出现了许多优秀的三维渲染引擎,比如Delta3D,OGRE,OSG,Unity3d,VTK等。

渲染引擎的作用就是要优化遍历与显示三维模型。

本文主要对OGRE与OSG这两个三维图形渲染引擎做个简单的比较,介绍她们在运行效率、场景管理、功能支持、可扩展性等方面的异同。

通过了解两者差异后,可以根据不同的项目需求,选择合适的渲染引擎。

ogre
OGRE(Object-Oriented Graphics Rendering Engine,面向对象图形渲染引擎) 又叫做OGRE 3D。

OGRE就是面向场景的、灵活的图像引擎。

OGRE仍然在发展中,如果就功能与商业游戏引擎还有一定差距。

在OGRE的论坛网站上您可以得到更多的信息,里面谈论到OGRE的一些格外的插件,如声音,UI ,物理检测,还有网络应用。

采用C++开发,以MIT许可证发布,可以在Windows、Linux、Mac上运行。

OGRE自己也说明本身不就是游戏引擎。

其主要特征如下:
面向对象,插件扩展架构,具有文档支持。

支持脚本。

可以通过脚本管理材质资产并进行多路渲染。

支持物理碰撞检测。

支持顶点灯光、像素灯光、灯光映射。

支持阴影映射、三维阴影。

支持多纹理、凹凸贴图、多重材质贴图、立体投影。

支持顶点、像素、高级着色。

支持场景管理,具有多种数据结构。

支持逆向运动动画、骨架动画、变形动画、混合动画及姿态动画。

支持网格加载、皮肤、渐进网格。

支持环境映射、镜头眩光、公告牌、粒子、运动模糊、天空、水、雾、丝带轨迹、透明对象。

支持XML文件转换。

引擎特性全面( ),稳定性好( ),支持全面( ),不容易上手与使用( )。

osg
OpenSceneGraph就是一个开源的三维引擎,被广泛的应用在可视化仿真、游戏、虚拟现实、科学计算、三维重建、地理信息、太空探索、石油矿产等领域。

OSG采用标准C++与OpenGL编写而成,可运行在所有的Windows平台、OSX、GNU/Linux、IRIX、Solaris、HP-Ux、AIX、Android与FreeBSD 操作系统。

OSG在各个行业均有着丰富的扩展,能够与使用OpenGL 书写的引擎无缝的结合、
其主要特征如下:
面向对象,插件及脚本扩展架构,具有文档支持。

支持内建场景编辑器。

支持物理碰撞检测。

支持顶点灯光、各向异性灯光。

支持投影面、立体投影。

支持多纹理、多重材质贴图、投影。

支持顶点、像素、高级着色。

支持场景管理,具有多种数据结构。

支持骨架动画、帧动画及混合动画。

支持网格加载及皮肤。

支持环境映射、公告牌、粒子、镜像。

支持地形渲染。

支持“客户端/服务器”、P2P网络、主控服务器模式。

支持2D、3D及流音效。

引擎特性全面( ),稳定性好( ),支持还可以( ),上手与使用简单( )。

vtk
视觉化工具函式库(VTK, Visualization Toolkit)就是一个开放源码,跨平台、支援平行处理(VTK曾用于处理大小近乎1个Petabyte的资料,其平台为美国Los Alamos国家实验室所有的具1024个处理器之大型系统)的图形应用函式库。

2005年时曾被美国陆军研究实验室用于即时模拟俄罗斯制反导弹战车ZSU23-4受到平面波攻击的情形,其计算节点高达2、5兆个之多。

该函式库以开放源码的BSD授权释出。

其主要特征如下:
具有文档支持。

支持顶点灯光。

支持纹理。

支持网格加载及皮肤。

支持环境映射。

支持python,java,C/C++。

有大量的内置专业算法。

支持体渲染。

引擎特性全面( ),稳定性好( ),支持还可以( ),上手与使用简单( )。

正反说一说
上面简单的讲述了三个引擎支持的一些特性。

总体来说,一个引擎的选用主要就是瞧它适合做什么,没有一个引擎适合做所有的事情的。

比如说ogre,虽然ogre说自己不就是一个游戏引擎,但就是确实广泛的使用就就是在游戏上,比较著名的就有比如《天龙八部》等游戏。

从市场的使用范围与引擎提供的例子程序来瞧,ogre提供了很丰富的场景漫游,骨骼动画。

并且市面上ogre的使用也就是在游戏行业,ogre因为同时支持opengl与direct3d,所以在封装的时候失去了相对于其她引擎的灵活。

并且不就是那么容易拓展,在设计上,也有点过度设计。

但就是在渲染方面,无论就是效率还就是效果都就是非常惊人的。

osg提供了多种场景漫游的方式,比如驾车,太空,航天器等,模拟的漫游方式,市场上用osg 主要就是在仿真行业,军事仿真,智慧城市等。

osg设计非常的灵活,支持多种数据结构,基本上支持市面上大部分常用的建模软件的模型文件。

osg提供了非常灵活方便的插件机制来实现各种格式文件的IO,并且在多个方面有灵活的拓展,比如用的比较多的就就是在GIS方面的拓展osgEarth。

体渲染方面osgVolume等。

osg的核心库里面提供了非常丰富的矩阵,向量计算,一般情况下不需要自己再另外的去写矩阵计算公式。

场景结构也很灵活。

vtk个人认为不算就是一个完整的三维引擎,它所注重的不在渲染方面,甚至,渲染只就是一个辅助的功能,只就是为了粗略的展示结果。

在它的设计中大致就是这么一个过程,source ---> filter---->filter--->mapper--->render。

在mapper以后才就是渲染过程,而vtk重点都就是在mapper以前。

mapper之前的过程都就是数据处理的过程,所以我认为vtk其实都不算就是一个完整的三为引擎,但就是,vtk提供了很多的专业的算法,比如等值线,滤波,平滑,体积布尔等算法,让使用起来非常的方便,不需要自己去写那么多晦涩难懂的算法。

这就是vtk的天然优势,另外,因为vtk的定位就就是科学计算,所以在设计方面,vtk提供了很多图形学支持的标准图形结构,这么封装,可以让人更方便的理解,与实现一些特定的计算。

综上所述,个人总结如下:
针对这三款引擎的比较,ogre更适合做效果方面,追求性能。

osg更适合做仿真,追求业务,灵活,拓展。

vtk更适合科学计算,针对专业领域的计算。

相关主题