当前位置: 首页 > 专利查询>南京大学专利>正文

一种三维地震体数据的实时光线投射体绘制方法技术

技术编号:8907561 阅读:226 留言:0更新日期:2013-07-11 05:23
一种三维地震体数据的实时光线投射体绘制方法,使用CUDA并行技术进行体数据块是否可见的判断,再使用CUDA并行技术判断体数据块当前分辨率是否需要提高,以上两步从低分辨率开始循环,逐步提高分辨率,直到满足分辨率要求、显存不足无法提高分辨率或已经达到最高分辨率为止,以确定最终渲染时体数据块各自所使用的分辨率;在渲染处理中使用多线程技术对需要调度的体数据块进行I/O调度,同时使用CUDA并行技术对调度进来的数据进行光线投射体绘制。相对于现有的光线体绘制方法,本发明专利技术可适用于海量体数据实时体绘制、可以在一个场景下有多个分辨率等级的数据参与绘制,计算速度快、成像效果好。

【技术实现步骤摘要】

本专利技术属于计算机图形学领域和地质建模领域,涉及多分辨海量地质数据的实时渲染,使用CUDA并行技术,为。
技术介绍
体绘制作为一种渲染技术,具有对三维数据完全的描述能力,广泛应用在医疗、地质成像、数字雕刻等领域。将体绘制技术应用到三维地震体数据的实时渲染上能够极大提闻石油的勘探效率。三维地震体数据具有海量、多分辨率的特点,由于硬件条件的限制,我们的渲染工作需要有良好的数据调度管理。另外,为了提高最终的渲染质量,在一次渲染中,要根据观察点和体数据的三位位置关系,使用不同分辨率的体数据块进行体绘制。这样才能达到实时和良好的绘制效果。但是由于体绘制在计算过程中要遍历所有视点中的体数据块,所以对于海量三维地震体数据的体绘制是一个计算和数据双重密集的问题。传统的体绘制技术主要针对小规模数据,而且计算量大,复杂度高,难以达到实时交互式体绘制的要求。基于硬件的体绘制算法由于硬件价格昂贵及纹理数量的限制等原因难以普及。随着图形芯片技术的发展,早期仅适用于工作站平台的实时体绘制技术在PC平台也得到了快速发展。随着GPGPU概念的提出,基于CPU-GPU的异构并行计算平台为PC平台计算的性能提升提供了可能。CUDA (Compute Unified Device Architecture,统一计算架构)是由NVIDIA所推出的一种整合技术,是该公司对于GPGPU的正式名称。得益与此,很多成像效果好,但计算量巨大的体绘制方法已经可以在PC平台上实现实时的运算和绘制。本专利技术结合地质领域的应用需求,提出了 一套基于CUDA并行计算架构的,针对海量三维地震体数据的光线投射实时体绘制算法。
技术实现思路
本专利技术要解决的问题是:针对多分辨海量三维地震体数据,进行实时体绘制,现有的算法要么无法绘制海量数据,要么无法达到实时渲染的效果,要么成像效果不佳,难以达到要求。本专利技术的技术方案为:,使用CUDA并行技术对三维地震多分辨体数据进行实时渲染,包括以下步骤:步骤1:使用CUDA并行技术进行当前分辨率下体数据块是否可见的判断:在当前渲染场景下,根据绘图程序接口 OpenGL当前的ModelView矩阵和Projection矩阵计算出视锥的6个面,用来判断当前分辨率下体数据块是否出现在可见视锥中,即当前分辨率下体数据块是否可见:将视锥视为AABB包围盒,判断体数据块8个顶点中的positive顶点和negative顶点是否在视锥中,从而判断该体数据块是否出现在视锥中;所述的计算和判断利用CUDA并行技术并行化;如果当前分辨率级别未设置,将当前分辨率级别初始化为三维地震多分辨体数据的最低分辨率级别;步骤2:使用CUDA并行技术判断可见体数据块的当前分辨率是否满足需求,以确定最终渲染时,各可见体数据块所使用的分辨率,并生成本次渲染需要的体数据块列表:判断当前分辨率是否满足需求时,先将可见体数据块投影到绘制平面,得到体数据块在绘制平面上的8个投影点,计算这8个投影点的最小包围盒,此包围盒的面积为计为S,与当前分辨率下体数据块的侧面的面积Rs相比较,如果S>Rs说明该体数据块分辨率不足,将当前分辨率级别提高一级,如果此时已经达到三维地震多分辨体数据的最高分辨率级别,则分辨率选择结束,否则,回到步骤1,进行高一级分辨率下的判断,同时将本次分辨率判断的结果保存下来;如果所有体数据块的S < Rs,则所有体数据块都不再需要提高分辨率,分辨率选择结束;如果分辨率判断结束后,渲染所需要的体数据块数量超出显存所能容纳的范围,则恢复到上一次选择的分辨率结果;由最终确定分辨率的体数据块得到本次渲染需要的体数据块列表;步骤3:判断需要的体数据块是否被调度,使用多线程技术对需要调度的体数据块进行I/o调度,并进行硬盘、内存、显存的三级调度、缓存管理:对本次渲染所需要的体数据块列表,先查询数据管理器所需要的体数据块是否在显存中,如果在就不需要再重新调度了,如果不在,先在内存缓存中查找,找到后调度进入显存,如果没有找到再从硬盘中查找,然后调度入显存;其中,数据管理器采用硬盘一内存一显存的三级数据管理模式,显存用于存放本次渲染所需要的体数据块,内存用于存放本次渲染所需要的体数据块以及缓存数据,以提高I/o调度的效率,硬盘用于存放全部三维地震体数据;内存管理使用“最近最少调度算法”,在内存空间不足时,标示为最近未用的体数据块将被淘汰,提供给新进入的体数据块使用;步骤4:在I/O调度的同时,使用CUDA并行技术对调度进来的数据进行光线投射体绘制:使用光线投射的方法对待渲染的体数据块进行采样,根据采样点所在体数据块使用的分辨率决定采样步长,每采样一个点后增加一个步长,直到穿透要绘制的体数据块区域,或超出采样点数量;对采样得到的数据值,按照颜色表计算得到颜色,再根据用户设置的透明度值将颜色值累加,得到当前采样射线在绘制平面上的最终投影点的颜色,所有采样射线的投影点颜色计算完毕后,绘制平面上就得到了最后的渲染结果。步骤I中,在判断体数据块的可见性时,首先读取三维地震多分辨体数据的最低级别分辨率,根据这一分辨率下的体数据块数量生成一张分辨率表,分辨率表的每一个位置代表一个体数据块,这个位置内的值代表这个数据块所采用的分辨率级别:-1代表此体数据块不可见,大于等于零的其他值代表该体数据块所采用的分辨率;初始化时,这张表的大小为最低分辨率下,体数据块的个数,其值全部为最低分辨率,再根据这张表和步骤2,不断更新分辨率表;如果某体数据块可见性判断结果为不可见,则在生成的分辨率表中,由该体数据块分裂而得的体数据块全部设置为不可见,即对应表格位置填-1。步骤2中,根据当前分辨率表做进一步计算:I)、当前体数据块为不可见,则不进行分辨率选取,直接在更新分辨率表时将由该体数据块分裂而得的体数据块所对应的位置全部设置为-1;2)、当前分辨率表中某体数据块的分辨率与分裂后的下一分辨率的差值>1,说明在上一次分辨率选取时该体数据块已经不需要再分裂了,则直接在更新分辨率表时将由该体数据块分裂而得的体数据块所对应的位置全部设置为当前分辨率表中的值;如果差值=1,则进行是否需要提高分辨率的判断;因为下一分辨率是在当前分辨率的基础上加1,所以差值不可能〈I ;3)、当前体数据块经判断不需要再提高分辨率,则直接在更新分辨率表时将由该体数据块分裂而得的体数据块所对应的位置全部设置为当前体数据块的分辨率值;4)、如果判断结束后,发现没有任何体数据块需要提高分辨率,则判断结束,最终分辨率表为上一次计算得到的分辨率表;如果分辨率提升后,需要调度的体数据块超过显存所能容纳的数据量,判断结束,最终分辨率表为上一次计算得到的分辨率表;当分辨率已经提升到最高分辨率,判断结束,最终分辨率表为当前计算得到的最高分辨率下的分辨率表。步骤3中,采取硬盘、内存、显存的三级缓冲技术,并对显存上的数据进行压缩处理,由原始的float型数据转换为byte型数据,提高一次渲染中可渲染的体数据块个数。步骤4中,光线投射的步长是根据步骤2生成的分辨率表动态改变的,在渲染不同的体数据块时,查找该体数据块的分辨率表来设定步长,渲染时通过用户设定的颜色表将显存中byte类型的数据转化为RGB颜色值。相对于现有的海量实时体绘制方法,本本文档来自技高网
...

