APP下载

基于UE4的中医学十二经脉教学VR版研制

2021-06-16陆春雨丁穗娟

电子技术与软件工程 2021年4期
关键词:人体模型经脉手柄

陆春雨 丁穗娟

(1.广西医科大学信息与管理学院 广西壮族自治区南宁市 530021 2.广西医科大学教务处 广西壮族自治区南宁市 530021)

虚拟现实(Virtual Reality,VR)是以计算机技术为核心,生成与一定范围真实环境在视、听、触感等方面近似的数字化环境。用户借助必要的装备与其进行交互,可获得如临其境的感受和体验。[1]近年来,虚拟现实技术在各行各业中的应用越来越广泛,在教育教学中更是能发挥出独特的魅力。

传统的中医学十二经脉教学多以挂图、塑料或硅胶模型为教具进行讲解。二维图片缺乏空间立体感,塑料或硅胶模型只把经络绘制于人体表面,并未表现其与内脏、骨骼的关系,学生学习起来更多地需要发挥想象力。而传统医学加上先进的虚拟现实技术,正可以突破性地解决这些问题:学生戴上VR 头盔,可以沉浸式全方位观察人体十二经脉的循行,以及它们与人体肌肉、骨骼、内脏的空间关系。通过VR 手柄可进行抓取、旋转、点击等操作,穴位的相关知识会有语音播放,一切都身临其境,形象生动,给予学生完全不同的学习体验。

Unreal Engine 4(UE4、虚幻4)是由Epic Games 开发的,具有成熟的虚拟现实模拟技术的引擎,是目前大多数的VR 项目开发的首选引擎。UE4 具有的强大的物理模拟能力和画面渲染能力,可以与在3ds Max、Maya 中构建的模型完美结合,给人以真实感,从而增强学生的学习兴趣。[2]

1 开发流程

1.1 技术路线

技术路线如图1 所示。

1.2 人体模型的导出和加工

首先在DAZStudio 中找到合适的人体、骨骼、内脏等模型,然后需要解决3 个问题:

(1)人体模型默认是T-Pose(两臂水平放置),按照“观察”经络的习惯,要调整成类似A-Pose(肩膀松弛,两臂下垂,前臂稍微向外侧旋转)的姿势。骨骼也做同样的调整。

(2)模型面数太多,比如人体的模型面数将近13 万个三角面。过多的面数会降低VR 引擎的运行效率,很有可能造成卡顿、实时渲染出错等问题,所以需要用DAZStudio 里的减面插件Decimator进行减面处理。减面太少,达不到效果;减面太多,又会造成模型严重失真。这里经过测试,设置为原来的20%,也就是减到2 万多个三角面。但有些面还是会出现错误,所以先以FBX 格式导出,然后导入到3dsMax 中进一步加工。在3dsMax 里,删除掉一些错误的面(比如指甲、口腔内部)。眼睛的瞳孔部分可以在3dsMax里重新制作,然后替换,注意调整好UV(贴图坐标)。骨骼还会带有一些辅助物体,因为用不上,可以直接删除。

(3)整理材质。默认的材质非常繁复,需要在3dsMax 中精简优化(主要是合并材质ID),否则导入UE4 以后再处理会非常麻烦。

1.3 经脉模型的制作

在3dsMax 中先用曲线“绘制”出经脉,然后用Loft(放样)生成3D 对象,用放样中的ScaleDeformation 制作出经脉的粗细变化(越往指端/趾端越细)。经脉还要拆分好UV(贴图坐标),以便后面在UE4 里制作材质动画。穴位就用分段数为8 的球体来表示。注意各个模型的命名。最后所有模型分别从3dsMax 中以FBX 格式导出,然后就可以导入到UE4 中了。

1.4 在UE4中创建场景

先创建一个空白场景,然后用资源库里的墙壁、地板、天花板等组件创建一个简易的房间,设置好灯光,墙壁上放置十二经脉的挂图作为装饰(在网上找到十二经脉的图片,然后导入到UE4,作为贴图创建挂图的材质,最后分别赋予十二个平面)。

1.5 把模型导入UE4

