基于OpenGL的3D医学引擎研究

2011-03-20 07:02黄建新曾向阳刘刚瞿友安罗益民蒋正锋钱锋余佩武
电子产品可靠性与环境试验 2011年4期
关键词:力反馈图形图像碰撞检测

黄建新,曾向阳,刘刚,瞿友安,罗益民,蒋正锋,钱锋,余佩武

(1.工业和信息化部电子第五研究所,广东 广州 510610;2.第三军医大学西南医院,重庆 400038)

1 引言

3D引擎是虚拟现实系统的核心,常见的开源3D 引 擎 有:Unreal、Quake、Lithtech、OGRE 和Irrlicht等;商业3D引擎有北京中视典VRP-BUILDER物理引擎,北京动态时空DynaVR-Net引擎,北京涂鸦Origo Engine引擎,国外商业3D引擎如易用EON等。目前3D引擎大多针对游戏开发,模拟的对象主要是刚体;医学3D引擎主要处理人体组织等软体,和一般的3D引擎相比,除了一般3D引擎需要的动画、光影、粒子特效、物理系统、碰撞检测、图形图像渲染、文件管理以及网络特性等以外,还需要考虑软体的碰撞检测、形变等,同时需要模拟各种复杂的医学动作和效果,如流血、烟雾、剪切、缝合和打结等。

2 基于OpenGL的3D医学引擎设计

2.1 OpenGL概述

OpenGL是开放式图形语言 (GL:Graphic Language) 的缩写。它是由 Silicon Graphics(SGI)公司开发的,有Windows NT和Windows 95版,其API在工作站上具有可移植性。它是图形标准为图形库提供的一条简捷的途径。OpenGL应用程序接口的版权属于SGI公司,其标准由OpenGL结构监察组指定。该监察组的成员有IBM、Intel、Microsoft、DEC、SGI、Intergraph和Evans&Sutherland。

OpenGL是对网络透明的3D图形处理接口,它通过一个简单、易用的模块化接口而生成高质量的3D图形图像,在硬件、操作系统等方面是独立的,支持C、C++、Pascal和Lisp等多种语言。OpenGL作为一个独立平台,具有立即和显示表模式的鲜明特点。显示表存放着特定的序列,可以被反复使用,在进行对象描述时,可以直接从表上获取相关信息,从而产生很好的效果,如果对象需要进行频繁处理,显示表上的信息就不得不随之更新,这将导致图形显示速度的优势丧失殆尽。OpenGL为图形显示提供了一个宽广的范围,从渲染一个简单的几何点、线、多边形,到利用Phong光线、Gouraud阴影、纹理映射贴图以及反锯齿的点、线,面对一个3D人体组织器官进行最复杂的3D变换、剪贴、采集和描绘。由于采用了模块和累加缓冲技术,OpenGL可以高效地实现几何实体、阴影、全景反锯齿和动态模糊等效果。

OpenGL图形接口标准采用Glut库。

2.2 基于OpenGL的3D医学引擎设计

基于上述分析,作为一个3D引擎,应具有建模、动画、光影、粒子特效、物理系统、碰撞检测、图形图像渲染、文件管理以及网络特性等功能,其核心在图形图像绘制、渲染、显示、碰撞检测以及各种动作模拟等。

而OpenGL的图形图像绘制、渲染和显示功能很强,我们在构建3D引擎时可以充分发挥这些优点,利用OpenGL来构建3D引擎的底层图形图像绘制、渲染和显示系统。

作为3D医学引擎,它需要处理比较复杂的人体组织器官等软体,相对于一般的3D引擎而言,需要更强的模型处理能力,需要模型软体的弹性形变等。为了解决这个问题,我们将模型分为几何模型和物理模型,几何模型主要用来构建人体组织器官的形状,物理模型主要用来模拟人体组织的物理特性,如应力、加速度和弹性模量等。基于此,对于几何模型,我们可以通过点、线、面(三角面、四角面)来构建,几何模型是点、线、面集合,在所有的面中三角面是最简单,也是最容易处理的。图1是几何模型三角网格图。

图1 几何模型三角网格图

对于物理模型,主要有Mass-Spring,即质点弹簧算法,FEM(Finite Element Method),即有限元法等。FEM法使用非常普遍,它的思想来源于工程力学,其优点在于,它提供了一种高精度的软组织建模的方案;其缺点在于,它在形变过程中需要进行大量的计算,因此很难达到形变的实时性要求。Mass-Spring则是最简单,也是最容易处理的。