【技术保护点】
一种三维地震体数据的实时光线投射体绘制方法,其特征是使用CUDA并行技术对三维地震多分辨体数据进行实时渲染,包括以下步骤:步骤1:使用CUDA并行技术进行当前分辨率下体数据块是否可见的判断:在当前渲染场景下,根据绘图程序接口OpenGL当前的ModelView矩阵和Projection矩阵计算出视锥的6个面,用来判断当前分辨率下体数据块是否出现在可见视锥中,即当前分辨率下体数据块是否可见:将视锥视为AABB包围盒,判断体数据块8个顶点中的positive顶点和negative顶点是否在视锥中,从而判断该体数据块是否出现在视锥中;所述的计算和判断利用CUDA并行技术并行化;如果当前分辨率级别未设置,将当前分辨率级别初始化为三维地震多分辨体数据的最低分辨率级别;步骤2:使用CUDA并行技术判断可见体数据块的当前分辨率是否满足需求,以确定最终渲染时,各可见体数据块所使用的分辨率,并生成本次渲染需要的体数据块列表:判断当前分辨率是否满足需求时,先将可见体数据块投影到绘制平面,得到体数据块在绘制平面上的8个投影点,计算这8个投影点的最小包围盒,此包围盒的面积为计为S,与当前分辨率下体数据块的侧面的面积RS相比较,如果S>RS说明该体数据块分辨率不足,将当前分辨率级别提高一级,如果此时已经达到三维地震多分辨体数据的最高分辨率级别,则分辨率选择结束,否则,回到步骤1,进行高一级分辨率下的判断,同时将本次分辨率判断的结果保存下来;如果所有体数据块的S≤RS,则所有体数据块都不再需要提高分辨率,分辨率选择结束;如果分辨率判断结束后,渲染所需要的体数据块数量超出显存所能容纳的范围,则恢复到上一次选择的分辨率结果;由最终确定分辨率的体数据块得到本次渲染需要的体数据块列表;步骤3:判断需要的体数据块是否被调度,使用多线程技术对需要调度的体数据块进行I/O调度,并进行硬盘、内存、显存的三级调度、缓存管理:对本次渲染所需要的体数据块列表,先查询数据管理器所需要的体数据块是否在显存中,如果在就不需要再重新调度了,如果不在,先在内存缓存中查找,找到后调度进入显存,如果没有找到再从硬盘中查找,然后调度入显存;其中,数据管理器采用硬盘→内存→显存的三级数据管理模式,显存用于存放本次渲染所需要的体数据块,内存用于存放本次渲染所需要的体数据块以及缓存数据,以提 高I/O调度的效率,硬盘用于存放全部三维地震体数据;内存管理使用“最近最少调度算法”,在内存空间不足时,标示为最近未用的体数据块将被淘汰,提供给新进入的体数据块使用;步骤4:在I/O调度的同时,使用CUDA并行技术对调度进来的数据进行光线投射体绘制:使用光线投射的方法对待渲染的体数据块进行采样,根据采样点所在体数据块使用的分辨率决定采样步长,每采样一个点后增加一个步长,直到穿透要绘制的体数据块区域,或超出采样点数量;对采样得到的数据值,按照颜色表计算得到颜色,再根据用户设置的透明度值将颜色值累加,得到当前采样射线在绘制平面上的最终投影点的颜色,所有采样射线的投影点颜色计算完毕后,绘制平面上就得到了最后的渲染结果。...

【技术特征摘要】

【专利技术属性】
技术研发人员:鲁林唐杰武港山
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1