基于Web的3D虚拟人智能导诊系统设计
王伟东1,余华强2,赵法信2
【摘 要】为了实现全天候的在线智能导诊功能,通过设计3D虚拟人,采用x3Dom结合.net和数据库技术,增强在线虚拟人表情和动作的真实感,提高虚拟人的智能化程度,实现基于Web的3D虚拟人智能导诊系统,可有效提高就诊效率,提升服务质量. 【期刊名称】湛江师范学院学报 【年(卷),期】2012(033)006 【总页数】4
【关键词】Web 3D;虚拟人;智能导诊
医疗部门由于病情的分类众多,医疗设备和医务人员的分工比较明确,各个诊室分布在多个楼层中,一般患者难以快速地根据病情找到合适的诊室和医务人员,一次就诊也常常要分别到多个诊室里进行.有了全天候的在线智能导诊功能,患者或家属就可通过自助终端电脑或智能手机,上网快速找到所需诊室和医务人员.文献[1]中设计了基于Web的平面地图导诊,但在交互反馈的人性化方面还有待改进,目前三维呈现技术已在网页上得到了较广泛的应用,文献[2]采用Web 3D技术实现了虚拟博物馆实现了交互的漫游功能,但主要是采用位置的交互.现在X3D[3]成为继VRML之后最通用的强大 Web 3D标准,已经通过ISO认证,成为国际通用标准,具有良好的跨平台性,能够很好地实现基于Web的远程在线实时交互,它的最大特点是由程序驱动,有效地减少了对浏览器资源的占用,提高了运行的响应速度.但是它也存在一些不足:1)在网页上实现可交互的三维场景,对计算机的硬件和网络都要求很高[4].2)难
以实现让用户通过文字或语言指令等与3D模型进行对话和交互[5].3)X3D的制作工具和开发环境相对比较落后,缺乏完善的功能开发包[6].针对上述的这些问题,为了使在线导诊功能的交互界面更加亲切、更加接近于真人导诊的效果,本文采用Web 3D技术实现实时交互的3D虚拟人进行智能导诊.
1 系统的总体设计
在总体架构上,为了便于普遍地推广应用,基于Web的3D虚拟人智能导诊系统采用B/S架构,有效地兼容各种常用的设备和系统,可以在自助终端的电脑或者在智能手机上通过Web浏览器来使用.
为了增强在线场景和虚拟导诊角色的真实感,采用3ds Max来设计场景和3D虚拟人角色,并转化为通用的X3D格式,将它以编码的形式嵌入网页中,使其在Web浏览器中呈现,以便可以实时地交互,控制显示的方位,做出一些动作和表情.
让用户可以通过文字或语音与3D虚拟人进行导诊相关的实时对话交互.例如:3D虚拟人能根据用户的指令做相应的动作或表情.能根据用户的提问内容进行智能分析判断,回答用户的导诊相关问题,并且能做出相应的动作或表情.还可以设计3D虚拟人具有一定的学习和成长能力.与用户的对话交互功能主要采用语音识别[7]API结合了分词、语义模糊匹配[8]、知识库[9]等技术,使得在线3D虚拟人具有一定的专业导诊智能和知识成长[10]的能力.
如图1所示,根据用户权限设计系统的总体功能主要有:对医务人员,可以录入楼层、诊室位置等信息,各诊室的医务人员情况及能诊治的各病情内容等.对患者或家属,可以根据病情来咨询就诊的医务人员和诊室、咨询诊室位置和医务人员情况等.3D虚拟人都能以字符或语音形式应答,并做出相应的动作或表
情.
2 系统各功能实现过程中的关键技术
2.1 基于Web的3D虚拟人呈现技术
3D虚拟人在Web上的呈现,以往一般是采用VRML实现,但同一3D模型用VRML格式的文件会比X3D格式的占用浏览器的资源大得多,且交互功能较弱.所以系统采用X3D实现3D虚拟人的Web呈现.首先,利用3ds Max设计出3D虚拟人模型和场景,为提高运行速度在不影响总体外形的情况下,要尽量减少三维模型面的数量,导出为.wrl文件后,再转换为.x3d文件,然后以HTML5的代码格式进行标准化,在相关网页中调用官方网站的x3Dom.js和x3Dom.css文件,用x3Dom技术实现在Web上呈现3D虚拟人. 2.2 与用户对话功能的实现技术
患者或家属用户在系统的网页界面中输入一行字符,或说一句较标准的普通话语音,系统通过调用语音识别API进行语音识别后,结合分词、模糊匹配、知识库等技术,处理后按照设定的规则从数据库中提取出相应的信息,以字符和语音形式进行回馈,从而实现系统与用户的简单对话. 2.3 按指令做动作表情功能的实现技术
如图2所示,当用户选择了“指令模式”之后,就可以利用预定的文字或语音指令来控制3D虚拟人做出各种相应的动作和表情,实现逼真的拟人化效果.首先设计出多种动作和表情的模型,在模型代码中修改好表情代码的标识,然后嵌入到网页代码中,用Java Script在网页代码中设计好与动作或表情模型的匹配,从而实现了利用指令控制3D虚拟人做各种表情和动作. 2.4 根据问题的内容做出相应表情和动作的实现技术
基于Web的3D虚拟人智能导诊系统设计
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)