Mass-Spring,即质点弹簧算法,它将软组织建模为很多的、带有弹簧的质点网络结构,压缩或者拉伸时通过弹簧的弹性系数来实现形变。其模型如图2所示:

图2 质点弹簧模型

质点弹簧模型将变形人体组织器官简化成由弹簧连接的弹性质点系统,利用质点弹簧的运动规律来描述变形人体组织器官的弹性变形过程。在质点弹簧模型中,质点的运动规律由其连接的弹簧来约束,因质点运动而产生的弹簧变形力通过虎克定理计算,可以对质点弹簧模型进行简化,这时只考虑因弹簧的拉压变形而产生的弹性变形力,而不考虑变形系统的弯曲和剪切变形。对于质点所受的力,可以采用公式(1)来计算:

式(1) 中:m——质点i的质量;

a(i)——质点i的加速度;

Fext(i)——该质点所收的外力;

Fint(i)——该质点所收的内力。

对于图形图像渲染,我们可以利用OpenGL的图形图像渲染机制,模型是是点、线、面的集合,简单的绘制不能实现对象的真实感绘制的要求,在计算过程中,需要将组织形变后的模型变化到适合的图形绘制的模型上来,这就是图形图像渲染。基于OPENGL渲染模式的基本流程为:1)使用几何图元建立模型,得到人体组织器官的数学描述;2)在三维空间排列人体组织器官,选择观察场景有利的位置;3)计算所有人体组织器官的颜色,颜色可是由应用程序指定的、根据光照条件确定的、将问题粘贴到人体组织器官上得到的,也可综合上述多种操作的结果;4)光栅化,将人体组织器官的数学描述和相关的颜色信息转换为屏幕像素。图形图像渲染流程如图3所示。

图3 图形图像渲染流程图

碰撞检测算法目前主要有AABB包围盒(Axis Aligned Bounding Box)、OBB包围盒 (Oriented Bounding Box) 等算法。

AABB包围盒就是采用一个描述用的立方体或者球形体包裹住3D人体组织器官对象的整体(或者是主要部分),然后根据包围盒的距离、位置等信息来计算是否发生碰撞。坐标轴平行(“Axis-aligned”) 不仅指盒体与世界坐标轴平行,同时也指盒体的每个面都和一条坐标轴垂直,这样能减少转换盒体时的操作次数。如图4所示。

图4 AABB包围盒

AABB包围盒简单性好,紧密性较差,当物体旋转之后需对AABB进行同样的旋转并更新,当物体变形之后只需对变形了的基本几何元素对应的包围盒重新计算,然后可以自下向上地由子结点的AABB合成父结点的AABB,最后进行包围盒树的更新,AABB包围盒更适合人体软组织。

OBB包围盒比AABB包围盒更精确、更健壮,创建OBB树是算法里最难的一个部分,一个OBB树的创建整个过程如图5所示。

图5 OBB树创建过程

OBB碰撞检测方法的紧密性较好,大大减少参与相交测试的包围盒的数目,因此总体性能要优于AABB,实时性程度较高。当物体发生旋转运动后,只需对OBB进行同样的旋转即可。对象变形后OBB树的更新需要重新计算,而重新计算每个结点的OBB的代价又太大,所以OBB不适用于包含人体软组织对象在内的复杂环境中,而适用于刚体。

3D医学引擎相对一般3D引擎还有一个重要区别,即对于医学手术过程的各种动作和效果,如切割、缝合、打结、抓取、烟雾和流血等。

切割通过删除器械与几何模型碰撞点附近的点、线、面来实现,切割应力计算包括各节点运行的位移、速度和加速度等,切割形变保持通过畸变因子和刚度矩阵来实现。

缝合通过欧拉算法来进行应力和力矩计算,应力计算包括重力、节点连接之间的stretch/compress力、节点连接之间的bend和twist力、dissipative friction力以及contact力。力矩计算主要为stretch和friction力,碰撞检测采用AABB包围盒(Axis Aligned Bounding Box) 和 包 围 盒 (Oriented Bounding Box) 相结合的算法。

