朱玲 曹国贤 李艳东 姚芝凤
摘 要:CHAI3D具有强大的力觉渲染能力,但相关应用并不广泛,为此,在CHAI3D平台下搭建虚拟手术场景,导入手术台及人体的3ds文件,通过属性设置、纹理贴图、视角变换增强系统的视觉表现;详细给出CHAI3D平台下虚拟手术场景设计的具体流程及其在虚拟训练系统中的力觉渲染优势;最后呈现了不同视角下的虚拟手术训练系统实例。关键程序段及训练系统实例充分体现了CHAI3D在虚拟现实场景创建及人机交互方面的便利性与高效性,为初学者快速入门提供了参考。
关键词:虚拟现实;CHAI3D;虚拟手术;力觉渲染
中图分类号:TP391.9 文献标识码:A
Research on Virtual Surgical Training System based on CHAI3D
ZHU Ling1, CAO Guoxian1, LI Yandong2, YAO Zhifeng1
(1.School of Mechanical and Electronic Engineering, Qiqihar University, Qiqihar 161006, China;2.College of Computer and Control Engineering, Qiqihar University, Qiqihar 161006, China)
Abstract: CHAI3D has powerful force-sensing rendering capabilities, but its related applications are not extensive. In view of this problem, this paper proposes to build a virtual surgical scene on the CHAI3D platform. The 3ds files of operating table and human body are imported, and visual representation of the system is enhanced through attribute setting, texture mapping, and perspective transformation. This paper elaborates the specific process of virtual surgical scene design on CHAI3D platform and the force rendering advantage of CHAI3D in virtual training system. Finally, virtual surgical training system from different perspectives is presented. The key program segments and training system examples fully reflect the convenience and efficiency of CHAI3D in the creation of virtual reality scenes and human-computer interaction, and the proposed system provides a reference for beginners to get started quickly.
Keywords: virtual reality; CHAI3D; virtual surgery; force-sensing rendering
1 引言(Introduction)
CHAI3D(Computer Haptics and Active Interface)是用于計算机触觉、可视化和交互式实时仿真的开源C++库。它最初由斯坦福大学人工智能实验室开发,其设计目的是提供一个用于虚拟现实的程序框架,并将实验触觉引入研究领域。瑞士洛桑联邦理工学院和意大利锡耶纳大学进一步发展了CHAI3D,2004 年发布了第一个公共版本,致力于让研究人员更容易地创建结合3D模型与力反馈渲染的应用程序[1]。多年来,CHAI3D已成为流行的开源多平台触觉渲染框架之一,全球有100多个行业和研究机构在开发基于CHAI3D的应用,主要包括汽车、航空航天、医疗、娱乐、工业机器人、游戏、模拟器、交互艺术、科学可视化等领域,支持各种商业可用的三自由度、六自由度和七自由度触觉设备,并使其易于支持新的自定义力反馈设备[2]。
在3D场景搭建、力觉信息反馈等相关研究中,CHAI3D的运用可极大缩减场景搭建时间,提高力反馈程序的开发效率。国外针对CHAI3D平台的应用研究较早[3-4],北京航空航天大学、东北大学、哈尔滨工业大学、沈阳工业大学、上海工程技术大学等国内科研团队也先后基于CHAI3D开发了各类虚拟手术系统训练环境,结合力反馈设备实现了外科手术场景中虚拟人体组织的视觉仿真与力觉的虚拟感知[5-6]。但他们没有给出CHAI3D具体的使用方法,这对初学者尤其是没有程序设计及应用经验的研究人员而言,需花费更多时间入门学习,甚至在未触及其核心功能时就遇挫放弃,从而影响了CHAI3D优势的发挥及其广泛应用。
为了使初学者更容易掌握CHAI3D并基于此平台迅速搭建虚拟场景,本文详细介绍了虚拟场景创建的CHAI3D程序架构及其力反馈渲染过程,通过设计虚拟手术训练场景实例,给出具体的实现流程。
2 虚拟场景设计流程(The design process of virtual scene)
CHAI3D安装与运行十分简单,不需要配置环境变量。CHAI3D的可视化系统使用OpenGL渲染引擎,支持照明、阴影、纹理映射等效果。通过引入第三方组件扩展了CHAI3D的核心功能。扩展模块目前包括对BULLET、ODE和GEL动力学引擎的实例支持,用于实时模拟刚体和可变形体,每个例程共享相同的结构和文档。新版本的CHAI3D提供了48 个例程,包括31 个CHAI3D基本案例及17 个BULLET(刚体)、GEL(形变体)、OCULUS(刚体)应用案例,可在现有的案例基础上创建自己的虚拟环境[3],具体实现流程如图1所示。
虚拟场景设计流程可归纳为七个操作步骤:
(1)预设虚拟场景空间:采集现实场景中的实物尺寸,对虚拟现实场景整体结构进行空间预设。
(2)创建世界类:具体包括创建相机类、创建灯光类、创建对象类和创建工具类,每一种创建都可以根据不同的场景进一步增添细节,例如通过添加多个相机,呈现场景的不同视角;通过添加场景隐形约束空间,限制虚拟对象的活动范围在可视空间内等。
(3)构建图元/导入3ds模型:CHAI3D可构建自己的基本图形,也可导入专业建模软件3DMAX创建的复杂模型,包括复杂的手术器械工具类对象。
(4)添加对象物理属性:上述基本模型建立后,还需赋予刚体对象物理属性,包括颜色、硬度、质量、表面摩擦力等;为软体对象添加节点属性,包括节点半径、质量、线性阻尼、转动阻尼等,这些属性将为后续力反馈模型的引入和构建做准备。
(5)添加力反馈框架:主要实现与外部力反馈设备的对接。CHAI3D已为用户提供了较完善的程序框架,用户可在此框架下设计力反馈算法,表现不同的力觉效果。
(6)完善场景细节:如调整灯光角度或增加光源数量,添加对象的阴影效果,增添场景的第二视角或缩放场景,通过纹理映射美化地板、墙壁及对象,增加文字显示信息等,多方位提升虚拟场景的真实性。
(7)呈现虚拟场景界面:运行CHAI3D程序需要安装Visual Studio,并在此编译环境下调试程序。这里通过CHAI3D示例呈现的虚拟场景界面如图2所示。
(a)CHAI3D基本案例 (b)BULLET刚体案例 (c)GEL软体案例
3 训练系统中的力觉渲染(Force rendering of training systems)
触觉反馈可以有效地引导学员进行规范训练,弥补传统手术训练系统由于缺乏力觉反馈信息而出现的手术模拟不准确、训练低效等问题。CHAI3D为触觉技术提供简单而紧凑的程序框架,内置了代理算法、势场算法等力觉渲染方法,可以模拟具有质量、摩擦、阻尼和刚度的对象特性,也可以模拟虚拟工具与周围虚拟对象交互的黏、滑、振动和磁效应等力觉行为,从而为3D模型的力反馈渲染提供了极大的便利。
CHAI3D通过名为cGenericHapticDevice的基类与常见的3D触觉设备通信。触觉设备末端执行器或句柄的位姿可以通过getPosition()、getRotation()、getGripperAngleDeg()等方法读取;当虚拟手术工具接收到交互信息時,仿真模型将做出反应,并在每次仿真迭代中计算力和力矩信息,最后通过setForce()、setForceAndTorque()和setForceAndTorqueAndGripperForce()等方法发送到触觉设备,从而实现力觉信息的双向交互。
CHAI3D实现了几种特定力反馈设备的类(例如cDeltaDevice、cPhantomDevice、CLeapDevices),具有用户和虚拟手术工具之间的接口功能。它们是cGenericHapticDevice的派生类,而cGenericHapticDevice又继承自通用设备类cGenericDevice,这两个类对力反馈设备的操作函数及属性进行了详细的定义,因此只需要改写部分函数就可以实现CHAI3D平台对自定义力反馈设备的支持[7]。
目录tools包含两种实现触觉工具的类,单个交互点代表一个非常简单的工具,两个相互依赖的交互点代表一个夹具。这些工具将触觉设备类连接到虚拟环境中,实现与对象交互的虚拟角色[8]。力觉渲染流程如图3所示。
4 虚拟手术场景设计(The scene design of virtual surgery)
(1)世界类创建
世界类(cWorld)是虚拟场景的基础,是相机、光源、对象、工具等其他任何类的父类,需要首先创建。世界类划分为刚体世界类(Bullet World)与软体世界类(GEL World),根据虚拟场景中构建的对象类型进行调用,本案例采用刚体世界类。
(2)相机类创建
如果只有世界类,场景界面是无法观察读取的,需要添加一个观察世界的相机类(cCamera)。相机类的创建需要定义相机剪切面与三个主要位置属性,分别为相机位置、观察视角位置与法线位置。相机类主要充当虚拟场景中的人眼,对世界进行观察。如图4所示是相机观察到的初始世界界面,黑色小球为力反馈设备类链接球。
(3)灯光类创建
图形渲染的核心工作就是模拟光照,CHAI3D默认的光照类型主要有三种,分别为定向光源(cDirectionalLight)、定位光源(cPositionlLight)、聚光灯光源(cSpotLight),此外还为聚光灯创建了阴影映射类(cShadowMap)。与相机类相似,也采用三个位置定义坐标属性,但不同于相机类,灯光类主要照亮世界,增强虚拟对象的立体效果,让充当“人眼”的相机类可以观察到更加真实的虚拟世界。添加灯光类后的效果如图5所示,与图4对比球体有明显的立体效果,更符合真实对象特性。
(4)对象类创建
对象类(cMesh,cShapeBox等)是世界类的子类,需要在前面构建的世界框架的基础上进行创建。对象类一般分为背景对象与操作对象,背景对象一般为静态的,不设质量等属性,不参与人机交互;操作对象主要分为刚体和软体两大类。CHAI3D通过第三方组件(BULLET、GEL)的支持拓展了对刚体和软体的模拟,刚体对象采用规整尺寸构建基本体或导入3ds格式模型构建多面体两种方法;软体对象可采用逐个节点构建基本模型,亦可导入3ds或obj文件构建复杂网格模型。图6为添加墙、地板等背景对象的开放世界。
在添加背景的开放世界基础上,导入手术台、照明灯、虚拟人体对象、训练器械等虚拟对象3ds模型,同时赋予相应的物理属性,以便实现动态碰撞效果与力反馈的计算,如图7所示。
(5)设置物理属性
对象类的物理属性是虚拟环境中模拟真实力反馈碰撞交互效果的基础,物理属性具体包括网格类型、质量、惯性、动态模型、阻尼等。下面给出设计的VRBody训练场景的关键代码。
VRBody=new cBulletMultiMesh(bulletWorld); //创建VRBody对象
bulletWorld->addChild(VRBody); //将VRBody对象加入bulletworld世界中
bool fileload; //设定一个bool
Fileload=VRBdoy->loadFromFile(RESOURCE_PATH("resource/models/VRBody.3ds"))
//获取VRBody.3ds模型路径
If( !fileoad )
{
#if defined(_MSVC)
Fileload=VRBody->loadFormFile("bin/resource/models/VRBody.3ds");
#endif
} //将VRBody.3ds模型导入
cMaterialmatGear; //创建材质属性
matGear.setStiffness(100); //设定材料刚度
matGear.DynamicFriction(0.5); //设定表面动摩擦系数
matGear.StaticFriction(0.5); //设定表面静摩擦系数
matGear.Damping(0.7); //设定阻尼
matGear.setGray(); //设定基础颜色为灰色
VRBody->setMaterial(matGear, true); //将材料属性赋予VRBody对象
VRBody->scale(0.007); //设置VRBody对象网格缩放等级
VRBody->buildContactTriangles(0.001); //VRBody对象网格三角形大小
VRBody->setMass(100); //设定对象质量
VRBody->estimateInertia(); //为对象添加惯性
VRBody->buildDynamicModel(); //為对象添加动态模型
VRBody->setDamping(0.7, 0.7); //为对象添加运动阻尼,包括线阻尼与角阻尼
(6)纹理贴图
在CHAI3D中提供cTexture2d、cTexture3d两个类实现二位或三维的纹理布局。可以将预先处理的纹理贴图按不同对象分别映射,如果同一对象具备过多的部件,需要将对象按部件类别划分为不同图层,再分别进行纹理贴图,如图8纹理贴图效果所示。
(7)场景完善
虚拟训练场景需要具备多方位的观察视角,以方便训练操作,提高训练效果。同时,虚拟训练场景还应该具备手术设备的位置、旋转角度、视角角度等空间信息。通过调整相机位置、灯光属性,优化渲染效果,最终在CHAI3D平台上呈现不同视角的虚拟训练场景。图9、图10分别为添加相应空间信息的内窥镜手术视角及全局视角图。
(8)人机交互
目前,CHAI3D平台支持多种力反馈设备,并且在缺少力反馈设备的情况下,也可以基于鼠标、键盘开发各类交互算法,实现与虚拟场景对象的人机交互,体现了CHAI3D强大的扩展性。在上述创建的手术训练场景的基础上,可以继续构建手术器械的虚拟对象,然后借助鼠标和键盘控制虚拟手术器械,实现对虚拟人体组织的按压、提拉、切割、缝合等手术训练过程中的交互模拟。训练者可以直观地看到交互操作引发的对象变化效果,在力反馈设备引入的同时,达到手眼动作的协调训练及力觉感知。
5 结论(Conclusion)
CHAI3D在3D虚拟场景构建、力觉信息反馈方面有着显著的优势,其虚拟场景模块化搭建有效地降低了元素、对象组件的建模复杂度,可以快速直观地完成虚拟手术等训练系统的构建;同时,其简单紧凑的力反馈程序框架使得研究人员能够轻松地实现应用程序与力反馈设备通信。虚拟手术训练场景的设计实例表明,利用CHAI3D能显著缩短建模时间,并可在此框架下增加人体组织的生物力学模型,进一步实现触诊、切割、缝合等手术训练操作。
参考文献(References)
[1] RENON P, YANG C, MA H, et al. Haptic interaction between human and virtual iCub robot using Novint Falcon with CHAI3D and MATLAB[C]// IEEE. Proceedings of the 32nd Chinese Control Conference. Xi'an, China: IEEE, 2013:6045-6050.
[2] NGUYEN T N, HO BA THO M C, DAO T T. A systematic review of real time medical simulations with soft-tissue deformation: computational approaches, interaction devices, system architectures, and clinical validations[J]. Applied Bionics and Biomechanics, 2020, 2:1-30.
[3] MANSOR N N, JAMALUDDIN M H, SHUKOR A Z. Concept and application of virtual reality haptic technology: A review[J]. Journal of Theoretical and Applied Information Technology, 2017, 95(14):3320-3336.
[4] GONG M B, LIU D, YUAN X N. The training system of vascular interventional surgical robot based on Chai3D[C]// IEEE. 2014 IEEE International Conference on Mechatronics and Automation(ICMA). Tianjin, China: IEEE, 2014:600-605.
[5] 劉明雨,项士海.一种具有触觉再现功能的人体心脏组织虚拟内镜系统[J].北京生物医学工程,2020,39(2):34-41,79.
[6] 秦伟,杭鲁滨,黄晓波,等.力触觉建模及再现技术研究[J].轻工机械,2017,35(2):48-52.
[7] 杨达.面向遥操作的并联式力反馈手控器系统设计[D].南京:东南大学,2019.
[8] HERGENHAN J, RUTSCHKE J, UHL M, et al. A haptic display for tactile and kinesthetic feedback in a CHAI 3D palpation training scenario[C]// IEEE. 2015 IEEE International Conference on Robotics and Biomimetics (ROBIO). Zhuhai, China: IEEE, 2015:291-296.
作者简介:
朱 玲(1981-),女,博士,副教授.研究领域:虚拟现实,虚拟手术.
曹国贤(1998-),男,硕士生.研究领域:虚拟现实,3D建模.
李艳东(1978-),男,博士,教授.研究领域:非线性控制,智能控制.
姚芝凤(1979-),女,博士,副教授.研究领域:虚拟现实,机器人控制.