主流三维引擎对比分析
    随着计算机可视化、虚拟现实技术的飞速发展,人们对实时真实感渲染以及场景复杂度提出了更高的要求。传统的直接使用底层图形接口如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更适合科学计算,针对专业领域的计算。
游戏xml文件修改