基于Unity3D的仿真平台构建技术研究
2024-05-20黄春营
黄春营,姜 林,李 超,张 翔
(63892部队,洛阳 471000)
0 引言
军事领域是计算机仿真应用的一个重要领域,尤其是在作战模拟和推演方面发挥着关键作用。作战模拟仿真不需要消耗武器装备、弹药和大量的人力资源等,不仅能够有效地降低模拟训练的成本,同时还可对仿真推演中的相关数据进行实时的统计记录,并在仿真结束后对数据进行进一步分析评估,为后续的推演提供有力支撑。目前,战场仿真推演已经成为实现战略战术演练的一种主流方式,利用仿真技术构建出极其逼真的战场环境,并将场景中所需的细节及关键设备等进行仿真还原,能够有效提升相关领域作战技能和战略水平;另外,仿真模拟也打破了自然环境及天气条件等自然环境对训练的约束的问题,从而极大地提升了模拟作战的效率[1-2]。
Unity3D 游戏引擎是一款高度集成的三维游戏开发应用引擎和组合工具套件[3],不仅包括了对图像、音频、物理特性、粒子系统特性、网络通讯等多种特性的支持,而且能够适配主流3D 软件的文件格式(3DS Max、Maya)和美工资源格式。该引擎内置的PhysX 物理系统能够遵循物理定律,真实地模拟现实世界中物体的运动规律,从而增强系统中仿真的真实性[4]。另外,Unity3D 还具有跨平台、人机交互性好、仿真速度快,而且支持虚拟现实设备等多种特性。
本文旨在应用Unity3D 引擎根据模块化的思想构设一种作战仿真推演平台,并辅以智能语音控制和VR 设备的真实体验,从而实现虚拟场景逼真、作战场景丰富且交互友好的作战仿真推演平台。
1 Unity3D
游戏引擎指预先设计的能够应用于游戏系统或应用的核心程序组件。引擎是用来控制所有功能的最主要模块,从对模型的运动控制到对物体碰撞的计算以及各种物理方面的特性,都是通过引擎来实现的。当下,应用较为广泛的开发引擎有Unreal Engine 4、CryENGINE3、Virtools、Quest3D、LabVIEW、Eon 与Unity3D等,综合比较各引擎的跨平台特性、协同性、画面显示效果、操作难度、兼容性和扩展性等一系列特性,结合自身需求,应用Unity3D 来进行仿真推演平台的研发是比较理想的选择[5-6]。
Unity3D平台的应用特性如下:
(1)资源可植入性高。Unity3D 能够应用绝大多数常见格式的资源,配合其它相关的建模类的、动画制作类的、仿真类的应用程序,可以导入多种类型的模型、纹理、材质、动画效果、音频、视频等各类资源,为仿真模拟对应的功能打下基础。
(2)跨平台性。Unity3D 充分体现了面向对象的编程思想,其开发的项目可以跨Windows、Android、OSX、IOS 等多平台进行一键式发布,从PC 到MAC 乃至到移动终端,Unity 平台的应用极其广泛,在满足不同平台要求方面有独特的优势。
(3)开发便捷。Unity3D 具有可视化的编辑开发能力,用户能够直接有效控制和编辑模型、动画等资源,且具有良好的编程环境,代码编写应用方便,自带有物理引擎,可为模型对象赋予真实的物理属性,在物理模拟仿真方面具有极大的优势。
2 仿真环境及模型
仿真环境搭建是计算机仿真推演的基础,主要包括仿真所需地形的创建,仿真试验中模型的生成,环境和粒子特效的生成以及用户界面设计等。
2.1 地形创建
仿真环境中地形的创建一般分为两种情况,一种是设计人员根据自己的想象通过Terrain 工具进行绘制,由于没有与真实地形进行关联,这种方式绘制的地形经常用于三维游戏开发;另一种就是根据真实世界的地形来绘制构建仿真环境中的地形,常见的是基于数字高程模型(digital elevation model,DEM)地形建模技术进行真实地形的创建[7-8]。由于DEM 保存了真实地形的基础数据,基于DEM 的地形建模技术能够真实有效地模拟出仿真所需的地形。
基于DEM的地形构建流程如图1所示。
建立坑塘进排水分家系统,形成“长藤结瓜式”结构,引、蓄、提相结合,大、中、小相结合,将本地水和外调水通畅地蓄进坑塘,将处理后符合灌溉水质的坑塘污水通畅地灌溉农田。坑塘经过改造,清淤加深,扩建防渗,修整配套,做到废弃土地建新塘,小塘并大塘,旧塘扩新塘,村村建立当家塘,保障水能蓄得住。
图1 基于DEM地形构建流程
2.2 设备模型
仿真平台中除了地形外还需要其它例如房屋、车辆、装备等各式各样的模型,Unity3D 虽然可支持简单模型的建模,但对于军事武器装备等较为复杂的专业模型,通常需要借助第三方建模软件来创建。
3DS Max是一款功能强大、操作简便的建模软件[9-10],使用3DS Max建模的流程图如图2所示。
图2 建模流程图
首先通过实地测量或从设计图纸中获得所需要建立模型的各项形体特征参数,其次利用软件中的基础性状建模或多边形建模等方法组合建立起对应的三维模型,然后给模型选取添加适当的材质,再制作模型所需的漫反射贴图、法线贴图等不同类型的贴图,最后对创建好的模型进行调整优化,并导出为Unity3D 所支持的.FBX或.OBJ格式的文件。
2.3 环境以及粒子特效
为了进一步提升仿真环境的真实性,通常还需要在场景中添加雨、雪、雾等自然气候环境。这些气候环境效果的实现通常是粒子系统(particle system)来实现,粒子系统是一种应用于计算机图形学中模拟不规则物体的比较实用的建模方法,在构造和模拟物体的时候,粒子系统可以明显突出物体的实时性和动态效果,因此,粒子系统经常被用来模拟雨、雪、雾等气候环境和爆炸、火光、流光等特殊效果。在Unity3D 中可以实现不同的天气效果,用户可以根据所需的天气状况选择添加不同种类的特效来模拟真实环境中的气候环境,极大地提高虚拟场景的逼真程度。
目前,Unity3D 可以通过功能强大的插件来模拟多种天气环境,常见的插件主要有Weather Maker、Unity Enviro、UniStorm等。其中,Weather Maker 是Unity3D 中功能比较完善的集天气、地形覆盖、水和天空等一体的模拟插件,可以便捷地模拟雨、雪、雾、冰雹等各类气候情况,并且模拟出的气候环境支持与场景内其他模型的碰撞检测,使得场景效果更加真实。
仿真环境中的爆炸、火焰效果是在粒子系统的基础上实现的一种物理模型,再添加上纹理贴图来实现对应效果;对于烟雾的模拟和渲染则需要采用动态图像渲染法,通常是采用Billboard 算法将战场上爆炸场景中的关键帧制作成纹理贴图,再采用线性插值的算法来实现烟雾的动态渲染和模拟[11-12]。
2.4 用户界面
为了便捷地实现用户界面,Unity3D 内部集成了NGUI 和UGUI 组件,用户可以直接通过图形化方式来绘制用户界面。UGUI 主要将NGUI中的基础功能组件进行封装,还通过对UI 组件的分层设置来控制UI 组件的渲染流程和顺序,这种方式能有效地解决NGUI中多重锚点之间的控件分布,控制操作复杂的情况;另外,UGUI系统中也内置了许多常用的基础UI 控件以及布局控件,按照需求通过合理搭配以及动态加载这些基础控件就可以在Unity3D 中完成复杂的用户界面设计。
3 辅助控制
3.1 语音控制
为了提高仿真系统的操控便捷性,可以在系统中引入语音控制。百度语音是百度公司开发的人工智能系列产品,它具有十分强大的语音功能。百度语音不仅能够实现语音智能搜索,还可以下达语音控制指令,通过语音控制来实现我们想要达到的操作。通过百度语音识别出我们下达的语音控制指令,来取代传统的通过键盘、鼠标等的操控方式,让系统有更好的交互控制效果。
在Unity3D 中实现语音控制,可以采用接口调用方式对语音信号在线识别。首先识别外部的音频设备,然后对语音指令进行录制,再对音频资源中的有效信息进行截取,最后将音频文件转化为文本信息,实现将音频输入到文本输入的转化,达到语音控制指令的下达。
3.2 VR设备
虚拟现实技术是一种处于高速发展和探索阶段的新技术,已经在航空航天、医疗实践、室内设计、教学培训等领域崭露头角。虚拟现实仿真系统的特性也正在从3I,即沉浸感(immersion)、交互感(interaction)、想象型(imagination)模式向4I,增加智能化(intelligent)的方向逐步进化。目前虚拟现实技术应用的相关产品主要利用虚拟现实头盔、手套、眼镜等设备进行交互,计算机对接收到的动作和指令信息进行分析处理后传给应用程序,再由设备对用户的视觉、听觉、触觉等不同感官进行反馈输出,由此用户可以深度体验虚拟现实技术带来的真实感。为了支持VR 设备的应用,Unity3D 提供了一种支持手持式和可穿戴设备等VR 设备的应用程序,包含了Unity 开发者使用到的界面功能,为VR设备和Unity 应用程序之间的交互建立了通道。
4 总体架构
仿真推演平台的构建思路是在Unity3D 平台的基础上,通过集成一些必要的插件,组建一套仿真平台开发必备的基础环境。随后在基础环境上实现仿真场景的构建和仿真推演。该仿真平台的架构如图3所示。
图3 仿真平台系统架构图
该平台按照功能模块总共划分为六个部分,分别是辅助控制层、显示层、通信层、业务逻辑层、算法层、数据层,其中数据层与算法层供业务逻辑层调用,业务逻辑层与显示层均通过通信层完成交互,显示层和辅助控制层可以调用业务逻辑层。各层具体功能如下。
(1)显示层。主要负责与仿真相关的场景和UI 界面展示,其中UI 界面是业务逻辑的主要输入端,可以包含选择界面、控制策略界面、多种参数设置界面等。除了显示作用之外,显示层还负责将用户的操作以及输入请求通过Event-System(事件系统)模块转发给业务逻辑层来完成后续的业务逻辑处理。
(2)辅助控制层。主要是语音控制和VR 设备输入控制部分,负责将语音输入的指令或者VR 设备传输的指令信号直接传给对应的业务逻辑部分,从而增加系统的操控性、便捷性和交互性。
(3)通信层。主要负责系统中消息的传递与数据的传输,可以将系统中各个模块进行解耦,模块之间的信息传输基本都通过该层的消息广播中心和EventSystem 模块完成,消息广播中心是通过观察者模式进行设计实现的,其它各个模块可以通过在消息广播中心中订阅事件来实现对特定事件的监听。
(4)业务逻辑层。负责具体的业务逻辑,主要包括各个业务模块,其中有界面管理模块、资源管理模块、场景管理模块、场景交互等,业务逻辑层在完成用户请求的逻辑功能后将结果反馈给显示层进行显示。
(5)算法层。包含系统所涉及到的各种算法模型,主要包括数学模型、运动模型、检测相关算法以及用于图形化建模的模块算法,算法层主要供业务逻辑层进行调用,来完成相应的功能。
(6)数据层。主要包括资源数据、配置数据、推演数据、脚本数据等,这些数据分级分类处理,主要供业务逻辑层调用。
5 结语
基于Unity3D 的游戏引擎中的技术方案,通过模块化的思想构建出作战仿真推演平台,设计了平台整体结构的理论方案设计与实现方式,该平台具有虚拟作战场景逼真、人机交互友好、可复用性强以及可扩展性高等特点。相比其他的渲染系统,Unity3D 能够渲染出更好的场景,能够使开发者更加专注仿真模型的开发;另外辅以智能语音控制和VR 设备的交互体验,对仿真效果的提升有极大的帮助。