打结的绳子使用刚性针模型、FTL(Follow the Leader)变形、AABB碰撞检测算法处理绳子的自碰撞和绳子与其它刚体的碰撞,通过设置临时接触约束来实现等效摩擦力,通过碰撞簇的识别来检测结的形成并在FTL算法中将结作为一个整体处理,确保结形成后可以在空间自由运动,反馈力根据绳子的张力和约束条件计算。打结方式有单结(half hitch)、方结(square knot)、三重结或多重结(extra half hitch on reef knot)。

抓取是通过器械开口上的点绑定器官上的点、线、面来实现的。

烟雾是根据流体力学原理或粒子效果来实现的。根据流体力学原理,假设流体的黏度为零,此时流体即为非粘性流体,烟雾可视为非粘性流体。对于三维流体,根据质量守恒定律,在任意封闭曲面(例如球体)中,由曲面进入封闭曲面内的质量速率,需和由曲面离开封闭曲面内的质量速率相等,主要通过建立欧拉方程来实现;烟雾通过粒子来实现,烟雾的稀薄主要通过控制粒子的数量来实现,烟雾的形态通过粒子的物理属性如重力等来控制。

流血通过模拟流体运动或粒子效果来实现,对于三维流体,根据质量守恒定律,在任意封闭曲面(例如球体)中,由曲面进入封闭曲面内的质量速率,需和由曲面离开封闭曲面内的质量速率相等,主要通过建立欧拉方程来实现;流血通过粒子来实现,流血的粘稠主要通过控制粒子的数量来实现,流血的形态通过粒子的物理属性如重力等来控制。

力反馈也是3D医学引擎的一个重要特征。力反馈实现的基本过程是虚拟现实软件系统输出的力反馈指令经接口电路输出,经过D/A转换器将反馈力数字量转换为模拟量,并控制受控恒流源驱动伺服电机执行力反馈,伺服电机输出反馈力经钢丝传动,由操作杆向操作者输出反馈力。在医学虚拟现实的过程中,操作者需要实时感知虚拟器械挤压软组织模型的面弹力等反馈信息。实际上的力反馈是体现在操作者感知人体模型对于施加的作用力的反抗作用。力反馈采用的其中一种模型是基于质点弹簧系统的力反馈模型。其计算公式如式(2)所示:

式(2)中:M——该面的质量;

D——阻尼系数;

K——弹簧的弹性系数;

x——某时刻弹簧缩放的位移;

F(t)——某时刻的总反馈力。

3 基于OpenGL的3D医学引擎实现

根据上述分析,我们可以得出OpenGL的3D医学引擎实现图,如图6所示。

图6 基于OpenGL的3D医学引擎实现图

4 结束语

本文分析了主流3D引擎模拟的对象主要是刚体,但是医学3D引擎主要处理人体组织等软体,和一般的3D引擎相比,医学3D引擎需要处理软体的碰撞检测、形变等,模拟各种复杂的医学动作和效果,如流血、烟雾、剪切、缝合和打结等,本文对OpenGL进行了分析,提出了一种基于OpenGL的3D医学引擎,并对该引擎的关键技术进行了分析,得出了基于OpenGL的3D医学引擎实现原理图。

[1] 刘刚,黄建新,曾向阳,等.腹腔镜胃癌根治术三维虚拟训练系统关键技术研究[C]//现代临床技能中心建设与发展国际论坛论文集.汕头:汕头大学,2010.

[2] NCCN.胃癌临床实践指南(中国版) [M/OL].(第一版).2009.http://www.nccn.org.

[3][美]ZUCKER K A.腹腔镜外科学[M](第二版) .胡三元,主译.济南:山东科学技术出版社,2004.

[4] 余佩武,王自强,钱锋,等.腹腔镜辅助下胃癌根治术71例临床报告[J].中华胃肠外科杂志,2005;8(5):402-403.

[5] 余佩武.腹腔镜胃癌根治术的现状与前景[J].中国普外基础与临床,2007,5(14):506-509.

猜你喜欢
力反馈图形图像碰撞检测
Photoshop图形图像处理线上线下混合式教学模式探究
全新预测碰撞检测系统
基于BIM的铁路信号室外设备布置与碰撞检测方法
基于模糊神经网络的电液力反馈伺服控制技术的研究
一种三维力反馈训练仿真控制系统设计
基于磁流变液的线控转向力反馈装置探究
浅析计算机图形图像处理技术偏技术
网页设计与图形图像处理技术探析
面向工艺设计的图形图像处理系统研究与实现
空间遥操作预测仿真快速图形碰撞检测算法