本发明涉及医疗教学训练系统的建模方法,特别涉及一种穿刺虚拟教学训练系统中的铺巾过程建模方法及该穿刺虚拟教学训练系统。
背景技术
穿刺训练中的铺巾操作需要用到洞巾,目前大多数采用方法是对洞巾建立骨骼,然后由美工针对每个动作做不同的布料骨骼动画,这种做法带来的弊端就是洞巾不会随着周围环境的变化来变化。针对不同的铺巾部位都需要做不同的布料骨骼的调整,加大的美工的工作量以及工作复杂度,另外如果披风的骨骼的数目不多的话,还会导致即使是调出来的动作也会产生很不美观的效果。
要实现一套针对布料的物理系统,要求在没有风的情况下,布料会受重力的影响,慢慢的飘落,并且在有风刮起来的时候能随风飘摆。在虚拟穿刺训练中能实现铺洞巾的动态过程,并使洞巾准确贴合到穿刺部位。
传统物理中,根据流体力学来说,洞巾模型上每个顶点的力可以用圣维南方程组来求,但是在数学里面来说,圣维南方程组是没有精确解的,那么就需来设计一种模型来求该方程的近似解。
技术实现要素:
基于此,有必要提供一种实现铺巾动态过程的穿刺虚拟教学训练系统中铺巾过程建模方法。
同时,提供一种实现铺巾动态过程的穿刺虚拟教学训练系统。
一种穿刺虚拟教学训练系统中铺巾过程建模方法,包括如下步骤:
洞巾分解:将洞巾分解成n个质点,形成矩形阵列点;
质点连接:每个质点和与其相邻的上、下、左、右、左上、左下、右上、右下8个点用弹性件连接,
计算质点内力;
计算质点外力;
获取质点下一帧的位置:根据质点的质量及质点内力与外力的合力大小获得一个带方向的加速度:
对洞巾做碰撞检测:采用“椭球包围体”碰撞,椭球体绑定在待铺巾人物骨骼上,采用三个向量描述椭球体,一个是椭球体在空间的中点,另外一个是椭球体在x、y、z轴三个方向的半径长度,再一个是指定椭球体的方向的向量,椭球体的方程为:
将顶点的x、y、z值带入计算式:
判断计算结果大于1还是小于1,若小于1或等于1则发生碰撞;
求解椭球体碰撞点:发生碰撞之后,将该洞巾顶点强行移动到离椭球体表面最近的点,通过解从椭球中点、过该洞巾顶点的射线和椭球体方程一起连解,获得该洞巾顶点离最近椭球体表面的一点,化简得到:
x=x0+t×(x1-x0)
y=y0+t×(y1-y0)
z=z0+t×(z1-z0),
其中x0、y0、z0为椭球中点,x1、y1、z1为洞巾顶点碰撞后于椭球体内的一点。
在优选的实施例中,还包括:求解该洞巾质点在椭球体上一点的法线的支持力:当前质点的重力点乘该质点在椭球体法向量计算出当前质点所受力在负法线方向的分量,然后当前的力向量减去这个分量,再乘以该椭球体的摩擦系数,得到洞巾质点在椭球体上一点的法线的支持力;完成洞巾运算和其与椭球体碰撞的模拟。
在优选的实施例中,所述洞巾与椭球体碰撞后,质点于椭球体上一点的法线向量:
在优选的实施例中,所述计算质点内力步骤包括:
计算弹性件拉力:获取当前质点在空间中的位置p0,及该质点周围各个质点的位置p1-p8,循环计算p1-p8和p0的距离,用p1-p8各自和p0的距离减去各自弹性件本身的长度l0,然后乘以虎克系数,获得该质点在这一帧受到的弹性件拉力。
在优选的实施例中,所述计算质点内力步骤还包括:
计算弹性件的弯曲应力:通过计算与当前质点相邻的上质点和下质点的夹角、以及左质点和右质点的夹角各自乘以弯曲应力系数获取以当前质点为圆心,上质点或下质点到当前质点的距离为半径的圆在邻质点的切线方向的力、及左质点或右质点到当前质点的距离为半径的圆在邻质点的切线方向的力。
在优选的实施例中,所述计算质点外力步骤包括:
计算重力:根据质点的密度乘以重力加速度计算质点重力;
计算全局阻力:当前质点重力乘以上一帧的速度向量。
在优选的实施例中,所述计算质点外力步骤还包括:
计算风力:风力为质点的法线方向施加的力,根据风力向量以及质点的方向夹角进行计算,当风向与质点法线方向的夹角为2π时,风力达到最大。
一种穿刺虚拟教学训练系统,其特征在于,包括:
标记:接收标记指令进行标记操作,
消毒:接收消毒指令进行消毒操作,
铺巾:接收铺巾指令进行铺巾操作,建立洞巾进行铺巾过程模型,实现动态过程,
局麻:接收局麻指令进行局麻操作,
穿刺:接收穿刺指令进行穿刺操作,
抽液:接收抽液指令进行抽液操作,
所述洞巾进行铺巾的建模过程包括如下步骤:
洞巾分解:将洞巾分解成n个质点,形成矩形阵列点;
质点连接:每个质点和与其相邻的上、下、左、右、左上、左下、右上、右下8个点用弹性件连接,
计算质点内力;
计算质点外力;
获取质点下一帧的位置:根据质点的质量及质点内力与外力的合力大小获得一个带方向的加速度:
对洞巾做碰撞检测:采用“椭球包围体”碰撞,椭球体绑定在待铺巾人物骨骼上,采用三个向量描述椭球体,一个是椭球体在空间的中点,另外一个是椭球体在x、y、z轴三个方向的半径长度,再一个是指定椭球体的方向的向量,椭球体的方程为:
将顶点的x、y、z值带入公式:
计算结果大于1还是小于1,若小于1或等于1则发生碰撞;
求解椭球体碰撞点:发生碰撞之后,将该洞巾顶点强行移动到离椭球体表面最近的点,通过解从椭球中点、过该洞巾顶点的射线和椭球体方程一起连解,获得该洞巾顶点离最近椭球体表面的一点,化简得到:
x=x0+t×(x1-x0)
y=y0+t×(y1-y0)
z=z0+t×(z1-z0),
其中x0、y0、z0为椭球中点,x1、y1、z1为洞巾顶点碰撞后于椭球体内的一点。
在优选的实施例中,所述洞巾进行铺巾的建模过程还包括:求解该洞巾质点在椭球体上一点的法线的支持力:当前质点的重力点乘该质点在椭球体法向量计算出当前质点所受力在负法线方向的分量,然后当前的力向量减去这个分量,再乘以该椭球体的摩擦系数,得到洞巾质点在椭球体上一点的法线的支持力;完成洞巾运算和其与椭球体碰撞的模拟。
在优选的实施例中,所述计算质点内力步骤包括:
计算弹性件拉力:获取当前质点在空间中的位置p0,及该质点周围各个质点的位置p1-p8,循环计算p1-p8和p0的距离,用p1-p8各自和p0的距离减去各自弹性件本身的长度l0,然后乘以虎克系数,获得该质点在这一帧受到的弹性件拉力;
所述计算质点外力步骤包括:
计算重力:根据质点的密度乘以重力加速度计算质点重力;
计算全局阻力:当前质点重力乘以上一帧的速度向量。
上述的穿刺虚拟教学训练系统中铺巾过程建模方法及该系统通过将洞巾分解成n个质点,形成矩形阵列点,将每个质点和与其相邻的的8个点用弹性件连接建立模型,通过计算质点内力、计算质点外力,获取质点下一帧的位置,同时用“椭球包围体”碰撞对洞巾做碰撞检测,求解椭球体碰撞点,实现洞巾的动态过程,使洞巾准确贴合到穿刺部位。
附图说明
图1为本发明一实施例的穿刺虚拟教学训练系统中铺巾过程建模方法的流程示意图;
图2为本发明一优选实施例的穿刺虚拟教学训练系统中铺巾过程建模方法的流程示意图。
具体实施方式
如图1所示,本发明一实施例的穿刺虚拟教学训练系统中铺巾过程建模方法,包括如下步骤:
步骤s101,洞巾分解:将洞巾分解成n个质点,形成矩形阵列点;
步骤s103,质点连接:每个质点和与其相邻的上、下、左、右、左上、左下、右上、右下8个点用弹性件连接;
步骤s105,计算质点内力;
步骤s107,计算质点外力;
步骤s109,获取质点下一帧的位置:根据质点的质量及质点内力与外力的合力大小获得一个带方向的加速度:
步骤s111,对洞巾做碰撞检测:采用“椭球包围体”碰撞,椭球体绑定在待铺巾人物骨骼上,采用三个向量描述椭球体,一个是椭球体在空间的中点,另外一个是椭球体在x、y、z轴三个方向的半径长度,再一个是指定椭球体的方向的向量,椭球体的方程为:
将顶点的x、y、z值带入计算式:
步骤s113,求解椭球体碰撞点:发生碰撞之后,将该洞巾顶点强行移动到离椭球体表面最近的点,通过解从椭球中点、过该洞巾顶点的射线和椭球体方程一起连解,获得该洞巾顶点离最近椭球体表面的一点,化简得到:
x=x0+t×(x1-x0)
y=y0+t×(y1-y0)
z=z0+t×(z1-z0),
其中x0、y0、z0为椭球中点,x1、y1、z1为洞巾碰撞椭球体后顶点于椭球体内的一点。
步骤s105,计算质点内力与步骤s107,计算质点外力不分先后顺序,两者计算出来即可。
本实施例中采用椭球体绑定在待铺巾人物骨骼上,人物骨骼的髋骨、盆骨、肩胛骨等都可以比较好的用椭球体表现出来。
如图2所示,进一步,为了更真实的模拟洞巾铺巾过程,本实施例的穿刺虚拟教学训练系统中铺巾过程建模方法还包括:
步骤s115,求解洞巾质点在椭球体上一点的法线的支持力:当前质点的重力点乘该质点在椭球体法向量计算出当前质点所受力在负法线方向的分量,然后当前的力向量减去这个分量,再乘以该椭球体的摩擦系数,得到洞巾质点在椭球体上一点的法线的支持力;完成洞巾运算和其与椭球体碰撞的模拟。
进一步,本实施例的洞巾与椭球体碰撞后,质点于椭球体上一点的法线向量:
进一步,本实施例的步骤s105,计算质点内力步骤包括:步骤305,计算弹性件拉力:获取当前质点在空间中的位置p0,及该质点周围各个质点的位置p1-p8,循环计算p1-p8和p0的距离,用p1-p8各自和p0的距离减去各自弹性件本身的长度l0,然后乘以虎克系数,获得该质点在这一帧受到的弹性件拉力。
进一步,优选的,为了更好的表现质点的受力情况,本实施例的步骤s105,计算质点内力步骤还包括:
步骤s306计算弹性件的弯曲应力:通过计算与当前质点相邻的上质点和下质点的夹角、以及左质点和右质点的夹角各自乘以弯曲应力系数获取以当前质点为圆心,上质点或下质点到当前质点的距离为半径的圆在邻质点的切线方向的力、及左质点或右质点到当前质点的距离为半径的圆在邻质点的切线方向的力。
与当前质点相邻的上质点和下质点的夹角为:与当前质点相邻的上质点与当前质点的连线、下质点与当前质点的连线所成的夹角。
左质点和右质点的夹角为:与当前质点相邻的左质点与当前质点的连线、与当前相邻的右质点与当前质点的连线所成的夹角。
步骤s105中步骤305计算弹性件拉力、步骤s306计算弹性件的弯曲应力的计算过程不分先后,计算出来即可。
进一步,本实施例的步骤s107,计算质点外力步骤包括:
步骤s307,计算重力:根据质点的密度乘以重力加速度计算质点重力;
步骤s309,计算全局阻力:当前质点重力乘以上一帧的速度向量。
进一步,优选的,更好的表现洞巾在风刮起来的时候能随风飘摆,本实施例的计算质点外力步骤还包括:
步骤s311,计算风力:风力为质点的法线方向施加的力,根据风力向量以及质点的方向夹角进行计算,当风向与质点法线方向的夹角为2π时,风力达到最大。
步骤s107,计算质点外力步骤中步骤s307计算重力、步骤s309计算全局阻力、步骤s311计算过程不分先后,计算完成即可。
本实施例的弹性件优选为弹簧。
本发明一实施例的穿刺虚拟教学训练系统,包括如下步骤:
标记:接收标记指令进行标记操作,
消毒:接收消毒指令进行消毒操作,
铺巾:接收铺巾指令进行铺巾操作,建立洞巾进行铺巾过程模型,
局麻:接收局麻指令进行局麻操作,
穿刺:接收穿刺指令进行穿刺操作,
抽液:接收抽液指令进行抽液操作,
所述洞巾的铺巾过程的建模方法为上述方法步骤,包括如下步骤:
步骤s101,洞巾分解:将洞巾分解成n个质点,形成矩形阵列点;
步骤s103,质点连接:每个质点和与其相邻的上、下、左、右、左上、左下、右上、右下8个点用弹性件连接;
步骤s105,计算质点内力;
步骤s107,计算质点外力;
步骤s109,获取质点下一帧的位置:根据质点的质量及质点内力与外力的合力大小获得一个带方向的加速度:
步骤s111,对洞巾做碰撞检测:采用“椭球包围体”碰撞,椭球体绑定在待铺巾人物骨骼上,采用三个向量描述椭球体,一个是椭球体在空间的中点,另外一个是椭球体在x、y、z轴三个方向的半径长度,再一个是指定椭球体的方向的向量,椭球体的方程为:
步骤s113,求解椭球体碰撞点:发生碰撞之后,将该洞巾顶点强行移动到离椭球体表面最近的点,通过解从椭球中点、过该洞巾顶点的射线和椭球体方程一起连解,获得该洞巾顶点离最近椭球体表面的一点,化简得到:
x=x0+t×(x1-x0)
y=y0+t×(y1-y0)
z=z0+t×(z1-z0),
其中x0、y0、z0为椭球中点,x1、y1、z1为洞巾碰撞椭球体后顶点于椭球体内的一点。
建模针对传送进来的顶点进行编程建模,将布料的顶点,按照从左到右,从上到下的顺序传递进来,然后按照布料的宽度来进行程序上的物理建模。当模型建立好之后,需要每一帧对模型中的每一个质点进行物理运算。这里分为两步来进行计算,首先是内力,然后是外力。
每个质点都受到由弹簧建立成的模型所带来的弹簧的拉力,以及弹簧本身的弯取应力。那么首先来算弹簧的拉力,首先获得当前质点在空间中的位置p0,然后获得和他用弹簧相连的周围各个质点的位置p1-p8,然后循环计算p1-p8和p0的距离,并用这个距离减去弹簧本身的长度,然后乘以弹簧的虎克系数,就是这个点在这一帧受到的弹簧拉力。
另外来算弹簧的弯取应力,通过计算与当前质点相邻的上质点和下质点的夹角、以及左质点和右质点的夹角各自乘以弯曲应力系数获取以当前质点为圆心,上质点或下质点到当前质点的距离为半径的圆在邻质点的切线方向的力、及左质点或右质点到当前质点的距离为半径的圆在邻质点的切线方向的力。
计算布料所受的外力,首先是重力,重力是根据质点的密度(质量)乘以重力加速度的一个值。然后是一个全局的阻力,否则弹簧会不停的弹来弹去没有个完,这里的被乘数是上一帧的速度向量,不是当前的力向量。接下来就是风力,对风力的处理可以理解为在质点的法线方向施加的一个力,力的大小跟风力向量以及质点的方向的夹角有关,当夹角为2π的时候,风力达到最大。
质点的内力和外力都计算完毕,那么接下来通过这个力来获得下一帧的质点的位置。首先根据质点的质量和合力的大小来获得一个带方向的加速度,这一步只需要将算出来的力乘以1/质点的质量,得到加速度之后,就可以根据vt=v0×at来计算这一帧的速度向量,随后将当前质点在空间中的位置加上vt×t就是下一帧的质点的位置。
对于布的模拟完成,下一步做布的碰撞。
对布做碰撞检测,“椭球包围体”碰撞,这种椭球体可以绑定在人物骨骼上,髋骨,盆骨,肩胛骨等都可以比较好的用椭球体体现出来。
椭球体用三个向量来进行描叙,一个是椭球体在空间中的中点,另外一个向量是储存椭球体在x,y,z轴三个方向的半径的长度,另外一个向量则是指定椭球体的方向。
椭球体的方程是:
那么相应的碰撞检测就是将某个顶点的x、y、z三个值带入方程,看结果是大于1还是小于1,如果小于1则发生了碰撞。
发生碰撞之后,首先需要把这个顶点强行移动到离椭球体表面最近的点,这一步通过解从椭球体中点,过洞巾那个顶点的射线和椭球体方程一起连解,可以获得那个点,化简后方程如下:
设x0、y0、z0为椭球中点,x1、y1、z1为洞巾碰撞椭球体后顶点于椭球体内的一点。
获得该洞巾顶点离最近椭球体表面的一点,化简得到:
x=x0+t×(x1-x0)
y=y0+t×(y1-y0)
z=z0+t×(z1-z0),
由于整个布料的运算是基于物理模型的,为了更好的进行模拟,表现真实的铺巾过程,不能直接把它弄到椭球体表面就了事了,应该给它一个在椭球体上这一点的法线方向的支持力。
椭球体的法线的计算在化简之后为
当前质点的重力点乘该质点在椭球体法向量计算出当前质点所受力在负法线方向的分量,然后当前的力向量减去这个分量,再乘以该椭球体的摩擦系数,得到洞巾质点在椭球体上一点的法线的支持力;完成洞巾运算和其与椭球体碰撞的模拟。
本实施例的综合穿刺虚拟教学训练系统精准的模拟穿刺过程中的突破感,为操作者提供一个极具真实感和沉浸感的手术训练环境。本操作系统是国内第一款支持真正的实时交互性力反馈的医学穿刺虚拟系统。也是世界上目前唯一一款集合腰椎穿刺、腹腔穿刺、胸腔穿刺和骨髓穿刺为一体的虚拟穿刺虚拟教学训练系统,并且可根据用户需求在本机上升级其他功能,如心包穿刺和环甲膜穿刺等功能。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。