本发明涉及计算机渲染领域,提出了一种用于虚拟手术切割的高效渲染的新方法,其目的是在程序前端运算速度不够快时,加速程序的渲染速度。
背景技术:
gpu不仅只用来做特效,他们还有一些用在可视化方面的用途。
着色器可以接受相对较小的描述场景的图形属性(如颜色,坐标,法线和矩阵)作为输入数据。将大量的通用数据传递给着色器是无效-例如通过统一的变量。
凹凸映射使得不复杂的表面(如平面或球体)显示得看起来像非常复杂的表面。这个想法是在不复杂表面上的每一个与其复杂表面对应的像素上使用复杂表面的表面法线,然后在照明模型方程中使用该法线
凹凸映射可以进行平移和缩放的逼真的面上显示数据(例如天气,地点,地质学,路线或积雪)时,但是并不是通过创造出数千(或数百万)三角形来以实现它,这样就加速了渲染速度。
凹凸映射是一个灵巧的可视化显示技巧。它使可视化效果看起来像是具有比你实际做的更多的几何细节。
但是这就使得一般的凹凸映射存在局限性,只能通过平移和缩放视口在观察渲染结果。
也就是说它仅仅还只是个特效,我们不能改变眼睛的位置。
对于复杂的渲染环境下,使用一般的凹凸映射技巧是很难的,因此我们需要发挥cpu可编程管线的特点来改进这个弊端。
综上可知,目前的方法存在明显的缺陷和弊端,我们在不降低性能的前提下有必要对其加以改进。
技术实现要素:
针对上述的缺陷,本发明的目的是提供一种用于虚拟手术切割的高效渲染的新方法,使其通过大量使用可编程管线来改善目前凹凸映射的缺陷,提高渲染速度和质量。
为了实现上述目的,本发明提供一种用于虚拟手术切割的高效渲染方法,其特征在于,所述方法包括如下步骤:
a.在虚拟手术系统环境中实现的高效渲染方法,其特征在于:
a1.用于虚拟手术系统中手术刀和人体组织发生碰撞及切割时的渲染方法,将手术刀和人体组织的基本网格模型作为输入(矩形网格或三角形网格)
a2.计算手术刀和人体组织模型的obb包围盒
b.从当手术刀和人体组织模型的包围盒发生碰撞时,输出所有涉及到的顶点的位置和法向量,以及顶点间的拓扑关系。将这些数据传入顶点着色器进行数据加工,其特征包括:
b1.使用一种特殊的内存模型存储数据,特别地使用2d纹理的红色组件存储高度值,在蓝色组件中存储一个时间戳t,并初始化为0。
x和y分别是顶点的x和y轴方向两个分量坐标,rgb分别是红绿蓝颜色组件,s和t用于存储切向量
b2.在顶点着色器中以
申请一块帧缓存用于记录视口坐标系的变化角度的向量
b3.加载切割伤口的纹理贴图
c.片段着色器将接受顶点着色器处理过的顶点信息,并在此着色器中计算顶点的切向量
d.通过向量
d1.对法向量
d2.旋转矩阵m的旋转角度由公式(1)计算
e.设置光照混合模型,应用于在2d纹理组件中存储的2维三角形坐标及其存储的原始3维三角的法向量,使其看起来获得了三维效果。
f.光栅化,绘制图元,得到初步效果
g.当t不等于100时,t--,并触发重绘。
h.建立一个链表数组来记录因用户旋转视口而导致点光源相对于模型方向改变时,我们所映射的三角形法向量需要作出相应改变。
2.由1所述的过程中,其特征在于,所述步骤h具体包括:
在此过程中,建立一个链表数组来记录因用户旋转视口而导致点光源相对于模型方向改变时,我们所映射的三角形法向量需要作出相应改变。
在片段着色器中,计算点光源向量
gc=gcmod360(2)
当gc大于180°时,片段着色器将不对所在三角形进行绘制(因为根本不会看到这个三角形)
本发明通过一种新的方法来渲染被切割表面,它集成到硬件的可编程管线中。通过输入基本的三角形网格来实现算法,我们提高了渲染的简单性和效率,并且本发明提出了使用链表数组来对顶点进行有效分类,并通过计算视口变换的角度来改变所渲染的三角形,这个方法不仅提高了运算速度,还加快了渲染的流畅性,以及程序的高效性。
附图说明
图1为根据本发明实施例的用于本方法的流程框图
图2为本发明实施例中涉及的输入基本网格的模型图
图3为本发明实施例中涉及的存储结构单元的示意图
图4为本发明实施例中涉及的一种数据结构的示意图
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
步骤(1)在本发明的第一步中,使用图2所示模型,一个大腿的网格模型和一个手术刀模型作为基本模型输入。
步骤(1-1)计算手术刀和人体组织模型的obb包围盒
步骤(1-2)从当手术刀和人体组织模型的包围盒发生碰撞时,输出所有涉及到的顶点的位置和法向量,以及顶点间的拓扑关系步骤(2)我们将这些数据传入顶点着色器进行数据加工
步骤(2-1)使用如图3所示的内存模型的存储相关数据,特别地使用红色组件存储高度值,在蓝色组件中存储一个时间戳t,并初始化为0。
图3中x和y分别是顶点的x和y轴方向两个分量坐标,rgb分别是红绿蓝颜色组件,s和t用于存储切向量。
步骤(2-2)在顶点着色器中建立以
步骤(2-3)我们申请一块帧缓存用于记录视口坐标系的变化角度,使用向量
步骤(2-4)加载切割伤口的纹理贴图。
步骤(2-5)在顶点着色器中将顶点加工成三角形面片。
步骤(3)将顶点着色器中的数据传到片段着色器中。
步骤(3-1)然后将片段着色器将接受顶点着色器处理过的顶点信息,并在此着色器中计算顶点的切向量
步骤(3-2)通过向量
步骤(3-3)对法向量
旋转矩阵m的旋转角度由公式(1)确定
其中
步骤(3-4)设置光照混合模型,应用于在2d纹理组件中存储的2维三角形坐标及其存储的原始3维三角的法向量,使其看起来获得了三维效果。
步骤(4)光栅化,绘制图元,得到初步效果。
步骤(5)当t不等于100时,t--,并触发重绘,跳回到步骤(2)。
步骤(6)我们建立一个链表数组来记录因用户旋转视口而导致点光源相对于模型方向改变时,我们所映射的三角形法向量需要作出相应改变。
步骤(6-1)在片段着色器中,计算点光源向量
gc=gcmod360(2)
步骤(6-2)当用户改变视口时,,gt都将记录视口改变的累计值,并刷新链表数组中所有三角形面片对应的gc值。
步骤(6-3)对gc值进行判断:
当gc值大于180时,片段着色器将不对所在三角形进行绘制(因为根本不会看到这个三角形)。
当gc值小于180时,此时片段着色器对三角形进行绘制。
步骤(6-4)将我们筛选过的三角形片面进行光栅化,显示到屏幕上。
本发明未详细阐述的部分属于本领域公知技术。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。