黄铭明,苏其瑜,曾 维,汤 炜,田卫东,张 劲
1.四川大学 医学信息工程系,成都 610065
2.四川大学 华西口腔医学院,成都 610041
下颌骨骨折是较为常见的骨折,造成下颌骨骨折的首要原因是交通事故[1-3]。一般手术会采用钛板坚固内固定术来治疗。钛板坚固内固定选择尺寸合适的小钛板,弯曲使其和下颌骨骨面紧贴,能使骨折复位后达到稳定的作用[4]。但是术后可能出现错牙合畸形等后遗症,这是因为钛板坚固内固定术对医生的操作技术有较高的要求。然而在教学训练中,书本或视频教学直观性差,实物模型训练成本较高,而临床观察操作不能短时间内重复练习。于是,通过虚拟现实技术模拟下颌骨单线骨折手术场景,用于医学生以及实习医生等的训练,让其模拟手术过程,达到低成本可反复地训练提高手术技能的目的。
20世纪80年代,Jaron Lanier提出了虚拟现实技术[5]这一概念。到了20世纪80年代末,J.Rosen和Dr.S.Delp就首次把虚拟现实与外科手术结合[6]。而在1996年的第四届医学虚拟现实会议上[7]第一次提出虚拟手术这一概念。随后几年,世界各国家都陆续开始对虚拟手术仿真系统的研究,日本和欧美对相关技术的研究起步较早,相关技术也处于领先状态[8-12]。
1995年美国的Merril构建了一个人体躯干模型,可以通过器官组织的物理特性进行弯曲拉伸的模拟[13];1996年Levy开发的子宫检查仿真器引入了触觉设备,首次实现了加入力反馈设备的虚拟手术,对后来的虚拟手术力反馈系统奠定了基础[14]。佐治亚理工学院开发了用于肩关节镜手术训练和术前规划的虚拟手术系统[15]。宾夕法尼亚大学针对鼻腔镜手术,使用NeuroTouch仿真软件开发了一套训练系统[16]。除此之外,虚拟现实技术领域的公司针对虚拟手术仿真系统也开发出了相应的医疗器械仿真设备和和人体可视化软件等。
早期由于技术限制和较高的研究成本,国内虚拟手术仿真的研究起步较晚,且目前国内的研究工作主要针对医学图像的三维重建和可视化,碰撞检测,人体软组织变形计算等方面[17-20]。2001年,鼻内窥镜手术仿真系统在北京301医院设计完成,这是我国的第一套包含触觉反馈的虚拟手术仿真系统[21];近几年,中国医科大学开发了一套基于Web的一体化小儿心脏病虚拟手术训练系统,这套系统可以通过可视化技术实现手术的初步设计和指导[22];云南省第一人民医院肝胆外科对虚拟手术仿真系统进行了系统的研究和应用,对相应的肝脏手术的复杂情况进行精准的评估模拟,为精准肝切除复杂性肝脏肿瘤提供了手术数据和依据[23]。
虚拟手术要求使用者能够体会到处于手术室般身临其境的感受,并且能够实时与虚拟手术场景的模型进行交互。因此不仅需要搭建逼真的三维手术室场景,还需要场景中的模型之间的交互行为与现实中无异,能够实现对一些物理现象的模拟。Unity3D能很好地实现上述要求。Unity3D拥有强大的物理引擎模拟物体运动、碰撞与形变等;通过Unity3D的光影系统可以很容易地实现现实生活中的各种光影效果,光影系统的调节参数包括光照面积、阴影强度、色温等[24]。在近几年,越来越多的非游戏领域的虚拟场景构建都会使用Unity3d来进行开发,并且取得了很好的效果。
广泛用于开发类似虚拟手术的虚拟现实场景的硬件平台目前主要有PC端和移动端。基于PC端的VR设备有HTC Vive、Oculus Rift、PS VR、蚁视头盔等。移动端的有Microsoft HoloLens、三星Gear VR、Joycher、Cardboard等[25]。
其中基于PC端的HTC Vive是很适合开发虚拟手术的VR设备。而且HTC Vive在同类型设备中,其特有的LightHouse定位技术[26],转变了其他设备采用的被追踪器件发射定位信号,追踪器件接受信号的方式,转而采用基站发射信号,被追踪设备接受信号的方式,极大地提高了定位的准确性和实时性,并且可使使用者在一定的空间内自由活动,很好地解决了精确定位追踪的问题,不会出现其他产品因为定位上的延迟而有的眩晕感。
因此,本文使用Unity3D作为开发引擎,结合SteamVR和VRTK等开源库和3ds Max建模,同时使用HTC Vive头戴设备,建立下颌骨单线骨折虚拟手术训练系统。
本文的下颌骨单线骨折虚拟手术系统设计要求能模拟下颌骨单线骨折手术的场景及过程,同时还要考虑到该系统的受众主要是医学生、新医生、医护人员等,其理论基础与实践经验不尽相同,并且在以后的研究中,该系统还要应用于不同的手术模拟中,所以系统的设计旨在为使用者提供一个虚拟手术仿真平台,通过对基础手术场景的搭建,以及对一些常见手术器械的建模,需要实现对手术场景的模拟和对手术室常用交互的设计。同时为了针对不同的手术场景,只需要加入具体的手术器械模型和病人模型,即可实现对于多种手术场景的仿真。
通过对于常见手术室内场景的了解,手术室必须包括的部分:手术室病床、常用手术器械、通风系统以及灯光系统等。针对这些需求,系统的环境设计分为四个部分:手术室本身的设计、颅骨模型的设计、灯光系统的设计、常用手术器械的设计。而针对手术室场景下的交互主要是对物体的捡取释放以及对手术对象的简单操作,为了扩展游戏空间,使得使用者在较小的游戏空间内就可以对整个手术室内的物品进行操作,在系统中还加入了瞬间移动功能。此外,为了在虚拟仿真场景尽可能地真实,场景中的必要物品都加入了重力系统,为了达到捡拾物品的目的,场景中的必要物品也添加了碰撞系统。因此,虚拟手术仿真系统的结构包括虚拟手术室环境与虚拟环境和现实的交互系统两个部分,其结构如图1所示。
图1 虚拟手术系统结构框图
2.2.1 场景模块设计
虚拟手术场景设计分为建模阶段和手术室设计。
建模阶段使用3ds Max工具对手术室和手术器械进行建模,建模完成后通过3ds Max导出文件,将导出的文件复制到工程目录后,拖入场景中。
手术室场景设计要考虑到手术室自身需要的模型有墙壁、天花板、地板、门、玻璃、灯泡和通风窗,手术室内需要建模的有手术床、手术器械、无影灯和摆放手术器械的桌子等。
2.2.2 交互模块设计
虚拟手术交互系统需要对手术室内的部分器械进行特殊处理,以便它们和手柄之间以及相互之间的交互。这些器械大致分为3类:
(1)不需要特殊处理,无交互需求的器件,这些器件包括天花板,无影灯,灯泡,门等。
(2)有简单交互需求的器件,这些器件包括地板、墙壁、手术床、手术器材桌等,这些器件本身是不需要移动的,但是它们必须具有碰撞功能,所以需要给这些器件添加刚体和碰撞模型,使得它们在与手术器械等发生碰撞时,对手术器械产生力的作用。如手术器械掉至地面时停留在地面上,而不是穿过地面。
(3)有交互需求的器件,这些器件是各种手术器械,由于这些手术器械是需要能够自由活动的,所以它们的运动和碰撞要尽量真实,识别到手柄的捡拾操作时,必须跟随手柄运动。所以这些器械要加入刚体和精细的碰撞模型,还要加入重力系统。
3D模型的开发是整个系统设计的基础,也是主要工作之一。由于三维场景中的大部分物体都是静物模型,对于这些模型,建模时需使它们的网格尽量简单,这样能加快系统的加载和渲染。系统需要的虚拟手术模型分为三部分,第一部分是手术室模型,用于搭建虚拟手术室空间,包括分为墙、天花板、门和通风窗;第二部分是手术室的器材模型,比如手术床、无影灯、手术器械桌、手术器械和灯等,第三部分是手术对应的人体模型,本文是人体颅骨模型。其分类如图2所示。
图2 虚拟手术模型分类图
3.1.1 手术室建模
整个手术室模型如果当做一个整体模型来建模,建模过程会过于复杂,模型面片也会过多,影响载入速度和处理效率。所以本文采用各个部分分别建模的方式,通过对手术室内部布局以及不同部分功能的分析,手术室模型分为墙、天花板、门和通风窗。
(1)墙、天花板:长宽各为8 m的正方形构成。
(2)通风窗:通风窗的模型是基于一个长方体模型内部采用布尔操作去掉后,向内部加入13个相同的长方形制作而成的。
(3)门:门的模型分为四部分建立,门框是由三个长方体组成,门由一块长方体做布尔操作去掉中间部分后做成,门上的玻璃是一块长方体,门把手是通过球体和圆柱体组合而成。
3.1.2 手术器材建模
手术室内主要需要建模的是手术床、无影灯、手术器械桌、手术器械、灯。
手术床模型的建立比较复杂,采用分块设计的方法分别设计支持结构,表面和其他小部件,最后将所有模型成组。由于手术床上有许多地方都是不规则的,所以对于手术床的建模采用最多的是FFD工具。本系统使用的手术床的三维模型如图3所示。
图3 手术床三维模型
无影灯模型、手术器械桌、灯的建模复杂程度不高,由于没有特殊形状图像,按照上述方法对各部分建模最后成组即可。
手术器械的建模由于是针对特定的下颌骨单线骨折手术,所以建立的手术器械模型都是下颌骨修复手术中需要的手术器械。为了使得手术仿真的效果更好,这些器件的模型都是根据实际物体精细制作的。下颌骨骨折手术模型包括:螺钉、钻头、螺丝刀、钛合金板。本系统使用的手术器械的三维模型如图4所示。
图4 手术器械三维模型
3.1.3 颅骨三维模型重建
颅骨CT数据通过四川大学华西口腔医院对下颌骨断裂病人的头部CT扫描获得。原始的CT数据数据格式为DICOM格式,通过Mimics Medical软件显示颅骨CT的三视图,并对CT数据进行三维重建,导出的模型再经过3ds Max的处理后以FBX格式的文件导出。颅骨CT图像的三视图以及三维重建后的颅骨模型如图5所示。
图5 颅骨CT的三视图和重建之后三维模型
但是很多情况,三维重建的人体模型网格可能会过于复杂,这样在模拟手术过程中可能会产生场景加载过慢,交互反馈延迟等现象,影响虚拟手术的真实感和沉浸感。所以在场景组件很多的情况下,需要对人体模型网格进行优化,以加强虚拟手术系统交互的实时性。网格优化流程如图6所示,将三角面网格转换为四面体网格优化。三角面网格优化可以使用3Ds Max来进行削减、平滑处理,减少模型的顶点数和面片数。但是当模型需要用于刚体的切割、软组织形变等情况的仿真时,对模型进行网格划分,形成有限元子单元,再进行网格优化就很必要了。
图6 网格优化流程图
为了提高虚拟手术的真实感和使用者的沉浸感,虚拟场景中的光照设计是非常重要的环节。Unity3D的内置的光源有3种:点光源、投射光、方向光。每种光源的属性包括:方向、投射、颜色、衰减、范围、类型等。
点光源:点光源是从一个点发出的光,是最普通的一种光照类型,常用来模拟灯泡发出的光,它所耗费的图形处理资源是最少的。
投射光:投射光只能在一个方向上投影,照亮区域是一个圆锥范围。这种光源适合用作对手电筒,车灯等的模拟,这种光源耗费的显卡资源是最多的。
方向光:方向光是平行光源,相当于放置在无限远处的光源。这种光源通常用来模拟阳光和月光等自然光。
针对手术室内的灯光系统,需要至少两种光源,一种是点光源,一种是投射光。点光源用来模拟手术室内的日光灯;投射光用来模拟无影灯,Unity3D的投射光源可以选择是否显示阴影,选择无阴影可以模拟无影灯效果。
灯光系统的实现:
(1)向场景中导入灯的模型,将灯的模型放置在合适的位置。
(2)给灯的模型添加Light glow材质,并调整材质,使其形似发光体。
(3)点击Game Object菜单,点击Light选择Point Light,将场景中新生产的点光源放置到灯模型下面。
(4)选中点光源,在属性面板中调节其属性,Color调整为白色,Intensity和Bounce Intensity调整为0.4,Shadow Type调整为Soft Shadows。其他选项默认。
(5)按上述步骤实现其他三个灯光。
(6)无影灯的实现前面的步骤与上述步骤相同,只是添加光源的时候添加的是Spot Light,Shadows Type为No Shadows。
交互系统是虚拟手术系统核心功能之一,交互系统为用户提供了一个和虚拟世界互动的途径。
3.3.1 碰撞检测实现
基于HTC Vive高精度的定位功能,通过对手柄空间位置的获取,可以做到对微小物体的操作。但是这些操作都需要基于碰撞检测,检测各个模型之间是否发生了碰撞。目前层次包围盒法是应用最为广泛的碰撞检测算法,它检测精度一般,通用性比较强,能适合于不太复杂物体的各种碰撞的场合,比较常用的包围盒类型有包围球、轴向包围盒(AABB)、方向包围盒(OBB)等。比如地板,手术床等就是使用基于轴向包围盒(AABB)的碰撞检测。但本文的颅骨和手术器械模型比较精细,采用的是基于网格的碰撞检测。
3.3.2 重力系统实现
加入重力系统为了使虚拟场景尽可能真实,当对虚拟手术场景的物体进行触碰、拾取、传递等操作时,重力作用是很有必要的。所以进行交互的模型,它们的运动要尽量真实,给这些模型添加重力,使得物体可以按照其重力做自由落体运动。
3.3.3 器械的拾取和释放实现
对于物体的捡取和释放操作时交互的基本功能,为了对虚拟世界中的物体进行捡取,首先要把现实世界的操作还原到虚拟世界中去,在虚拟空间内两个物体之间做碰撞检测,检测到碰撞后再通过判断是否拾取,如果处于拾取状态,则为目标添加铰链关节,接着将关节连接到手柄碰撞体上,则实现了对于物体的拾取,当判断到释放状态时,结束坐标跟随变化即可。本文的下颌骨骨折虚拟手术系统中,拾取手术用螺丝刀的效果如图7所示,使用者通过操作手柄能够很好地进行交互,拾取螺丝刀和其他物体。
图7 拾取物体效果图
3.3.4 颅骨模型交互系统实现
颅骨和手柄的交互有其特殊性,手术器械和手柄的交互主要是用手柄对手术器械进行拿起、移动、旋转、放下等,所以手术器械处于完全自由的状态,而且要受到重力的作用。而颅骨模型上半部分应当处于静止状态,不能移动也不受重力等的作用,而下颌骨部分处于断裂状态,需要在场景中对下颌骨进行对位,这样整个颅骨模型应当分为三部分:下颌骨左半部分、下颌骨右半部分、颅骨其他部分。考虑到这个系统后续的设计主要面向手术流程的仿真,所以这里简化设计,将颅骨下颌的其中一块设计为可变的,这里选择右下颌骨,其他部分均设计为不可移动的。右下颌骨完全相同的两部分存在于三维场景中,其中一块处于断裂状态,另一块处于闭合状态,初始状态将闭合的一块设计为不渲染状态,只渲染断裂的部分。当手柄碰触到断裂的下颌骨时,将断裂下颌骨设为不渲染,而渲染出闭合状态的下颌骨,则实现了对断裂下颌骨进行对位的操作。
在实际使用虚拟现实技术进行手术训练时,往往会受场地限制,实际训练场地大小不一定会按照手术室大小设计。于是就需要手术室瞬间移动系统来克服训练场地大小问题。
瞬间移动系统的实质是对头盔和手柄空间位置的改变,由于虚拟手术场景中所有的移动需求都在一个平面上,所以只需要设置XZ平面的自由移动。瞬移系统的基本原理是通过手柄发出激光线,激光线与设置好的地面发生交叉时可以获得一个交叉点,在场景中更新这个坐标给头盔即可实现移动。
瞬间移动系统的实现借助VRTK工具包来实现,实现过程如下:
(1)添加地面,地面的实质是一个长方体,它的作用是求出地板和激光的交叉点坐标,所以地面和场景中的地板应处于同一个水平面上。而且地面长方体需要添加碰撞盒子。
(2)给控制器添加VRTK_Controller Events脚本,这个脚本的作用是当手柄的任意按键被按下时,脚本发出一个可以被全局监听的事件,其他的脚本通过监听相应的事件就可以执行相应的操作。
(3)给控制器添加激光功能,这个功能的作用是发出激光。由于需要实现和地面长方体的碰撞,激光显然必须是一个实体,所以激光的本质是一个长方体,只是它的长度值很大,而高和宽非常小,视觉效果上形同激光线,为了它能够和地面长方体交互,也需要给它添加碰撞盒子。
需要注意的是,用于碰撞检测的地面长方体和原场景中的手术室地板上表面要重合,这样才能准确地移动到相应的位置。
系统测试环境:
处理器:Inter®Core™ i5-6500 CPU@3.20 GHz
显卡:Nvidia GeForce GTX 1060 6 GB
硬盘:希捷 ST1000DM010-2EP102
显示器:冠捷 AOC2779 2779
VR设备:HTC Vive
下颌骨骨折虚拟手术系统的整体测试效果如图8所示,系统展现的虚拟手术场景基本还原了下颌骨骨折手术室的场景。
图8 测试效果图
对系统仿真度和易用性的测试找来5名医学院学生和5名其他学院学生作为志愿者,其中男女各5人。志愿者分为两组,医学院学生编号D1~D5,其他学院学生编号O1~O5。
(1)仿真度测试
实验内容:10位同学分别带上HTC Vive眼镜,眼镜里显示手术室场景。通过环顾场景,对场景的沉浸感和仿真程度做出打分,范围0~10,0分为最低分,10分为满分。
仿真度测试结果如图9所示。通过10位同学对仿真程度的测试,对仿真度的平均打分为7.7分。分析发现医学生的打分均值较低,主要反映是手术室场景较为简单,没有真实手术室场景复杂,而其他学生的打分均值为8.0分,主要的意见是颗粒感较强,沉浸性不够。
图9 仿真度测试统计图(D均值:7.4,O均值:8.0)
(2)易用性测试。上述10位同学,顺序随机进入测试环境,测试项目分为4项:
①进入场景成功拿起螺丝刀所需次数;
②进入场景成功拿起螺钉所需次数;
③成功触碰使下颌骨归位所需次数;
④在场景中瞬间移动操作成功所需次数。
每位同学进入测试环境后,先向其讲解一遍虚拟手术系统的使用方法,然后直接开始依次做上述操作。
捡取螺丝刀的测试结果如图10所示。
捡取螺钉的测试结果如图11所示。
图11 捡取螺钉次数统计图
触碰颅骨模型骨折部位,使下颌骨骨折部分归位的测试结果如图12所示。
图12 触碰归位次数统计图
在虚拟手术场景中进行瞬间移动的测试结果如图13所示。
图13 瞬间移动次数统计图
通过对图10、图11、图12以及图13中的10名同学易用性测试的统计可以看出,捡取螺丝刀操作、碰触下颌骨归位操作与瞬移操作比较简单,成功率较高。而捡取螺钉操作,由于螺钉比螺丝刀小很多,且在触碰到时不会有提示,所以操作难度较其他三种高,可能需要短时间的训练。但本虚拟手术系统整体上还是体现了易上手,便于操作的特点。
对于螺丝刀和螺钉的捡取以及对下颌骨的触碰操作反映出物体的3D模型精细程度较高,它们的碰撞盒子和3D模型契合度也较高。所以如果原物体模型较小的话,拾取操作会较难完成。虽然全部采用基于网格的碰撞模型会很好地模拟器械之间的碰撞交互真实感,但是也会造成操作上的困难。因此可以考虑对一些尺寸较小的器械如螺钉添加较大的碰撞模型,便于使用者进行拾取等操作。然后在进入坚固内固定术流程时将较大的碰撞模型替换为精细模型,这样也可以解决交互真实性的问题。
本文使用Unity3D引擎开发了一套基于HTC Vive平台的下颌骨单线骨折虚拟手术系统,为医学生和新晋医生提供一个真实的手术环境,并提供一些基础的交互功能,从而达到手术训练的目的。在系统实现中,通过3ds Max软件建立了手术室的模型和手术器械模型及其他的手术室常见模型,通过Mimics软件对病人头部CT数据进行三维重建得到了颅骨的三维模型,通过Unity3D开发引擎对场景进行了集成,并对相应的器械添加了交互功能,最终的系统可以为使用者提供视觉的手术场景,提供对场景内物体的操作功能,提供使用者在场景内的瞬间移动功能。通过10位志愿者对系统的测试,手术室场景的仿真程度较高,简单的培训后,使用者即可顺利地完成对系统的使用,从而也论证了将HTC Vive设备运用到手术仿真系统的可行性,为系统的继续改进提供了基础。本系统利用虚拟现实技术构建手术场景,对医生和学生的训练技术具有可避免潜在伤害、突破时间空间限制、节约资源等优势。