基于FBO 的GPU 混合体绘制算法研究

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:lml2009
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:体绘制是渲染三维数据场的重要技术,可以探索物体的内部结构,相对于面绘制和切片技术体绘制能够更加形象地展示物体的内部形态,描述非定形的物体。然而体绘制算法复杂度高,数据存储量大,计算时间较长,为了能解决体绘制渲染效率问题,论文介绍了基于GPU加速的光线投射算法实时体绘制技术,并在此基础上提出了基于FBO的快速混合体绘制算法,解决了体绘制图形与常规图元同屏绘制互相遮挡的问题,目前该方法已应用于三维地质解释综合成图系统中,实现了三维属性体与地层、断层曲面同屏显示,提高了解释工作的质量和效率。
  关键词:GPU;混合体绘制;地质数据的体绘制;光线投射算法;帧缓存对象
  中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)13-0223-04
  Abstract:Volume rendering is a kind of important technology of 3D data volume rendering, which can display the internal structures and the shapes of the data cubes more vividly than the surface rendering and the technique for surface extraction from a volume. However, volume rendering algorithm have the characteristics of complexity, high data storage capacity and longer calculation, in order to solve the problem of volume rendering efficiency, the paper introduces the Ray-casting algorithm real-time volume rendering technology which is based on GPU acceleration, and puts forward a method of fast hybrid volume rendering based on FBO to solve the volume rendering graphics primitives to draw each other with conventional occlusion problems with the same screen. At present, this method has been applied to the three-dimensional geological interpretation of comprehensive mapping system, which realizes that the three-dimensional attribute body and stratigraphy, fault surface can be shown at the same time, and improves the quality and efficiency of the interpretation work.
  Key words: GPU; volume rendering; hybrid volume rendering; the frame buffer object ; ray-casting algorithm
  体绘制[1]是一种直接由三维数据场产生在屏幕上的颜色为人工指定的伪彩色的半透明图像。体绘制的成像步骤是首先需要对数据进行分类处理,分别对不同的类别赋予不同的颜色和不透明度值,最后根据视点和体数据的相对位置决定最终效果。体绘制技术最大的特点是可以显示物体的内部构造,解释非定形的事物,如人体器官、烟、云等。目前在分子模型构造、气象分析、及医疗等广泛应用体绘制技术。但是在地质勘探领域,由于数据量巨大,计算复杂度高等问题,无法进行实时体绘制。所以在体绘制技术以前,都采用面绘制方法来显示地质勘探领域中的速度、密度、电阻率等数据属性体,如移动立方体或四面体算法等来展示属性体的等值面,采用切片方法显示属性体内部构造。但随着GPU的出现,克服了无法进行实时绘制的缺点。体绘制技术可以将面绘制和切片方法的优点结合起来,有效地提取和显示用户关心的地质异常体,半透明的展示异常体内部结构,对地质解释工作具有重要意义。
  虽然目前体绘制算法已经比较成熟,但是应用到地质中解释综合成图系统的还是很少,主要有两方面的原因:(1)地质属性体数据量巨大,常规的基于CPU的程序很难应付。(2)以前的体绘制方法研究往往只针对一个单一的属性体,不能够绘制其它常规图元,而地质解释工作中,除了利用体绘制提取和显示异常体外还需要附加显示一些地质层位或断层,用于综合对比分析。为了解决数据量大的问题,本文研究了基于GPU的并行体绘制方法,这大大提高了体绘制速度,使大规模地质属性体数据绘制成为了现实;而为了解决体绘制和常规图元同屏显示的问题,本文又研究了基于OpenGL的混合体绘制技术,实现了体绘制属性体与OpenGL基本图元混合显示的功能。
  1 基于GPU的光线投射方法的应用
  光线投射算法[2]是一种基于图象空间扫描的一种典型的直接体绘制法。将用户想要得到的区间数据可视化出来,用户可以将不需要观察的数据透明度设为0,着重显示想要观察的地方。比如医疗中显示骨骼,皮肤等的效果。直接体绘制法是指通过给三维属性体的体元赋予色彩和透明度,再由光线穿越半透明物体时能量聚集,进行色彩合成的成像过程。常见的其他的体绘制方法还有:足迹表法[3]、体元投射法[4]和基于错切-变形技术的体绘制算法[5]。   由公式可见,在体绘制技术中,在计算屏幕每个像素点的颜色时,具有大量的数值计算和重复操作,如提取属性数据体的数据和采样点的颜色混合。若通过OpenGL把此类工作交由GPU处理可以很大的提高程序的对计算机硬件的利用效率和Ray-Casting算法的实用性。
  GLSL[6]是一个在GPU上执行的,以C语言为基础的高阶着色语言。它是由 OpenGL ARB 所建立,提供开发者对绘图管线更多的直接控制,而无需使用汇编语言或硬件规格语言。GLSL的着色器代码分成2个部分:Vertex Shader(顶点着色器)和Fragment(片断着色器)。Vertex Shader把每个顶点在虚拟空间中的三维坐标变换为可以在屏幕上显示的二维坐标,并带有用于Z-Buffer的深度信息。Fragment Shader计算每个像素的颜色和其它属性并输出。在体绘制技术中,在计算屏幕每个像素点的颜色时,具有大量的数值计数和重复操作,如提取属性数据体的数据和采样点的颜色混合。如若通过OpenGL把此类工作交由GPU处理可以大的提高程序的对计算机硬件的利用效率和Ray-Casting算法的实用性。
  使用GLSL和OpenGL实现实时体绘制技术的步骤如下:
  (1)确定属性数据体在进行了OpenGL矩阵变换[7]后在屏幕坐标系中的绘制范围。
  (2)上传属性数据体、颜色表、变换矩阵等体绘制算法所需的数据到GPU中。
  (3)用GLSL实现Ray-Casting算法。
  在确定属性数据体在屏幕坐标系中的绘制范围时,应该先确定当前OpenGL中的Mode-View矩阵M和Projection矩阵R,视口变换矩阵V。得出此三个矩阵后,分别用属性数据体的八个顶点Pi(i=1,…,6,7,8)进行这三个矩阵的变换得出屏幕坐标点Psi(i=1,…,6,7,8),矩阵变换公式如下:
  [Psi=Pi*M*R*V] (2)
  最后取Psi(i=1,...,6,7,8)的最小值和最大值即可得出屏幕坐标系中的绘制范围。
  基于GPU的Ray-Casting算法流程如图2所示:
  1) 计算射线穿越的最大距离,即渲染正向面深度图和背向面深度图来作为循环采样控制的依据。
  2) 根据上传到GPU的数据(屏幕坐标、变换矩阵、采样距离等)确定采样时的射线方向、采样在射线方向的范围和空间采样间距。
  3) 循环纹理采样、合成;依次将每一个采样点对应的颜色值进行混合,最后向OpenGL输出累积混合颜色。在累积混合过程中,若输出颜色的透明度已经达到完全不透明(即数值为1.0),此累积混合过程也当结束。
  在图像合成的公式中可以看出,不透明α逐步增大,当α的值接近于1.0时,则该像素点已经完全不透明,后面的像素点就可以不再计算。
  光线投射算法这种体绘制技术相对面绘制技术在绘制数据体时更能直观属性数据体内部的情况。此体绘制技术在指定数据范围的情况下绘制出了属性数据体内部分布情况;同时对不同区间的数据进行叠加混合显示,形成整个属性数据体的透明分布。成像质量高,但是此算法计算量大,成像速度慢,因此在实现此技术时,使用GPU并行计算[8]极大的减少了算法处理的时间。内存:16GB;CPU: Intel(R)Core(TM) i7-4790k;显卡:NVIDIA GeForce GTX 780;显存:3GB;屏幕分辨率:1920*1080;表1为实验统计结果:单位(ms)。
  根据统计,使用GPU进行的体绘制算法要比使用CPU实现的算法快10倍以上,数据越大,GPU比CPU实现体绘制算法快的倍数越大。如图3所示,是使用GPU进行的体绘制应用到三维地质解释综合成图系统中得到的成果图。
  2 基于FBO的GPU混合体绘制技术
  使用OpenGL和GLSL实现的基于GPU的光线投射算法直接体绘制技术能大幅度的提高绘制效率,但是这个技术却不能解决体绘制图形和OpenGL基本图元的共同绘制。OpenGL基本图元指在用OpenGL绘图的过程中的点,直线,多边形。如地质层面就是由无数的三角形这种OpenGL基本图元构成的。如果使用了GLSL直接调用API绘制基本图元,就会出现基本图元与体绘制图形的相互遮挡,达不到想要的效果。而产生这种现象的原因就是OpenGL的Shader具有默认的深度输出,在OpenGL进行深度缓存消隐时就会出现体绘制图形与其他图元互相遮挡。如图4所示:
  针对这种情况,我提出了基于FBO的GPU混合体绘制算法,解决相互遮挡的问题。算法的基本原理是使用OpenGL进行两次绘制,首先在缓存中绘制OpenGL基本图元的深度和颜色信息;根据缓存中的深度和颜色信息再绘制图形,绘制时一定要实现对基本图元与体绘制的深度消影,解决遮挡问题。因为混合体绘制算法就是在直接体绘制的基础上实现的,在颜色混合时根据缓存的深度信息进行特殊混合。在确定屏幕点P的绘制颜色时,原有算法只是简单的累积P1Pn之间采样点的颜色,没有进行深度测试。混合体绘制算法可以使用OpenGL中的帧缓存技术[7]。通过具体的API调用,OpenGL可以把应当绘制到屏幕的内容(帧)绘制到GPU的缓存中,供其它程序使用。
  当OpenGL将场景中的OpenGL基本图元绘制到了帧缓存对象后,由帧缓存中保存的深度信息,将帧缓存的内容变换到模型坐标系中,我们可以得到一个基本图元,这里假设我们得到的是一个三维曲面。现在整个模型坐标系中有两个三维图元,即体绘制数据体和三维曲面。设当前OpenGL中的Mode-View矩阵为M、Projection矩阵为R、视口变换矩阵为V。已知帧缓存中一点P(x,y,d),则将其变换到模型坐标系的公式为:
  [p’=p*V*R*M] (5)   在模型坐标系中设置一个观察点,从此观察点向两个模型发射一条射线,这条射线与模型的相加情况如下:
  1) 与两模型都不相交。
  2) 只与曲面相交。
  3) 只与数据体相交。
  4) 先交于曲面后交于数据体。
  5) 先交于数据体后交于曲面。
  6) 射线在数据体之内相交于曲面。
  当射线与两模型都不相交时,屏幕点即为背景色。当射线只与数据体相交时,就直接采用基本的体绘制原理。当射线只与半透明曲面相交时,直接绘制OpenGL基本图元即可。当既与体绘制数据体相交又与曲面相交时,则要采用混合体绘制算法。当射线与两模型都相交时,如图5为三种情况的算法原理图。
  结合基本体绘制算法,可以得出混合体绘制算法基本流程图,如图6所示。
  图7为基于GPU的混合体绘制算法应用到三维地质解释综合成图系统中得到的成果图,横插入数据体的曲面将体绘制图形分为上下两部分,其中位于曲面上方部分的数据体被正确显示出来,而位于下方的部分则被曲面遮挡而未被显示,成果图展现了使用OpenGL基本图元绘制的曲面与同屏的GPU体绘制图形具有正确的深度遮挡关系,证明使用上述方法可以有效解决OpenGL基本图元与体绘制图形同屏绘制的问题。
  3 结语
  体绘制是一种重要的三维数据场可视化算法,在体绘制技术以前,地质勘探领域,速度、密度、电阻率等数据属性体一般采用面绘制方法来展示属性体的等值面轮廓,采用切片方法显示属性体内部构造。但后来随着体绘制的出现,体绘制方法可以能够更加形象地展示物体的内部形态,解释非定型的事物,然而体绘制算法复杂度高,数据存储量大,计算时间较长,为了能解决体绘制渲染效率问题,论文提出了基于GPU的光线投射算法的应用,大幅度提高了体绘制的速度,使得该技术可以实现大规模地质属性体的实时绘制。后又在直接体绘制的基础上提出了基于FBO的GPU混合体绘制算法,解决体绘制图形与OpenGL基本图元深度不正确,同屏显示相互遮挡的问题,实现了体绘制图形与OpenGL基本图元之间相互对比显示。目前此技术已应用于三维地质解释综合成图系统中,实现了三维属性体与地层、断层等结构面综合对比显示。通过在实际地质综合解释和评价系统项目中应用,说明了改进后的体绘制技术在正确显示体绘制图形与OpenGL基本图元深度方面取得良好效果,同时此技术也可推广到其它一些行业的应用软件。
  参考文献:
  [1] (美)EdwardAngel著,李桂琼,张文祥译.OpenGL程序设计指南[M]. 清华大学出版社, 2005.
  [2] 康玉之.GPU编程与CG语言之阳春白雪下里巴人[K]. 半山工作室,2009:160-172.
  [3] 郭涛, 平西建.基于OpenGL 的三维地形可视化技术研究[ J] .计算机工程与设计, 2008, 29(1):193-195.
  [4] 唐泽圣, 等.三维数据场可视化[M].北京:清华大学出版社, 2000.
  [5] Kruger J,Westermann R.Acceleration techniques for GPU-based
  volume rendering[C].Proceedings of IEEE Visualization,Seattle,2003:38-45.
  [6] YagelR, KaufmanA.Template-basedvolumeviewing[J].Computer
  GraphicsForum, 1992, 11(3):153-157.
  [7] Dave Shreiner,OpenGL编程指南[M],北京:机械工业出版社,2010:96-109,316-340
  [8] 库克,马培军,苏统华. CUDA并行程序设计:GPU编程指南[M].
  北京:机械工业出版社,2014:19-34.