在UE4 中用VR 模板创建一个新的工程,把上面创建好的房间迁移(Migrate)到这个新工程中。先修改按键绑定,包括左、右手的传送、抓取、显示菜单、点击菜单选项等,再把人体模型、骨骼、内脏、经脉分别导入到UE4 中,然后设置各个模型的属性。把骨骼、内脏、经脉都作为人体模型的子物体。人体模型的Mobility 设置为Movable,启用Collision 中的Simulation Generates Hit Events和Generate Overlap Events, 在其蓝图的ClassSettings里添加PickupActorInterface,并添加蓝图Event Pickup 和Event Drop。这样VR 手柄控制的“手”碰到人体模型并按下“抓取”按钮时,就能通过蓝图接口PickupActor 发送消息Pickup,人体模型接收到该消息就会执行Pickup 事件,人体模型会附加到VR 手柄控制的“手”上,也就是用“手”抓起人体模型;当松开“抓取”按钮时,就会发送消息Drop,人体模型接收到该消息就会执行Drop 事件,人体模型即与“手”分离,完成释放的动作。

人体模型需要创建新的半透明材质,再创建多个材质实例(Material Instance),根据材质ID 设置其中的Texture,再赋予身体的不同部分。经脉的材质需要加上TexCoord 和Panner 来制作流动的效果,穴位的材质主要是利用EmissiveColor 来制作发光的效果。

1.6 菜单

图1:技术路线

图2:菜单

图3:自定义函数UpdateTextFacing

图4:与穴位交互的蓝图

图5:最终运行的效果

用Widget 创建菜单,通过用VR 手柄点击相应的CheckBox 或Button 来实现肌肉、骨骼、内脏、经脉的显示和隐藏。点击经脉按钮时,会用ExecuteConsoleCommand 执行在LevelBlueprint 中的两个事件:先隐藏所有经脉,再显示该按钮对应的经脉,然后用SetAudioSound 播放该经脉的说明音频。菜单如图2 所示。

1.7 穴位旁的文字

某条经脉显示出来后,其上的穴位和穴位的名称文字(也是用Widget 制作)也同时显现。在旋转模型时,这些文字也要一边保持面对着镜头(即操作者的视角)一边跟着旋转。这里使用EventTick(每帧都执行),先判断穴位的显隐状态,如果显示,就执行一个自定义函数UpdateTextFacing:根据Tag 得到穴位文字的数组,再通过ForEachLoop 和FindLookatRotation 得到每一个穴位文字与操作者视角在Yaw 上的偏转值,然后以此设置它在世界坐标系中的旋转值。如图3 所示。

1.8 穴位的说明音频

当用“手”触碰某个穴位时(Overlap),先判断其是否具有“xuewei”标签,如果有就执行DoOnce(可以避免短时间重复触发),然后把根据GetDisplayName 得到的名字用Split 截取右侧字符,在SoundName 数组中查找(FIND),得到相应的Index,用GET 从Sound 数组中得到相同Index 的音频,再用SetAudioSound播放该音频。接着是设置穴位的材质,由金色变成紫色,然后用PlayHapticEffect 让手柄震动,给操作者视觉和触觉上都有反馈,增强操作体验。最后是延迟(Delay)3 秒,再去重置DoOnce。如图4 所示。

1.9 打包

打包前要先安装Microsoft Visual Studio Community 和.net Framework 4.6.2 Developer Pack,打包完成后会生成.exe 可执行程序。

2 最终效果

操作者戴上VR 头盔,手上拿着VR 手柄,置身于一个虚拟的场景中。眼前是一个人体模型,可以用“手”抓起它,随意观察。通过手柄上的按键可以打开菜单,点击上面的按钮显示出相应的经脉和穴位,用手触碰穴位会播放说明音频。

经过部分师生试用反馈,都对该系统表示基本满意,也提出了不少建议,比如添加评估、测验功能等。同时还一致认为VR 头盔设备不够轻便,长时间佩戴感觉不适;“纱窗”效应还是明显,分辨率还需进一步提高;VR 头盔需要通过线缆跟电脑相连,如果能彻底摆脱线缆的束缚可以获得更理想的操作体验。最终运行的效果如图5 所示。

3 小结

把虚拟现实技术应用到传统医学教学中的优势显而易见。能够身临其境的学习专业知识可以有效减少学习过程中的枯燥乏味,让学生接受教学信息的形式更多元化,改善了教学效果,使教学内容更加具备趣味性,更吸引学生[3]。沉浸式的体验对操作者的感官刺激更加强烈,印象也更加深刻,因此也更有利于提高学生的自主学习能力。

猜你喜欢

人体模型经脉手柄
基于PLC控制的手柄座钻孔攻丝一体机的研发
从出土和传世早期经脉类文献中的疼痛病症看经脉理论的形成
中泰传统医学经脉系统比较探析*
一种多功能无线手柄的设计
老官山汉简《经脉书》初探
基于乘员体型的车辆安全性研究
银行家
人体模型内置摄像头为数据收集
谈“经脉”等词的英译