1场景数据处理
1)三维模型构建Unity3D对当前主流的三维模型格式提供了良好的支持,本系统采用3DsMax进行建模、Photoshop处理贴图,完成三维模型构建。Unity3D对模型、材质、贴图有特殊的要求[8]。模型必须使用英文命名,模型与模型之间不允许出现共面、漏面、破面和反面的情况;材质球命名与模型名称一致,支持标准材质和多维/子物体材质,不能有浪费的材质球。贴图格式不带通道的为JPG,带通道的为32位TGA和PNG;贴图尺寸必须是2的N次方,最大贴图尺寸不能超过(1024×1024),贴图不能以中文命名,不能有重名。场景检查合格后,从3DsMax导出FBX格式文件。2)模型导入平台Unit3D支持从3DsMax中导出FBX格式的文件[9],导入FBX模型之后,为提高场景的亮度及真实感,在场景中选择添加一个方向光以模拟太阳光源,通过调整光源的方向、颜色以及是否产生阴影等选项,提高场景的效果[10]。Unity3D软件支持实时光照效果,在添加了光源之后,系统会根据光源及投影体的相对位置关系自动计算出阴影的位置及大小,并投影到正确的受影体上[11]。此外,Unity3D软件人性化地设置了“场景品质(QualitySettings)”调节选项,在这里可以进一步地调整阴影的品质以及渲染阴影的距离。场景效果调整前后效果对比如图2。
2系统关键技术
2.1NGUI交互界面设计
在化工设备虚拟培训系统中,系统的界面设计采用NGUI提供的界面工具。NGUI[12]是严格遵循“KISS原则”(所谓“KISS原则”,是英语KeepItSimple,Stupid的首字母缩略字,是指在设计当中应当注重简约,也有人称之为“懒人原则”),并用C#编写的Unity插件。NGUI提供强大的UI系统和事件通知框架。NGUI插件代码简洁,多数类少于200行代码,有着高效的性能,方便调节或扩展NGUI的功能[13]。系统主界面由五个功能区、右侧说明栏及三维场景区组成。整个界面的搭建基于Unit3D提供的NGUI控件,实现相机始终对着界面且只看到界面范围。以设备结构为例,设备结构菜单下分为自动拆解和手动拆解,利用NGUI插件,将下拉菜单的图片显示到界面中,并能够触发按钮下相应状态,实现后台程序功能展现。
2.2声音、字幕协同技术
由于unity3D软件中没有语音库,音频制作采用科大讯飞公司推出的InterPhonic5.0语音合成系统。这套系统以先进的大语料语音合成技术和语音韵律描述体系为基础,可以提供任意版本、任意篇章的连续语音合成。用户通过在编辑区输入文本后,可以通过改变语速、音高等调整语音效果,在制作时注意语句停顿正确即可,最后可以导出为.wav格式的音频文件。为了能够在unity3D软件中实现声音的播放,需要在Unity3D工程中添加AudioSource以及AudioListener[14],并通过声音脚本控制音频播放。音频制作完毕,需进行字幕的制作及同步显示控制。首先需要将要显示的文字内容保存为utf-8编码制式的文本文档,利用BitmapFontGenerator位图字体工具,将文本文档导出为以.fnt为后缀的字库文件及一张.png格式的文字纹理,手工重命名.fnt文件为.txt文件,利用NGUI插件中的FontMaker功能生成字体预设(Prefab),供字幕显示使用。其次制作一个XML文件,用以存储段落中每一条语句播放的起始和结束时间。最后,在当前工程创建一个UIPanel,并在UIPanel下创建子项UILable。通过添加脚本,赋予创建的XML文件脚本,并在UILable中放入创建的字体文件即可。
作者:相茂英 马纯永 韩勇 霍鹏 王春 单位:中国海洋大学信息科学与工程学院