其他文献
摘要:初中生物对将来的生物学习起着地基的作用。教材是课程的依托,是教学和学习的重要参考资料。笔者通过扫描整理得到电子版维吾尔文初中生物四册教材的文本,使用统计软件统计出四册教材中的词汇和词频,经过手工统计得到其中的生物词汇和词频,从中选取高词频的生物词汇,参照国家教育部2011年发布的课程标准,通过专业词汇的词频分析了对初中生物教材知识点的符合程度,结合维吾尔文语言学的特点,针对维吾尔文初中生物的
摘要:大学开放的学习环境以及不逃课就不算上过大学这种错误的思想观念的影响,再加上很多大一新生刚从高中时代那种封闭的学习环境中解脱出来,自身的放松使得他们对课堂学习不重视,玩手机、逃课等现象严重。这使得大学课堂的学习氛围普遍不高,学习效率低下。那么如何调动高校学生课堂学习的积极性呢?该文从学生的角度出发,剖析了当前高校学生课堂学习积极性不高的原因,通过以单片机的学习为例,介绍了课堂理论学习与实验学习
摘要:本系统采用VB 6.0和Access 2000分别作为主要开发工具和数据库,主要实现了对学生的学籍,班级、所学课程、成绩和考勤信息的统一管理,减少了管理方面的工作量。使对学生信息的管理实现了自动化和规范化,并且在实现其功能的基础上,增加了用户的使用权限。系统按功能共分为五部分:学籍管理模块、班级管理模块、课程管理模块、成绩管理模块和考勤管理模块。  关键词:VB 6.0;模块;学生管理系统 
摘要:根据应用需求,基于MATLAB GUI设计了数据格式标准化软件。首先对基于MATLAB GUI的软件设计流程进行了概述,之后对MATLAB GUI 数据传递的关键技术方法进行了介绍,结合对设计软件的主要功能的说明,分析了MATLAB GUI设计的优缺点。  关键词:MATLAB;GUI;数据格式;软件设计  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)01
摘要:該文针对永磁同步电机(PMSM)的矢量控制,针对PMSM在坐标下的数学模型使用扩展卡尔曼滤波方法,根据测量永磁同步电机的电压、转速和转子位置对永磁同步电机三相电流进行观测,最后在Simulink里搭建永磁同步电机的矢量控制模型与EKF电流观测器模型。仿真结果表明电流观测器估计精度较高、运行稳定,动静态性良好。  关键词:永磁同步电机;矢量控制;电流观测器;扩展卡尔曼滤波  中图分类号:TP1
摘要:人脸识别在实际应用中,通常由于光照的影响导致识别率的大幅下降。针对这一情况,该文从人脸图像预处理和特征提取算法两方面进行改进。文章首先采用了基于光照分量的算法进行人脸图像预处理,提高了算法对于光照的鲁棒性,然后提出了改进的结合了Gabor小波和LBP滤波的算法,并在有光照变化的标准人脸库上进行识别率测试。实验结果表明,该文算法对于变化光照的鲁棒性较高,在标准人脸库中的识别率最高可达到98.9
摘要:介绍了Windows NT平台下RootKit实现的基本原理及步骤,探讨了在Windows平台下进行Ring0级编程的实现及如何修改安全参考监视器来彻底突破NT的安全防御系统,并给出了整个RootKit的部分核心汇编源代码。  关键词:RootKit;Windows NT;Ring 0;安全参考监视器  中图分类号:TP309文献标识码:A文章编号:1009-3044(2008)35-255
摘要:C语言作为计算机设计的高级语言,拥有很广泛的用途,该文讲述了使用C语言如何去实现模拟一个简单的Linux文件系统,对于我们学习操作系统知识有很好的借鉴作用。  关键词:C语言;Linux;文件系统  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)14-0058-03  Linux作为全球目前最大的一个自由免费软件,是一个能够与windows操作系统所能所相媲
在这个互联网时代,看电影、电视剧成为我们平时生活的一部分。但受限于网络问题,我们并不是所有时候都可以在线观看,基于此,许多人都习惯了把视频下载回来再欣赏。但对于忙碌的朋友而言,又不可能一直守着电脑下载。这个时候,离线下载就成为唯一选择。如果你计划在家里搭建无线网络,具有离线下载功能的无线路由器成为首选。为了方便大家选购,下面笔者就为读者们推荐几款离线下载路由器,并对它们进行试用体验。  推荐1:迅
摘要:随着计算机技术与网络技术的发展,远程教学方式受到越来越多人的关注。通过计算机网络进行远程教学能够扩大受众的规模,并体现教育的公平性,因此计算机远程教学在当今社会中有着非常大的发展空间及潜力。但是就目前我国远程教学实施的实际情况来看,教学手段还是显得过于单一,多数都是采用为受众提供视频、资料下载的方式或者视频播放的方式,学习者没有跟教学者形成一定的交流互动,缺乏沟通,导致遇到不懂的问题或存在疑