李海胜,王 清
(郑州铁路职业技术学院 软件学院,河南 郑州 450052)
2008年,Esperient公司推出了实时(real time)三维视景仿真软件Esperient Creator3.0(EspCreator).EspCreator以其强大的交互功能广泛应用于产品展示、培训、教育与娱乐等领域.目前,EspCreator已被波音、洛克希德·马丁公司和联邦技术等全球排名前十的航空与防御公司采用.而在国内,使用EspCreator进行三维视景仿真系统的开发几乎是一项空白.文章介绍了EspCreator,提出了基于EspCreator开发三维视景仿真系统的技术路线,该路线对使用EspCreator进行三维视景仿真系统的开发具有一定的参考意义.
基于EspCreator进行三维视景仿真系统的开发,与基于其他开发平台(如Cult3D,Virtools,Vega/Prime)类似,其流程如图1所示.
图1 开发流程图
三维模型的本质是点、线、面的集合;集合的不同组合构成各种三维模型.在建模过程中,须在保证精度的基础上减少模型包含的点、线、面的数量,防止场景运行画面不连贯、停滞的现象发生.这种现象本质上是帧率Frames Per Second(FPS)过低产生的,FPS反映了系统实时渲染所需的时间.FPS<30,画面会显得不连续;FPS>60,则可以显著提高交互感与逼真感.
此外,使用纹理映射将多边形(墙面、地板、细小复杂物体等)以贴图的形式展现.这种方式能够有效减少多边形个数(特别是细碎多边形),模型真实感、质感更强,能够得到逼真的显示效果.要注意的是,多边形个数不是影响帧率的唯一因素.MultiGen Creator提供了三种模型优化策略:Level Of Detail(LOD)技术、纹理技术与实例化技术,能在保证精度的同时有效地优化场景模型[1]208.
模型导入EspCreator过程中,如需保持模型贴图,则需将模型使用Deep Exploration保存为Right Hemisphere Binary(.rh)格式.但是,.rh格式似乎不能产生最佳的图形显示效果[2]792.
EspCreator为场景中的三维模型提供了物理属性设置选项,用于描述模型的物理特性.EspCreator提供的物理属性有Object is wall(设置物体为墙,常用于碰撞检测)、Object is floor or ground(设置物体为地面)、Object is Liquid(设置物体为液体)等;此外,EspCreator还提供了碰撞形状、静摩擦力、弹性系数、液体密度等参数精细描述物体的物理特征.刚体的运动受上述参数、环境、重力、场景中其他刚体的影响.
1.3.1 菜单设置交互
国内目前较流行的仿真平台Cult3D提供了Event Map 窗口进行交互控制设置.通过设置相应的触发器、对象和动作及其相关参数,建立事件、动作和场景的相互关系,从而进行交互[3]251.同Cult3D的交互模式类似,EspCreator的交互控制主要通过“Object(对象)+ Animation(动画)”的方式完成.首先选择对象,为对象添加动画,设置动画激活模式、动画参数即可完成对象的交互控制.
EspCreator中每一个对象均有Properties、Alterations、Overrides、UV Wraps、Animations与Physical六种属性.而交互控制主要使用Animations属性.EspCreator为Animations属性提供了60余种动画,有Object Transforms(平移,旋转,缩放)、Color Changes(颜色变化)、real time physics(实时物理)、keyboard and joystick controls等.综合使用这些动画可轻松实现背景变换、材质变换、纹理变换、声音播放、操作提示等功能.对象的Animations属性可添加不同种类的多个动画,动画之间相互独立或互为激活条件.
EspCreator中动画的Active(激活模式)有多种,有Immediate(立即)、Triggered(触发)、Collision(碰撞)、User Pick(拾取)、Pick/Rev Re-Pick(拾取/重置未拾取)Trigger/Reset UnTrig(触发/重置未触发)等.根据不同的交互要求,为动画选择相应的激活模式.Triggered触发是某一对象的动画以其自身或其他对象的Trigger动画为激活条件,是交互控制的难点.
例如,给对象B(场景对象)添加“Move01”动画,使其沿X方向移动,而动画的Active(激活模式)是Trigger/Reset UnTrig即触发激活;给对象A(按钮、场景对象等)添加“Trigger Animation01”动画,激活模式为“User Pick”,Trigger属性为对象B的“Move01”动画.运行该场景,鼠标单击拾取对象A,对象B开始移动,实现交互控制.Trigger触发的流程,如图2所示.
图2 Trigger触发流程图
EspCreator提供了一系列标准GUI组件(标签、按钮、滚动条等),使用标准GUI组件可以快速创建交互式界面.设置GUI组件与场景对象动画的控制关系,实现系统界面与对象的交互控制.
1.3.2 脚本控制交互
EspCreator提供了两种内置脚本语言Lisp与CScript.文章采用Lisp脚本控制实现了轴承拆装虚拟实验系统,如图3所示.
图3 轴承拆装虚拟实验系统
实验过程中,须按照提示逐步完成零件的拆卸,才能最终完成实验;否则,系统提示错误对错误操作不反应.系统中控制16mm螺钉拆卸的Lisp代码如下所示:
(if (= luodingPickable 1)
(Progn
(TriggerAnimation "luoding" "Move")
(TriggerAnimation "luoding" "showhide")
(SetObjectOnOff "tipSec" 1)
)
)
.esp是Right Hemisphere交互格式,该格式文件体积小,便于桌面、网络发布,可通过Esperient Creator Viewer(EspViewer)查看.Esperient Creator Viewer是用于播放.esp文件的独立程序(EspViewer.exe),能够与工程一起发布..exe可脱离EspCreator环境独立运行,常用于桌面发布,是最常见的发布方式.其实质是将.esp与EspViewer.exe打包一起发布.
.esp文件不仅能由EspViewer播放,还能通过EspViewer的ActiveX控件播放,由此可将场景嵌入到网页中,实现网络发布.EspCreator作品网络发布需.esp文件与HTML代码.将EspCreator“Create HTML Code for ActiveX”菜单生成的HTML代码嵌入到.htm文件中即可将场景嵌入到网页内(.esp文件与.htm文件需位于同一目录下);并且可通过JavaScript实现页面与EspViewer ActiveX控件之间的通信(鼠标在页面上单击、释放时,JavaScript通过SendAPICommand函数向EspViewer ActiveX控件传递Lisp/CScript命令,EspViewer ActiveX控件接收命令,执行相关动作).
按上述流程设计实现了虚拟车间三维视景仿真系统,如图4所示.通过鼠标拖拽(左键旋转,右键缩放,中键平移)或键盘控制第一人称视角从任意角度观察模型;单击菜单按钮,镜头聚焦场景中对象(设定好观察角度,添加相机,给相应菜单添加“View Camera Match”动画即可实现视点切换,无需编程);单击机床操作开关,模拟机床操作(伴有操作提示、机器运行音效、语音提示);从而达到学员训练目的.该系统交互控制主要通过为对象Animations属性添加动画实现.
(a)虚拟车间三维全景
(b)模拟机车
文章详细说明了采用EspCreator创建三维视景仿真系统的技术路线即“建模+模型优化+交互控制”,介绍了建模过程、模型优化策略、模型导入技巧,对交互控制的实现原理、难点进行了详细分析,最终实现了虚拟车间三维视景仿真系统.实验证明,采用EspCreator创建三维视景仿真系统具有工作量小、交互性强、场景效果逼真等特点.依靠菜单即可实现复杂的交互控制,便捷的产品发布功能使EspCreator在装备训练、虚拟实验室建设等领域具有广阔的应用前景.
参考文献:
[1] 龚 琳.基于Creator/Vega的虚拟海战视景系统仿真[J]. 测绘科学,2012,37(04).
[2] Pieter Pauwels,Ronald De Meyer,Jan Van Campenhout.Linking a Game Engine Environment to Architectural Information on the Semantic Web[J]. Journal of Civil Engineering and Architecture,2011,5(9).
[3] 胡林岚,包峥嵘.基于Cult3D的机械创新虚拟实验项目研究[J]. 实验室研究与探索,2013,32(5).