三维网格模型透明绘制的方法及其系统技术方案

技术编号:8301069 阅读:154 留言:0更新日期:2013-02-07 04:57
本发明专利技术适用于计算机绘图技术领域,提供了一种三维网格模型透明绘制的方法及其系统,所述方法包括如下步骤:A、在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;B、将所有的所述链表根据所述片元的深度进行排序;C、对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;D、将所述每个像素位置上的所述像素的颜色值复制到显示缓冲区,在显示窗口显示所述三维网格模型。借此,本发明专利技术提高了三维网格模型透明绘制的精度和速度。

【技术实现步骤摘要】

本专利技术涉及计算机绘图
,尤其涉及ー种三维网格模型透明绘制的方法及其系统。·
技术介绍
计算机图形图像绘制技术是指ー种使用数学算法将ニ维或三维图形转化为计算显示器的栅格形式的技木。该技术大量应用在3D游戏和动画,计算机辅助设计,电影特效,数字医学等领域。三维空间的几何模型简称为三维模型,主要有线框模型、表面模型和实体模型三种表示方法,其中表面模型运用最为广泛,网格模型是表面模型的ー种常用形式。传统的网格绘制技术中,都是基于光栅化的方法,先把网格的所有三角形投影到视平面然后根据屏幕的分辨率进行离散化得到片元,经过一定的判断条件,最終得到屏幕上每个像素的像素值。由于使用图形学硬件绘制的过程中,绘制的顺序不是虚拟照相机观察的方向从前往后或从后往前按顺序进行绘制,而是ー种乱序的绘制。对于不透明的网格绘制,在这个过程中使用z缓冲区(z-buffer)来记录片元距离视平面的距离,取最靠近视平面的片元作为屏幕的像素输出,以此来解决网格之间的遮挡问题。而对于透明或半透明的网格,使用传统图形硬件基于乱序的绘制会引起透明网格多个片元合成计算到屏幕最終像素的合成顺序不正确,最終导致绘制出的网格之间的层次关系不正确。现有处理网格透明绘制上常见的是使用逐层深度剥离(Depth Peeling)以及在此基础上改进的多种增强深度剥离的方法,如“在高深度复杂性场景中绘制透明面的系统和方法”中的混合型层剥离和连贯层剥离两种方法以及“同时遮蔽透明度图形处理”、“倍増遮蔽透明度图形处理”中使用多采样技术多次迭代绘制合成透明效果。深度剥离对网格数据根据当前视角的深度,从近到远或从远到近逐层分离,这种方案缺点在于透明显示的精度不足,有固定的深度层数限制,如果很多三角网格的片断在同一层,深度剥离的效果很差,导致绘制的透明效果时显示不出网格之间的层次结构 ’另外,当处理大規模的网格数据时,由于使用传统图形渲染管线,毎次剥离需要对传统的Z深度缓存区及模版缓存区进行读写,所以毎次只能剥离1-2层,完成最終的绘制需要多次剥离和绘制操作,绘制速度慢,效率低。即使增强的深度剥离技术如“混合型层剥离”及“连贯层剥离”先对ー些面进行预排序或对模型空间预排序,減少乱序的面的数量,但仍不能避免使用传统图形渲染管线及传统的图形缓冲区进行绘制来实现深度剥离这一基本步骤,因此每次只能剥离少数面,需要多次剥离才能达到理想的效果,所以效率仍不能满足需求。而使用多采样技术的透明效果绘制,使用多采样技术提高了深度剥离面的数量和效率,但每次剥离仍然对面的数量有限制,受限于图形硬件对多采样技术中每个像素多采样数量,仍然需要多次迭代绘制及缓冲区交换数据才能得到最終結果,对于复杂深度的网格模型的透明绘制,效率依然不能满足需求。综上可知,现有的三维网格模型透明绘制的技术在实际使用上,显然存在不便与缺陷,所以有必要加以改迸。
技术实现思路
针对上述的缺陷,本专利技术的目的在于提供ー种三维网格模型透明绘制的方法及其系统,以提高三维网格模型透明绘制的精度和速度。为了实现上述目的,本专利技术提供ー种三维网格模型透明绘制的方法,所述方法包括如下步骤A、在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;B、将所有的所述链表根据所述片元的深度进行排序;C、对已排序的所述片元的属性信息进行合成,获得所述每个像素的顔色值;D、将所述每个像素位置上的所述像素的顔色值复制到显示缓冲区,在显示窗ロ显示所述三维网格模型。根据所述的方法,所述步骤A包括Al、对所述三维网格模型的绘制进行初始化;A2、输入所述三维网格模型,并进行光栅化处理,获得所述每个像素的位置的片元的数据;A3、对每个所述片元进行并行处理,使每个所述片元存储在共享存储纹理内;A4、查看所述片元进行并行处理的結果,井根据剩余的所述片元的数量进行相应的处理。根据所述的方法,所述步骤Al包括All、将每个像素对应的存储在所有所述片元的链表共享的存储区域;A12、建立ー个与所述显示窗ロ分辨率一致的表头ニ维纹理;A13、建立ー个与所述显示窗ロ分辨率一致的信号量ニ维纹理;A14、初始化所述三维网格模型的全局片元计算器。根据所述的方法,所述步骤A3包括A31、根据当前所述像素位置,读取所述信号量ニ维纹理对应位置的数值,井根据所述数值执行相应的操作;A32、根据当前所述片元对应的像素位置和所述全局片元计算器的读数,将所述片元的相关信息以及在所述片元在当前像素位置上链表的第一元素在所述链表共享的存储区域的位置信息存储在所述链表共享的存储区域;A33、修改所述表头ニ维纹理,在对应的像素位置上改写为所述链表共享的存储区域的所述片元的位置信息;A34、将所述信号量置为0,开放对当前所述链表的控制;A35、将所述片元从图形处理中去除。根据所述的方法,在所述步骤Al中对三维网格模型的绘制区域采用图形处理器中的纹理进行存储;在所述步骤A3中使用片断着色器对每个所述片元进行并行处理;在所述步骤A4中查询所述片断着色器处理结果,在有剩下未被擦除的片元时,增5加所述共享存储纹理的存储空间;在没有剩下未被擦除的片元时,将所有所述片元存储到对应的像素位置的链表内。 根据所述的方法,所述链表共享的存储区域采用图形处理器中的纹理进行存储;所述链表共享的存储区域包括数据部分和指针部分;所述片元的相关信息包括所述片元的顔色、不透明度或者深度。根据所述的方法,所述步骤B包括BI、使用所述片断着色器并行遍历每个像素位置上对应的链表,并存储在ー个临时缓存数组中;B2、使用所述片断着色器对每个链表的临时缓存数组中的片元根据其深度进行排序。根据所述的方法,所述步骤BI包括B11、所述片断着色器读取所述每个像素位置链表头部的表头ニ维纹理,获得所述链表的头部信息;B12、为所述每条链表新创建ー个临时片元存储区,存储每个链表的所有片元;B13、依次读取每个所述链表中元素,将所述元素中的片元数据复制到所述临时片元存储区中。根据所述的方法,所述链表和/或固定数组保存其当前位置上的片元数据时将基于相同像素位置的片元作为ー个片元集合保存。为了实现本专利技术的另ー专利技术目的,本专利技术还提供了ー种用于实现上述任一项所述的方法的系统,所述系统包括保存模块,用于在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;排序模块,用于将所有的所述链表根据所述片元的深度进行排序;获取模块,用于对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;显示模块,用于将所述每个像素位置上的所述像素的顔色值复制到显示缓冲区,在显示窗ロ显示所述三维网格模型。本专利技术通过使用了可动态调整大小的链表来存储每个像素位置上的片元数据,提高了三维网格模型透明显示时的精度;另外,通过使用片断着色器对片元进行并行存储、排序及合成的方法,提高了绘制的速度,也増加了数据的吞吐量,在输入大規模的网格数据时,仍能保持绘制的实时性。附图说明图I是本专利技术第一实施例提供的三维网格模型透明绘制的系统结构示意图;图2是本专利技术第二实施例提供的三维网格模型透明绘制的方法;图3A是本专利技术一个实施例提供的肝脏及周边血管网格模型透明绘制前效果图;图3B是本专利技术一个实施例提供的肝脏及周边血管网格模型透明绘制后效本文档来自技高网
...

【技术保护点】
一种三维网格模型透明绘制的方法,其特征在于,所述方法包括如下步骤:A、在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;B、将所有的所述链表根据所述片元的深度进行排序;C、对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;D、将所述每个像素位置上的所述像素的颜色值复制到显示缓冲区,在显示窗口显示所述三维网格模型。

【技术特征摘要】

【专利技术属性】
技术研发人员:叶建平张磊张吉帅杨光
申请(专利权)人:深圳市旭东数字医学影像技术有限公司
类型:发明
国别省市:

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

1