浅谈0penGL结合C++开发虚拟现实系统

2009-9-18 作者: 王英健

关键字: OpenGL(3D虚拟现实系统 

OpenCL全称是“Open Graphics Library。.顾名思义,就是。开放的图形程序接口”,是一个功能强大调用方便的3D图形库.OpencL的软件具有很好的移植性,可以获得非常广泛的应用.

  1 、OpenGL的特点及其用途

  OpenGL是一套图形标准,它严格按照计算机图形学原理设计而成,符合光学和视觉原理,非常适合可视化仿真系统.

  首先,在OpenGL中允许视景对象用图形方式表达,如由物体表面项点坐标集合构成的几何模型,这类图形数据含有丰富的几何信息,得到的仿真图像能充分表达出其形体特征:而且在OpenGL中有针对三维坐标表示的顶点的几何交换,通过该交换可使顶点在三维空间内进行平移和旋转,对于由顶点的集合表达的物体则可以实现其在空间的各种运动。

  其次,OpenGL通过光照处理能表达出物体的三维特性,其光照模型是整体光照模型,它把顶点到光源的距离、顶点到光源的方向向量以及顶点到视点的方向向量等参数代入该模型,计算项点颜色.因此,可视化仿真图像的颜色体现着物体与视点以及光源之间的空间位置关系,具有很强的三维效果。

  另外,为弥补图形方法难于生成复杂的自然背景的不足,OpenGL提供了对图像数据的使用方法,即直接对图像数据读、写和拷贝,或者把图像数据定义为纹理与图形的结合,以生成视景图像和增强效果。为增强计算机系统对三维图形的运算能力,有关厂家已研制出了专门对OpenGL进行加速的三维图形加速卡,其效果可以与图形工作站相媲美。

  OpenGL并没有提供三维模型的高级命令,是通过基本的几何图元案点、线及多边形来建立三维模型的。目前,有许多优秀的三维图形软件(如3Dmax)可以较方便地建立物体模型,但又难以对建立的模型进行控制,若把这些模型转化为OpenGL程序,则可随心所欲地控制这些模型来制作三维模型的动态效果,实现虚拟现实环境。

  2 、现在主要的虚拟现实的开发工具

  现在主要的虚拟现实的开发工具主要有:美国A1berta大学开发的用于虚拟环境应用的工具包MR(minimalreality):Sense8 Corporation开发的一个用于虚拟环境应用的世界工具包WT(worldToolKit),其可运行于包括PC在内的各类硬件平台上,并且提供大量的C函数开发库;MultiGen Paradigm公司提供了三维建模工具MultiGen Creator和实时应用开发的软件环境Vega;SGI公司的虚拟现实开发平台包括Open Inventor、Open Performer、OpenCL Shader、OpenGL 0ptimizer、DpenGL Volumizer和OpenGL Vizserver等;法国Virtools公司所开发的三维引擎Virtools Dev系列。其余工具如JAYA3D、cULD3D、Vm几(Virtual Reality Mod—eling Language)等多用于在网页上创建交互式三维虚拟世界.

  3 、选择0perIGL作为本手术培训系统软件平台的工具包的

  主要原因

  OpenGL与C++结合开发虚拟现实系统.同样需要使用C或C++语言开发仿真器,并结合OpenGL的图形开发功能构成完善的虚拟现实系统。虽然OpenGL的使用需要进行大量的图形函数编写和较多的计算机图形学的知识,从图形到控制程序的开发难度和工作量也较大,但是之所以选择OpenGL作为本手术培训系统软件平台的工具包,主要有以下三方面原因:

  3.1从功能和形式上

  OpenCL是一个通用的三维图形开发库,可在windows和Linux平台上使用,代码相同。使用OpencL再加上一些图形学的算法可编出千姿百态的三维图形程序,可以实现本培训系统中虚拟人体器官组织的弹性变形。Vega、Open Inventor等虚拟现实开发工具就是使用OpenGL编写的包含多项功能的一种可二次外发的产品。在windows平台上,可使在VC中直接使用OpenGL进行自主界面的开发。

  相对OpenGL而言,Vega、Open Inventor等工具将先进的模拟功能和易用工具相结合,为非程序员实现一个三维图形系统提供了捷径。这些工具都包含一个场景构造界面和一个开发库,但这种开发库的使用类似于脚本语言,不能用VC开发自主界面.对于本课题而言,使用Vega、Open Inventor或WTK工具包虽然可以方便地建立起虚拟手术场景的三维模型,但是缺少系统支持的强大的图形库,无法表现出人体器官模型的弹性变形.

  3.2从应用前景上

  OpenGL是一个使用广泛的三维图形开发库,全世界有许多OpenGL程序员对openGL程序模块进行开发。OpenGL本身也在不断地改进,SGI与Microsoft曾达成开发新一代OpenGL的协议,目前已形成OpenGL开发联盟,即在OpenGL基础上加上了多媒体的功能.

  MultiGen/Vega、WTK、Open Inventor等工具是专用性产品,如果它的功能性和市场反应不好.各个公司会减少对软件开发的投资,这些软件自然可能会退出市场直至消亡.

  3.3从开发角度上

  OpenGL属于底层开发库,要开发一个项目,开发量自然比较大。但是可以通过积累许多openGL软件模块来进行虚拟现实系统的开发,这样程序开发的过程会非常容易。另外,使用()pencL开发则具有自主的知识产权。

  MultiGen/Vega、WTK等工具的开发针对性强,相对而言开发量会小,但需要始终捆绑着它,开发出的软件没有自主知识产权。



责任编辑:熊东旭