admin 管理员组

文章数量: 887021


2023年12月23日发(作者:为什么交流异步电动机存在转差率)

摘 要

摘 要

随着信息时代的发展,虚拟仿真技术取得了长足的进步,人们可以沉浸在通过虚拟仿真技术构建的三维世界当中,可以直接与虚拟世界中的对象进行交互,通过虚拟仿真获得需要的数据和资料。战场场景仿真是虚拟仿真技术在军事上一个非常重要的应用,常规的军事训练和军事演习往往耗费巨大且流程复杂,费效比较高。而通过虚拟仿真技术对战场场景进行模拟,并以可视化的、生动逼真的三维场景显示出来,实验人员可以方便、快捷、直观的对作战过程和细节进行观察,同时可以计算和获取到相应的实验数据,大大节省了时间和成本,具有非常重大的应用意义。

Unity是由英国Unity Technologies公司开发的一个集游戏开发、实时三维动画创建、建筑可视化等功能的跨平台的开发工具。Unity以其酷炫的3D渲染效果和强大的跨平台性闻名,它可以轻松的开发出绚丽逼真的3D内容,然后一键发布到多种平台上。本文主要利用Unity3D结合虚拟仿真技术开发了一个虚拟仿真可视化实验平台,对战场场景和导弹武器的作战过程进行模拟和可视化显示,并进行相应科研数据的计算。

本文对Unity软件的基本模块、主要特性和开发框架进行了详细的介绍,系统阐述了虚拟仿真可视化实验平台的系统需求和难点,包括数学模型的选择、对系统数据计算能力的要求、实时数据更新、场景可视化等。介绍了系统模块化、层次化、跨平台的设计思想,对系统各个层次包括基础层、管理层、功能层的功能进行了详细的介绍。并对系统的主要开发工具、开发语言、注意事项进行了说明,着重介绍了可视化部分的模块设计,并对模型的创建和导入过程,包括模型格式、坐标系以及尺寸的转换进行了详细的介绍。对可视化场景中相机视角、动态信号、碰撞检测、特效模拟等功能模块的实现方法和实现过程进行了阐述,并对场景控制模块,包括视角变换、帧控制和实时截图等功能进行了说明。

文章最后对系统基于TCP的网络通信模块进行了介绍,阐述了授权服务器和非授权服务器的概念,对两种服务器模式的优缺点进行了比较。对客户端和服务器的底层通信方式远程过程调用和状态同步进行了说明,详细介绍了客户端与服务器的建立和通信过程,包括客户端与服务器的主要函数以及服务器端多线程技术的应用。

关键词:虚拟仿真,可视化,Unity3D,战场场景,TCP

I

ABSTRACT

ABSTRACT

With the development of the information age, virtual simulation technology has made

great progress, people can immerse in the virtual world through the virtual simulation

technology, which can directly interact with the objects in the virtual world, through the

virtual simulation to obtain the necessary data .The battlefield scene simulation is a very

important application of the virtual simulation technology in the military. Conventional

military training and military exercises are costly and complicated. To simulate the

battlefield scene by the virtual simulation technology and display the three-dimensional

scene vividly and realistically.

The experimenter can observe the combat process and

details conveniently, quickly and intuitively.

At the same time the experimenter can

calculate and obtain the corresponding experimental data. It can significantly save time

and cost, has a very significant application significance.

The Unity is a cross-platform development tool developed by Unity Technologies, which

integrates game development, real-time 3D animation creation, and building visualization.

Unity is known for its cool 3D rendering and powerful cross-platform, it can easily

develop a brilliant and realistic 3D content, and then a key release to a variety of

platforms. In this paper, a virtual simulation visualization platform is developed by using

Unity3D and virtual simulation technology. The combat process of battlefield scene and

missile weapon is simulated and visualized, and the corresponding scientific data are

calculated.

In this paper, the basic modules, main features and development framework of Unity

software are introduced in detail. And this paper systematically describes the system

requirements and difficulties of virtual simulation visualization platform, including the

selection of mathematical model, the requirement of system data computing ability, real -

time data update and scene visualization. This paper introduces the design idea of

modularization, hierarchy and cross platform of the system, and introduces the functions

of each layer of the system, including the basic layer, management layer and function

layer. And the main development tools of the system, the development language, notes

were described. The module design of visualization part is introduced. And the creation

III

西安电子科技大学硕士学位论文

of the model and the introduction process, including the model format, coordinate system

and the size of the conversion are introduced in detail. In this paper, the realization

method and the realization process of the camera visual angle, dynamic signal, collision

detection and special effect simulation are discussed. And the scene control module,

including the perspective transformation, frame control and real-time screenshots and

other functions are described.

At the end of this paper, the network communication module of the system is introduced,

the concept of authorization server and unauthorized server is expounded, and the

advantages and disadvantages of the two server modes are compared. This paper

describes the remote process call and state synchronization of the underlying

communication mode between client and server, and introduces the establishment and

communication process of client and server in detail, including the main function of

client and server and the application of server-side multi-threading technology.

Keywords:virtual simulation,visualization, Unity3D,Battlefield scene,TCP

IV

插图索引

插图索引

图2.1 Unity组成模块 .................................................................................................. 8

图2.2 Unity支持的21种平台 .................................................................................. 10

图2.3 Unity框架结构图 ............................................................................................ 11

图3.1 可视化虚拟仿真实验平台模块设计 ............................................................. 18

图4.1模型格式转换流程 .......................................................................................... 22

图4.2右手坐标系 ...................................................................................................... 22

图4.3左手坐标系 ...................................................................................................... 22

图4. 2 Scale Factor ..................................................................................................... 23

图4. 3 显示单位 ........................................................................................................ 24

图4. 4 系统单位 ........................................................................................................ 24

图4.5添加光源前的场景俯视图 .............................................................................. 25

图4.6添加光源后场景俯视图 .................................................................................. 25

图4.9添加天空盒前的场景 ...................................................................................... 26

图4.7添加天空盒后的场景 ...................................................................................... 26

图4.11 Smooth Follow脚本 ...................................................................................... 28

图4.8信号模型 .......................................................................................................... 28

图4. 13动态信号效果图 ........................................................................................... 29

图4. 14 导航地图相机参数 ...................................................................................... 30

图4.15 导航地图效果图 ........................................................................................... 31

图4.16 导弹添加胶囊碰撞体后效果图 ................................................................... 31

图4.17 飞机添加胶囊碰撞体后效果图 ................................................................... 31

图4.18 导弹尾焰 ....................................................................................................... 33

图4.19 飞机尾焰 ....................................................................................................... 33

图4.20 导弹引爆 ....................................................................................................... 33

图4.21 飞机爆炸起火 ............................................................................................... 33

图4.22 粒子发射器 ................................................................................................... 34

图4.23 粒子动画器 ................................................................................................... 34

图4.24 粒子渲染器 ................................................................................................... 34

图4.25 视角拉远 ....................................................................................................... 35

图4.26 视角拉近 ....................................................................................................... 35

V

西安电子科技大学硕士学位论文

图4.27 前视效果 ....................................................................................................... 35

图4.28 后视效果 ....................................................................................................... 35

图4. 29 GUI界面 ....................................................................................................... 37

图4. 30 Unity程序发布界面 ..................................................................................... 38

图5.1 授权服务器 ..................................................................................................... 42

图5.2 非授权服务器 ................................................................................................. 43

图5.3 客户端建立流程图 ......................................................................................... 44

图5.4 TCP连接成功后的消息窗口 .......................................................................... 45

图5.5 多线程服务器建立流程图 ............................................................................. 46

VI

表格索引

表格索引

表4.1 Unity支持的建模软件和模型格式 ................................................................ 21

VII

符号对照表

符号对照表

符号

mm

cm

m

inch

符号名称

毫米

厘米

英寸

IX

缩略语对照表

缩略语对照表

缩略语

VR

GPU

I/O

GUI

C/S

TCP

英文全称

Virtual Reality

Graphics Processing Unit

Input/Output

Graphical User Interface

Clien/Server

Transmission Control Protocol

XI

中文对照

虚拟现实

图形处理器

输入/输出

图形用户界面

客户端/服务器传输控制协议

目 录

目 录

摘 要 .................................................................................................................................... I

ABSTRACT ....................................................................................................................... III

插图索引 .............................................................................................................................. V

表格索引 ............................................................................................................................ VII

符号对照表 ......................................................................................................................... IX

缩略语对照表 .....................................................................................................................

XI

目 录 .............................................................................................................................. XIII

第一章 绪论 ......................................................................................................................... 1

1.1虚拟仿真的研究背景 ............................................................................................. 1

1.2虚拟仿真的国内外研究现状 ................................................................................. 2

1.3虚拟仿真的研究意义 ............................................................................................. 3

1.4本文的主要研究内容 ............................................................................................. 4

1.5本论文的章节安排 ................................................................................................. 4

第二章 软件基础介绍

......................................................................................................... 7

2.1 Unity软件简介 ....................................................................................................... 7

2.2 Unity相关技术介绍 ............................................................................................... 8

2.2.1 Unity的基本模块 .......................................................................................... 8

2.2.2 Unity的主要特性 .......................................................................................... 9

2.2.3 Unity3D开发框架 ....................................................................................... 10

2.3 Untity3D的应用领域与应用前景 ....................................................................... 12

2.4本章小结 ............................................................................................................... 13

第三章 基于Unity3D的可视化虚拟仿真实验平台 ...................................................... 15

3.1系统需求和难点分析 ........................................................................................... 15

3.2系统设计思想 ....................................................................................................... 15

3.3系统开发环境 ....................................................................................................... 16

3.3.1主要开发工具 .............................................................................................. 16

3.3.2开发语言 ...................................................................................................... 17

3.3.3应用程序开发注意事项 .............................................................................. 17

3.4 系统模块设计 ...................................................................................................... 17

3.5 本章小结 .............................................................................................................. 19

XIII

西安电子科技大学硕士学位论文

第四章 场景可视化模块 ................................................................................................... 21

4.1模型创建和导入 ................................................................................................... 21

4.1.1 模型格式转换 ............................................................................................. 21

4.1.2坐标系转换 .................................................................................................. 22

4.1.3模型尺寸变换 .............................................................................................. 23

4.1.4 模型导入时的其它注意事项 ..................................................................... 24

4.2 场景可视化仿真 .................................................................................................. 24

4.2.1场景初始化 .................................................................................................. 24

4.2.3预设体与动态信号模型 .............................................................................. 28

4.2.4导航地图 ...................................................................................................... 29

...................................................................................................... 31

4.2.5碰撞检测

4.2.6特效与粒子系统 .......................................................................................... 32

4.3场景控制 ............................................................................................................... 35

4.3.1视角变换 ...................................................................................................... 35

4.3.2帧控制和GUI界面 ..................................................................................... 36

4.3.3实时截图 ...................................................................................................... 37

4.3.4一键发布 ...................................................................................................... 37

4.4本章小结 ............................................................................................................... 38

第五章 网络通信模块 ....................................................................................................... 41

5.1 Qt通信模块简介 .................................................................................................. 41

5.2 服务器模式与底层通信方式 .............................................................................. 42

5.3 网络通信客户端与服务器的建立 ...................................................................... 44

5.4 本章小结 .............................................................................................................. 48

第六章 总结与展望 ........................................................................................................... 49

6.1全文工作总结 ....................................................................................................... 49

6.2进一步研究与展望 ............................................................................................... 49

参考文献 ............................................................................................................................. 51

致 谢 ................................................................................................................................... 55

作者简介 ............................................................................................................................. 57

1.基本情况 .................................................................................................................. 57

2.教育背景 .................................................................................................................. 57

3.攻读硕士学位期间的研究成果 ........................................................................... 57

3.1参与科研项目及获奖 ..................................................................................... 57

XIV

第一章 绪论

第一章 绪论

1.1虚拟仿真的研究背景

虚拟仿真即对现实场景的虚拟化仿真,是虚拟现实(Virtual Reality)技术的一种[1]。二十世纪以来的信息技术革命给人类世界带来了翻天覆地的变化,人类为了更好地生存必须不停地加深对环境,对我们生存的这个世界的认知。但是宇宙的浩瀚无垠和世界的错综复杂决定了人类必须依靠强大的工具来拓展、延伸、增强自己的思维、肢体和感官[2]。在信息时代,每时每刻都会产生海量的信息和数据,而计算机已成为人类获取、分析、处理信息,改造世界的“强大的工具”。计算机自诞生后很快便成为了信息处理的中心,传统上的很多信息处理都是“人适应计算机”,这在很大程度上弱化了人的主观能动力,过分强调了计算机这个工具。为解决这一问题,实现以人为中心,让“计算机适应人”,形成更加合理的人机交互环境,虚拟现实技术应运而生[3]。

1965年计算机图形学的奠基人Ivan Sutherland以他的丰富的想象力和敏锐的洞察力提出了一种全新的图形显示技术,并发表了“The Ultimate Display”一文[4]。他设想通过这种图形显示技术,人们可以直接沉浸在计算机生成的三维世界中,就像生活在现实世界中一样,虚拟世界中的对象可以被观察者感知和操控,并且可以通过声音、画面等方式与观察者进行交互,这便是虚拟现实技术的起源[5]。虚拟仿真技术最早应用于军事领域,军事模拟技术可以说是它的前身。早期美军在对飞行员进行培训的时候如果用实机进行训练危险性会比较高,同时成本较大,希望能够发明一些模拟装置来取代费效比较低的实机训练,模拟训练飞行器由此诞生这是虚拟现实技术最初的应用[6]。计算机的出现和信息化社会的发展使得虚拟仿真技术在过去几十年中实现了飞速的发展。虚拟仿真技术的应用不再局限于国防和军事领域,在民用领域也发展迅速,虚拟仿真技术已经走入普通人的生活。虚拟房间、虚拟汽车、虚拟环境、虚拟人物等等给装修、汽车、游戏等等方面提供了非常大的便利同时节省了成本,而且虚拟仿真技术还有很大的发展空间[7]。

虚拟现实技术以图形和图像的形式把复杂的数据呈现在人们面前,同时还提供简单舒适的交互接口,使得人们能够以更加方便、更加快捷的方式获取和学习知识技能。在航空领域,从飞行器的设计、开发、实验,到飞行员的培训,再到复杂的飞行数据例如轨迹、轨道、坐标的采集还有战场情况的模拟,都离不开虚拟仿真技术[8]。尤其是战场情况的模拟,虽然现在是和平年代,但是国际形势错综复杂,部分国家和地区战乱频繁,我们必须保持必要的警惕,增强国防实力。但是军事演习1

西安电子科技大学硕士学位论文

对人力和物力的消耗是非常大,对国家的财政是非常大的负担,因此依靠虚拟仿真技术模拟真实战场情况,提高部队作战能力同时节省资源是一个非常经济、实用的选择[9]。随着我国的发展和国防投入的增大,军事航空航天装备发展迅速,各种高精尖装备不断涌现。很多高精尖军事装备具有易损耗、一次性使用、无法回收的特点,这造成了精密军事装备经费投入多、研发周期长的特点,对我国国防事业的发展产生了很大的限制[10]。在军事装备的研发过程中结合虚拟仿真技术,可以实现实验场景、实验数据的可视化显示,并且可以进行无限次的实验,节省成本、缩短研发周期,一举多得。

我国的虚拟仿真技术近年来取得了飞速的发展,相关的企业和产品如雨后春笋般涌现,但与国外相比,我国的虚拟仿真技术还相对薄弱,相关从业人数较少,与国外还有较大差距[11]。目前国际上主流的虚拟仿真软件均由国外研发,国内还没有能与之相媲美的软件和技术,这在很大程度上限制了我国虚拟仿真技术的发展和应用。随着信息化社会的发展,虚拟仿真技术在国防、工业以及社会生活中的应用价值正逐步体现,我们对虚拟仿真技术的需求也越来越多,提高对虚拟仿真技术的重视,加大对虚拟仿真研究的投入,实现虚拟仿真技术的快速发展,打破发达国家的技术壁垒已成为迫在眉睫的事情[12]。

1.2虚拟仿真的国内外研究现状

目前来看,虚拟仿真的前景非常广阔,利用虚拟仿真技术,不用去商店就可以对衣服进行试穿,不用建造样板房就可以查看房间的装修效果,不用去博物馆就可以看到一模一样的艺术品,不用出国就可以看到国外著名景点的魅力景色,甚至我们还可用虚拟仿真技术去体验登陆月球、遨游太空时的场景[13]。虚拟仿真技术就像智能手机的出现一样对我们的传统生活产生强大的冲击,改变着我们的生活观念,不断变革着我们的生活习惯,给我们带来越来越多的便利,因而各国、各大公司对虚拟仿真技术的兴趣也越来越高,对虚拟仿真技术的投入也越来越大,各种虚拟仿真产品层出不穷,例如虚拟游戏头盔、VR眼镜、VR电影视频等等[14]。

虚拟仿真技术的发展当前也遇到了一些困难:一是研发成本的控制,具有良好用户体验的产品往往需要非常高昂的成本,而成本的高昂会使得产品的定价较高,影响产品的销售[15]。二是虚拟仿真产品与人的交互还没有统一的标准,传统的交互方式并不适配虚拟仿真技术,理想的交互方式是通过人的声音、感官等直接进行交互,但是目前这方面的技术还非常的不成熟,比如VR眼镜使用时间长了会产生眩晕感,因而通过声音、感官进行交互的方式还没能够大规模的商用[16]。

国内对虚拟仿真技术的研究相对国外起步较晚,目前的主流虚拟仿真软件和虚2

第一章 绪论

拟仿真设备基本都是国外研发的,国外的虚拟仿真技术产业已经相当发达,而国内还处于起步阶段,但是已引起政府的注意,近年来政府加大了对虚拟仿真技术相关项目的投资,北京航天大学、浙江大学、哈尔滨工业大学等率先研究虚拟仿真技术的高校已经取得了一定的成果[17]。

1.3虚拟仿真的研究意义

数据是传统获取信息的方式,我们对要研究的物体进行测量、实验,对实验结果进行记录,最终的实验结果是以数据的形式呈现在我们面前的。而虚拟仿真呈现给我们的是一个三维立体的世界,让我们以一种更加直接的方式对我们要研究的物体进行观察,同时提供给我们人性化的交互接口,使我们能够简单便捷的修改试验参数并重复试验[18],相比传统的研究方法,可视化虚拟仿真的优点主要有以下几点:

虚拟仿真解决了空间对项目设计的限制。传统的实体模型由于空间的限制,(1)无法将我们需要的所有细节完整的呈现出来,我们只能通过实体模型进行大概观察,并且无法交互,要想对模型进行改动就必须重新制作[19]。而虚拟仿真完美的解决了这一问题,虚拟仿真提供给我们了一个无限的空间,我们可以把任何细节数据加入进去然后通过三维画面呈现出来。

(2)虚拟仿真呈现的是动态的可交互的画面。传统的静态画面或实体模型只能展示项目的某个方面或某几个方面,而且往往需要配以文字说明,不直观也不够全面,虚拟仿真呈现给我们的是一个动态的、可交互的画面,我们可以根据需要查看任何细节,可以加入声音、光线等自然因素,可以对细节进行放大缩小,可以从任意角度进行观察[20]。

(3)虚拟仿真大大提高了项目研发的费效比。虚拟仿真中的一切物体都是假的,相比制作和构造真实的模型或环境所需的成本较低,同时我们要对模型和环境进行修改,只需要简单的输入一些参数或程序,这大大简化了流程和操作难度,从而节省了时间和成本。

目前,虚拟仿真技术已经广泛应用于国防和社会生活。政府利用虚拟仿真技术进行城市规划,医院利用虚拟仿真技术培训医生,房地产从业者利用虚拟仿真进行楼盘规划、室内装修,军队利用虚拟仿真技术培训飞行员、模拟战场环境[21]。同时,虚拟仿真在娱乐、艺术与教育方面也取得了非常好的效果,如VR游戏、VR博物馆、虚拟实验室等等,可以说虚拟仿真技术正在慢慢改变我们的生活[22]。重视虚拟仿真技术的发展和应用,加大虚拟仿真技术的投入,加快虚拟仿真技术的研究,对我国国防、工业和社会生活各领域的发展具有重要意义。

3

西安电子科技大学硕士学位论文

1.4本文的主要研究内容

本论文的主要研究内容是基于Unity的三维虚拟仿真技术,完成可视化虚拟实验平台的开发。可视化虚拟实验平台可以实现对战场环境的实时动态观察,对我方和敌方目标的坐标位置、飞行轨迹、飞行姿态的实时监测,通过三维场景对战场形势直观地体现方便战略战术的制定并对最终的打击毁伤效果进行评估。本文的主要内容可分为如下几部分:

(1)可视化虚拟实验平台的搭建。可视化虚拟实验平台主要分为三个模块:可视化三维场景演示模块、三维场景显示控制模块、网络通信模块。可视化三维场景演示模块完成了对作战场景的构建和可视化显示,三维场景显示控制模块完成了对三维场景动画帧率、视角等的控制,网络通信模块实现了可视化三维场景演示模块与其它模块的网络通信交互。

基于Unity的可视化三维场景演示模块。基于C#语言,使用MonoDevelop(2)编程软件调用Unity相关编程接口。介绍了三维模型的建立、运动轨迹的设置、特效的创建、粒子系统和碰撞检测的使用。实现了与三维场景显示控制模块和网络通信模块的集成与整合,使用Unity 2D和3D模块搭建了人性化且美观的界面。

(3)、集成网络通信模块。这部分内容对可视化虚拟实验平台各模块之间的通信方式和通信技术进行了详细的介绍,基于C++及C#网络编程实现了各模块之间的命令、数据等各种信息的传递,重点对Unity网络编程进行了介绍。

1.5本论文的章节安排

(1)第一章,绪论。主要介绍了虚拟仿真的研究背景,对虚拟仿真技术的国内并简略介绍了本文主要研究的三个方面的内容。 外研究现状和研究意义进行了说明,(2)第二章,对Untiy软件进行了介绍。重点介绍了物理引擎、地形编辑器、着色器等Unity的基本模块,并对Unity的主要特性、开发框架和应用领域进行了介绍。

(3)第三章基于Unity3D的可视化虚拟仿真实验平台。主要介绍了可视化虚拟仿真实验平台的系统需求和难点,对可视化虚拟仿真实验平台的设计思想进行了说明。介绍了系统的开发环境,并对可视化虚拟仿真实验平台最重要的部分可视化部分的模块设计以及每个模块的主要功能和作用进行了介绍。

(4)第四章,场景可视化模块。本章对模型的创建和导入过程,包括模型格式、坐标系以及尺寸的转换进行了详细的介绍。对可视化场景中相机视角、动态信号、碰撞检测、特效模拟等功能模块的实现方法和实现过程进行了阐述,并对场景控制模块,包括视角变换、帧控制和实时截图等功能进行了说明。

4

第一章 绪论

(5)第五章,网络通信模块。对系统基于TCP的网络通信模块进行了介绍,阐述了授权服务器和非授权服务器的概念。对客户端和服务器的底层通信方式远程过程调用和状态同步进行了说明,详细介绍了客户端与服务器的建立和通信过程,包括客户端与服务器的主要函数以及服务器端多线程技术的应用。

(6)第六章,总结与展望。对全文所做工作进行了总结,并指出了所搭建的系统有待提升和完善的地方。

5

西安电子科技大学硕士学位论文

6

第二章 软件基础介绍

第二章 软件基础介绍

2.1 Unity软件简介

Unity是由英国Unity Technologies公司开发的一个集游戏开发、实时三维动画创建、建筑可视化等功能的跨平台的开发工具[23]。Unity以其酷炫的3D渲染效果和强大的跨平台性闻名,它可以轻松的开发出绚丽的2D和3D内容,然后一键发布到多种平台上[24]。跨平台为开发者们节省了平台移植所需的时间和精力,平台之间的差异对项目的开发进度有很大影响,比如硬件、操作方式、屏幕尺寸等条件的不同会使程序在不同平台部署时出现各种问题,因此开发者需要花费大量的时间和精力去做平台间的移植开发,而在这方面消耗过多精力并不值得[25]。Unity已经形成了一条完整的生态链,它的资源商店Asset Store上面拥有丰富的Unity Technologies和社会上的开发人员上传的各种免费和付费的资源,开发者们可以非常容易的在资源商店里面检索到自己需要的内容,细腻的纹理、逼真的模型、多样的插件、酷炫的动画、项目案例和Unity教程等应有尽有,并且可以通过Unity软件直接导入,方便了广大开发者们的学习和使用。Unity还拥有非常活跃的社区,广大的开发者和爱好者可以在这里相互交流学习,反馈和解答问题,分享Unity技术和经验[26]。

Unity从诞生到现在不过十几年的时间,在这么短的时间里,Unity取得的成绩令人惊叹。据统计,苹果app store中有超过1500款的应用是用Unity研发的,这与Unity强大的易用性是分不开的[27]。在Unity中,对象的创建和外部资源的导入简单便捷,并且各种对象可以通过代码紧密的连接在一起并通过脚本非常方便的对对象进行控制。Unity具有“所见即所得”的操作特点,通过可视化的编辑器,开发者只比如创建包含多个部分的、复杂的需要一个简单的拖放动作就可以完成各种任务,对象,给变量赋值,连接脚本等等,这大大缩短了开发一个项目的时间,在竞争激烈的今天,时间即生命,产品早发布一天,便可以占据很大的优势。Unity Technologies公司还专门成立了一个Unity Games部门,负责将用Unity开发的项目放到各种平台上进行推广,这样很多中小型的团队得到了与大型公司和团队竞争的机会,并且这些开发团队就可以省出做宣传的时间和精力专心做项目[28]。

Unity其实并不是目前主流的战场和飞行器仿真软件,它目前主要用于游戏制作,是一款非常出名的游戏引擎,因为国内目前使用的仿真软件例如VegaPrime、OSG等都是一些使用很久的软件,有的甚至已经停止更新,而Unity3D作为目前最火的3D引擎之一,有非常多的独到的优点,本文是对利用Unity3D进行战场和飞行器仿真的大胆尝试。

7

西安电子科技大学硕士学位论文

2.2 Unity相关技术介绍

2.2.1 Unity的基本模块

图2.1 Unity组成模块

物理引擎:物理引擎是一个模拟牛顿力学模型的计算机程序,通过控制和改变质量、摩擦力、速度、空气阻力等条件来模拟和预测各种条件下的物理效果[29]。Unity内置了NVIDIA开发的PhysX物理引擎,PhysX物理引擎是被很多游戏大作采用的业界非常知名的物理引擎。PhysX可以调用GPU进行浮点运算,因而可以很轻松的进行大计算量的数学计算。用户可以通过PhysX逼真、高效地完成对各种物理效果的模拟,复杂特效的生成,是场景画面生动逼真[30]。

地形编辑器:Unity的地形编辑器易用而强大,可以通过画刷工具简便快捷地创建各种地形和植被。Unity地形编辑器高效且细腻,开发者可以通过地形编辑器添加山川、树木、草、石头、灌木,并且支持水面特效,地形编辑器还有一个Tree

Creator专门编辑植被的细节,因而可以很容易地创建壮阔茂密的植被景观。

烘焙工具:Unity可以把逼真、自然的光照效果烘焙到纹理上,这样在实时画面绘制时就不需要在进行光照方面的计算,而是采用之前已经烘焙好的纹理,提高了画面的绘制速度并且节省了大量时间[31]。对于一些复杂条件下的光照效果,实时画面绘制时进行计算并不现实,光照纹理可以模拟色彩反弹、移动对象光照、高动态范围光照等自然光照效果,而且保存好的光照纹理可以进行二次处理,比如通过模糊效果获得更加柔和的阴影边缘,从而获得细腻逼真的光影效果。

8

第二章 软件基础介绍

着色器(shaders):Unity内置三大类超过40种的着色器,着色器shader运行在GPU上,它负责的是3D模型三角形的绘制,要想创造出特色鲜明的三维画面就必须学会运用shader,shader对游戏画面具有非常强的控制力,如同PS高手可以用Photoshop编辑出美轮美奂的照片一样,研发者可以用shader营造出各种酷炫的画Unity面效果。每个着色器通常只包含一个参数接口,但是它可以包含多个变量[32]。可以自动选择当前最合适的参数,然后根据参数选择对应的shader,有效地提高了兼容性[33]。因此,Unity的shader具有高性能、灵活、易用的特点。

Mecanim角色动画系统: Mecanim角色动画系统是Unity的一大特色功能,它的功能强大到令人惊叹。利用Mecanim角色动画系统可以创造出各种流畅逼真的动作,能在编辑其中直接设置和编辑控制器和状态机、角色蒙皮、Ik骨骼、混合树、动画重定向等等,使创建出的角色栩栩如生[34]。

粒子系统:粒子系统主要用于制作特效,比如风、喷焰、爆炸、树叶、水纹等等[35]。粒子系统主要分为三个部分:粒子渲染器、粒子动画器和粒子发射器[36]。这三个部分分别控制粒子的一些属性,例如粒子渲染器主要控制粒子的阴影、缩放、渲染模式等渲染效果,粒子动画器可以改变粒子的移动方向和旋转角度,如果只需要创建静态的效果,可以将粒子动画器关闭,粒子发射器主要控制粒子的数量、发射速度、存在时间等。用户还可以通过脚本来控制粒子系统中的单独的粒子从而创建个性化的效果。

2.2.2 Unity的主要特性

通用性强:Unity支持的3D模型格式非常多,几乎涵盖了目前所能见到的所有三维动画创作和渲染软件,例如3ds Max、Lightwave、Maya、Modo、Cinema4D、Blender等[37]。Unity良好的通用性和兼容性使它可以和上述的多数软件协同工作。

综合编辑:Unity编辑器高度整合而且可以扩展,所见即所得,功能强大且容易使用。开发者可以很方便的对场景中的灯光、模型、地形、音频、材质等参数。用户可以根据自己的需求对编辑器界面进行个性化的调整,开发者编写的脚本参数也可以直观地在编辑器中显示,可以通过编辑器对参数进行调整且可以直接看到调整后的效果[38]。用户还可以非常方便使用第三方插件辅助项目开发,Unity具有丰富的第三方插件资源,包含了动画、网络、GUI、材质等各大类,通过使用第三方插件可以对GUI等Unity还不是很完善的功能进行非常好的补充[39]。

跨平台开发,一键部署:Unity用户可以在Mac OS X和Windows平台下进行项目开发然后不用进行任何修改就可以一键发布到各大主流平台,如图2.2所示,Unity支持包括WindowsMac OS XLinuxAndroidIOSWeb等等[40]。因此,开发者不用考虑项目在各平台直接的移植,只需要专心提高项目的质量就可以。

9

西安电子科技大学硕士学位论文

图2.2 Unity支持的21种平台

联网支持:Unity提供了一套完整的网络解决方案,包含了客户端和服务器。目前Unity的网络功能还算不上特别出色,但是易用性较高,开发者即使对计算机网络了解较少,也可以很快上手并做出具有联网功能的项目。对于一些对网络性能要求比较高的项目,可以用RakNet、Photon等第三方的网络解决方案[41]。

内容丰富的资源商店(Asset Store):资源商店是一个非常便捷的在线资源商店,资源商店里有大量的免费或付费的资源。绝大多数项目开发所需的资源开发者们都比如扩展插件、特效效果、项目源码、3D模型、学习教程、可以在资源商店里找到,脚本代码等等[42]。开发者可以通过资源商店里的资源节省时间和成本,也可以通过资源商店销售自己的资源或产品。

逼真的画质:强大灵活的着色器,对DirectX11的完美支持,逼真的光效系统,强大的物理引擎等等让Unity可以创造出令人惊艳的画质,这也吸引着越来越多的开发者使用Unity进行项目开发。

使用成本低:Unity的授权费相对于其它引擎动辄数百万美元的授权费相比非常便宜,而且官方还提供了供开发者学习用的免费版的Unity,虽然相对专业版少了很多功能,例如实时光影、支持LOD、NavMesh等等,但有时对于个人学习而言已经足够。另外,专业版的Unity还支持30天的免费试用。

2.2.3 Unity3D开发框架

件Unity3D的开发框架总体来看分为四部分:应用层(Application)、组景(Scene)[43]。 (Component)、对象(Gameobject)、场

10

第二章 软件基础介绍

应用层Unity框架图2.3 Unity框架结构图

场景对象组件应用层Application:应用层Application是Unity3D中经过封装的具有独立功能的应用程序,例如刚体、天空盒、碰撞体、山体、各种光照等等。开发者可以在项目中直接调用这些功能,省去了对这些功能单独进行开发的时间和精力。同时根据需求的不同,开发者还可以对这些功能模块的细节进行调整来满足项目需求。应用层Application是Unity3D开发框架中最底层的,也是必不可少的模块。

组件Component:Unity中的对象都是由各种组件和脚本构成的。每个对象都必须具备的组件是Transform组件,另外还有脚本、Mesh、Physics、Rendering、Effects、Audio等可选组件。对于一些常用的功能,开发者可以通过直接调用相关组件来实现。但是调用组件时只能进行微调,对于一些个性化的需求单纯靠调用现成的组件来完成比较困难,这时就用到了脚本。脚本也是组件的一种,但是更加灵活,对于一些比较复杂的、个性化较强的需求都可以用自己编写脚本来实现,只需要将编写好的脚本拖放到对象上便可以完成脚本和对象的绑定。

对象Gameobject:对象是由组件构成的,它既可以是包含很多组件和属性,具备各种形状和颜色的物体,例如人物、花草、树木、建筑、水面、汽车、飞行器等等,也可以是单纯创建出来作为脚本的依附对象,用来触发某些功能的空的对象。从这来看,对象的范围非常很广,任何项目中的物体基本都可以称之为对象,各种对象最终组成了项目,因此,为项目设置合理的对象对于项目的最终成败具有非常重要的意义。

11

西安电子科技大学硕士学位论文

场景Scene:场景就是项目创建出来的虚拟世界,一个虚拟仿真项目就是由一个个场景组成的,而场景是由众多形形色色的对象以及依附在对象上的各种组件构成的。各种对象、组件和应用层模块就好比建房子的基石,而场景就是最终建好的房子。一个作品的好坏很大程度取决于场景的效果,不同的场景之间的衔接变化同样也很重要,好的作品往往都有令人惊艳的场景。

2.3 Untity3D的应用领域与应用前景

Unity平台无论在开发周期与开发成本,在开发模式,在功能的扩展性、灵活性,在跨平台的移植性上面都具有非常大的优势。目前,用Unity3D来进行游戏开发已经是市场上的主流,尤其是随着移动设备的普及,利用Unity开发的项目能够一键部署到包括移动平台的各大平台的优势越发的体现了出来,这吸引着越来越多的公司和开发者加入到Unity阵营中来。

当前,3D引擎技术的在很多领域展现了其应用价值,Unity3D的应用范围也越来越广泛:

城市规划领域:利用Unity3D进行城市建模,我们可以很轻松的对建筑的高度,建筑的位置,建筑的颜色材质,对绿化的密度进行设置和修改,从而加快了设计方案的推进速度,提高了设计方案的修正效率和质量,同时节省了大量成本。

室内设计领域:在房屋进行装修之前,往往都需要先进行装修设计,要想反映出没个装修细节意味着大量的图纸,而且只有专业人士能看懂,普通人很难从设计图纸上对装修效果有直观的认识。借助Unity3D引擎将设计理念和效果进行数字化,消费者可以在虚拟房间中任意变换视角和位置进行观察,从而对设计效果有直观的感知,方便与设计师交流修改意见。

艺术领域:利用Unity3D,结合网络技术,可以将艺术品的展示和保护工作带入一个崭新的领域。通过对艺术品的数据进行采集并进行三维建模,可以把艺术品的光影、空间、位置、色彩等数据永久的保存下来。还可以利用这些数据和技术简化艺术品修复的难度,提高艺术品修复的精度和效果,并可以通过Unity3D构建虚拟博物馆、虚拟画廊,并且通过网络打破地域的限制,实现艺术品资源的共享,将各个地域的艺术品生动、逼真地展示在全世界人民的面前。

地理领域:利用Unity将建筑物、三维地面模型结合街区规划融合到虚拟场景中,将城市景观和建筑风貌完整的呈现出来,用户可以很直观的在显示屏上看到逼真的街区景观,结合电子地图,可以进行测绘、查询、浏览、漫游等一系列的活动,为城建规划、交通旅游、物业管理、社区服务、消防安全等提供了非常大的便利。

12

第二章 软件基础介绍

军事领域:军事演习和模拟训练一直都是军事领域的重要课题,它们共同的特点是成本高、安全性低,很容易造成安全事故,尤其是在进行飞行员训练、大规模军事演习时,一旦出现事故往往是机毁人亡的局面,利用虚拟现实技术结合3D引擎开发虚拟训练系统和进行战场场景仿真,可以在初期大大提高军事训练的效果,节省成本,提高费效比。现在,利用虚拟环境和设备进行飞行员、航天员训练,武器试验及作战仿真已经成为军事领域不可或缺的一环。

2.4本章小结

本章主要对Unity软件进行了介绍,首先对Unity软件进行了简介,接着介绍了物理引擎、地形编辑器、着色器、粒子系统等Unity的基本模块,对每个模块的功能和作用进行了简略的说明。接下来介绍了Unity的主要特性,对Unity的跨平台性能、通用性、综合编辑性能和画质等特性进行了着重介绍。然后对Unity的开发框架进行了介绍,介绍了应用程序层、对象、组件、场景等概念。最后对Unity的应用领域进行了介绍,重点介绍了Unity在城市规划领域、室内设计领域、艺术领域、地理领域和军事领域的应用。

13

西安电子科技大学硕士学位论文

14

第三章 基于Unity3D的可视化虚拟仿真实验平台

第三章 基于Unity3D的可视化虚拟仿真实验平台

3.1系统需求和难点分析

可视化虚拟仿真实验平台是利用Unity3D仿真引擎结合虚拟仿真技术对战场场景包括我方武器和敌方飞行目标进行实时仿真,从而对军事武器的性能、对敌方目标的毁伤效果进行检验评估同时辅助战场指挥决策的综合性仿真软件平台。

可视化虚拟仿真实验平台是在实时网络和操作系统之上搭建好系统运行支撑平台,然后在系统支撑平台上开发而成的。可视化虚拟仿真实验平台的核心就是系统运行支撑平台,系统运行支撑平台为可视化虚拟仿真实验平台提供数据管理服务、网络通信服务、可视化显示服务、仿真任务的调度服务以及提供软件系统应用程序接口等各项服务。另外,除了在功能方面有很多的需求,在性能方面同样有很高的要求,尤其是作为一个实时系统,对数据传输速度和响应时间等方面的要求非常苛刻。可视化虚拟仿真实验平台是一个非常复杂的系统,涉及到的技术领域非常多,综合来看,虚拟实验平台在设计时的主要要求和难点有:

(1)选择合适的、多样的数学模型。可视化虚拟仿真实验平台是一个非常复杂的系统,这必然会涉及到大量的数学计算和各种各样的数学模型,如何选择合适的数学模型是一个非常大的挑战

(2)数据计算速度要快。因为要处理的数据量非常大,比如飞行速度数据、飞行姿态数据、飞行轨迹数据以及各项初始条件和参数数据,要想保证系统的流畅运行,必须要有非常强的数据计算能力。

(3)实时性。战场形势瞬息万变,这就要求可视化虚拟仿真实验平台在进行各项指令和数据的发送时延迟要尽可能的小。可视化虚拟仿真实验平台的复杂性决定了一方面要对复杂的模型组合、灵活的仿真实验策略、人性化的交互界面进行协调,另一方面要实现对大规模数据的实时计算,这给可视化虚拟仿真实验平台的设计造成了相当大的困难。

(4)作战过程场景可视化。在进行物理和数学计算的同时,要把敌我双方的实时动态生动、逼真的显示出来。要想达到理想的效果,作战过程场景可视化是非常重要的一环,单靠数据很难让人对战场情况有直观的认识,因此不仅要把作战场景可视化而且要做到生动逼真。

3.2系统设计思想

可视化虚拟仿真实验平台作为一个复杂的系统,要想使系统完成最初的预期,15

西安电子科技大学硕士学位论文

有良好的用户体验,必须有一个好的设计思想。遵循面向对象的设计原则,按照软件设计的规范,可视化虚拟仿真实验平台的主要设计思想如下:

(1)模块化

将虚拟实验平台对象模型根据功能划分为集成在一起的多个子模块,并把仿真运算、数学模型、事件和消息响应、I/O管理等封装在响应的子模块的内部,模块划分原则上尽可能与物理系统保持一致。

(2)层次化

采用层次化的结构设计,整个结构分为基础层、管理层和功能层。每一层又划分为若干子模块,并作为下一层次的支撑。基础层的主要功能是底层支持,包含算法库、工具库、数据库、文件I/O等模块。管理层负责数据通讯、数据管理、GUI交互界面管理,并对可视化虚拟仿真实验平台的进程进行调度和管理。功能层的主要组成部分是计算模块,包含众多的消息函数、功能函数和数据结构,完成各个数学模型的数据计算。同时采用事件和消息处理机制实现对虚拟仿真各层次的控制和协调调度,把各个层次有机的结合在一起。

(3)交互界面

使用标准Windows风格的界面作为可视化虚拟仿真实验平台的界面。作为一个可视化虚拟仿真系统,具有美观的、人性化的人机交互界面非常重要,Windows风格界面作为经典的获得绝大多数人认可的界面成为首选。

(4)保证良好的扩展性和兼容性

采用具有工业化标准的开发平台、操作系统、数据接口和编程语言来保证多平台间的兼容性,使用具有良好的跨平台性能的开发工具来保证多平台间的可移植性,通过层次化和模块化的数据提高可视化虚拟仿真实验平台软件的扩展性和二次开发能力。

3.3系统开发环境

3.3.1主要开发工具

可视化虚拟仿真实验平台采用的主要开发工具:Unity4.7版本,Monodevelop集成开发环境。

MonoDevelop是一个开源的主要在Windows、Linux、Mac OS X上进行项目开发的开发环境,它具有很多强大实用的功能和特性,主要用于.NET Framework与Mono软件的开发[44]。Monodevelop还集成了很多其它优秀开发工具的特性,比如版本控制、Web设计工具、Intellisense、GUI等。Monodevelop支持的开发语言非常多,主流的开发语言包括C、C++、C#PythonJavaNET等全部支持。16

第三章 基于Unity3D的可视化虚拟仿真实验平台

Monodevelop支持C#,因而开发者可以利用Monodevelop便捷的进行GUI界面的开发。另外,因为GTK是跨平台的,所以在Visual Studio开发的.NET应用程序可以通过Monodevelop非常简单的移植到Mac OS X和Linux下,这样开发者只需要把精力和时间专注于研发而不必分神去移植代码,可以大大节省时间和成本。

Monodevelop的主要特性如下:

代码补全;类和成员选择器;代码导航;代码模板;信息提示;智能索引;参数信息;打包和部署;单元测试;版本控制;即时错误检查;Visual Studio支持[45]。

3.3.2开发语言

可视化虚拟仿真实验平台使用的开发语言:C#。

Boo语言三种,JavaScript、Unity3D支持的脚本开发语言有C#、考虑到第三方库和资料是否丰富等问题,本文最终采用的是规范严谨的C#语言。C#派生于C++,同时又与Java有许多非常相似的地方,这在很多方面都有体现,包括与Java几乎相同的语法、接口、单一继承和编译运行方式,这使得C#具有高效、便捷的特点,C#开发GUI界面和Winform图形用户界面非常高效迅速,广泛用于Web和Windows开发[46]。

3.3.3应用程序开发注意事项

在运用C#语言进行可视化虚拟仿真实验平台开发过程中选择.NET Framework版本时要非常注意,因为Unity4.7版本与.NET Framework有一些兼容性问题,如果选用.NET Framework4.0进行开发,会经常出现诸如引用对象未定义等错误,推荐使用.NET Framework3.5版本。

3.4 系统模块设计

可视化虚拟仿真实验平台的主要作用是对现实中的作战场景进行模拟,对战场环境中的作战武器和目标进行可视化处理和三维动态显示,从而使试验者能够更加直观、更加方便的掌握作战过程中的敌我双方的动态。在应用层面上,可视化虚拟仿真实验平台主要包含九个功能模块,分别是初始化模块、武器模型与动态控制模块、目标模型与动态控制模块、探测信号动态模拟模块、场景控制模块、仿真特效模块、导航图模块、环境背景模拟模块、毁伤效果显示模块、画面保存模块。每个功能模块都有自己的专属功能,同时又紧密的结合在一起,共同构成了可视化虚拟仿真实验平台。

各个功能模块间的层次关系如图3.1所示:

17

西安电子科技大学硕士学位论文

图3.1 可视化虚拟仿真实验平台模块设计

可视化虚拟仿真作战平台初始化模块武器模型与动态控制模块目标模型与动态控制模块探测信号动态模拟模块场景控制模块特效控制模块导航图模块环境背景模拟模块画面保存模块

初始化模块:初始化模块的主要功能是在实验开始时完成各个模型位置、姿态等的初始化,变量的初始化,脚本与模型的绑定,相机的位置和视角的初始化,根据选择的模型的类型、大小等数据设置各种特效相对于模型的偏移量(设置好偏移量才可以使特效附着在模型的合适的位置上),将所有的场景元素、模型加载到场景中,各种对象包括模型、特效、声音等只有被加载到场景中才能被看到。

武器模型与动态控制模块:武器模型与动态模拟模块主要负责在虚拟实验过程中根据实验配置信息对武器装备的运动过程进行模拟,包括武器装备的x、y、z坐标,以及偏航角、俯仰角、横滚角等姿态角。武器的位置、姿态是每一帧都变化的,武器模型与运动模拟模块要每一帧都对其更新。

目标模型与动态控制模块:目标模型与动态控制模块和武器模型与动态控制模块的功能基本相似,主要负责目标模型的运动变化进行模拟,对目标模型和作为子物体附着在其上的尾焰特效的位置、姿态进行更新。

探测信号动态模拟模块:探测信号模型是四个围绕武器前端均匀分布并与武器成一定夹角的扇形信号模型,它是武器模型的子物体并且会在武器运动过程中动态变化,探测信号动态模拟模块的主要作用便是对这一过程进行模拟。

场景控制模块:在仿真场景中设有多个相机来实现多视角的场景观察,场景控制模块可以通过调整相机的高度、距离观察物体的距离、相机本身的姿态来实现对视角的控制,例如可以通过上下左右按键实现视角的拉近原理和视角左右旋转。控制模块还实现了视角还原、快捷键退出等功能。

特效控制模块:可视化虚拟仿真实验平台场景中的主要特效有武器尾焰、目标18

第三章 基于Unity3D的可视化虚拟仿真实验平台

飞机尾焰、武器爆炸特效、目标毁伤起火烟雾特效,该模块的主要组成部分是粒子系统,通过控制粒子系统中粒子的大小、速度、形状、贴图、存在时间等变量的控制来模拟尾焰、爆炸等特效效果。

导航图模块:在仿真场景中,主相机的负责对监测物体进行近距离立体显示,主相机的画面占据了屏幕的大部分。而在屏幕的右上角还有一个辅助相机的显示窗口,主要负责显示导航图,即全地形概况和武器、目标的位置、轨迹状态,相当于很多游戏场景中的小地图功能。

环境背景模拟模块:环境背景模拟模块主要负责对地形、地貌模型、天空盒、光照系统等环境变量模型、插件和功能模块进行控制,通过建模实现对高低起伏的地面的模拟,在通过附着各种逼真的纹理贴图模拟出岩石、草地、海洋、高山、沙地等代表地标信息,并结合天空盒、光照系统实现对天空、光、云、太阳等自然元素的模拟,构建出一个生动、逼真的自然背景环境。

画面保存模块:用户可以在进行战场场景仿真的任意时刻通过快捷键对仿真画面进行截图保存。

3.5 本章小结

本章主要介绍了可视化虚拟仿真实验平台的系统需求和难点,包括数学模型的选择、大计算量的数据计算、实时性的要求和逼真的可视化效果等。接着对可视化虚拟仿真实验平台模块化、层次化、Windows风格的界面和具备良好的扩展性和兼容性的设计思想进行了介绍。介绍了系统的主要开发工具Unity和集成开发环境Monodevelop,对Monodevelop的主要特性进行了说明。接着介绍了可视化虚拟仿真实验平台的开发语言和开发过程中的注意事项。最后对可视化虚拟仿真实验平台最重要的部分可视化部分的模块设计以及每个模块的主要功能和作用进行了介绍。

19

西安电子科技大学硕士学位论文

20

第四章 场景可视化模块

第四章 场景可视化模块

4.1模型创建和导入

4.1.1 模型格式转换

Unity支持的模型格式非常多,对当前的主流建模软件例如Maya、3D Studio

Max、Blender、3D Studio等的模型格式都支持,包括.3ds、.fbx、.obj、.dae、.dxf、maxl、.xl、.jasl、.c4dl、.blendl等格式[47]。Unity支持的模型格式和属性如下表所示:

表4.1 Unity支持的建模软件和模型格式

种类

Maya的.mb和.mal格式

3D Studio Max的.maxl格式

Cheetah 3D的.jasl格式

Cinema 4D的.c4dl 2格式

Blender的.blendl格式

Carraral

COLLADA

Lightwavel

Autodesk FBX的.dae格式

XSI 5的.xl格式

SketchUp Prol

Wings 3Dl

3D Studio的.3ds格式

Wavefront的.obj格式

Drawing InterchangeFiles的.dxf格式

网络

材质

动画

骨骼

Unity资源商店和各网络论坛等资源网站上有大量的3D模型资源,涵盖了人物、地形、汽车、飞船、武器、特效等方方面面,但是在战场场景仿真方面,Unity模型资源的种类和数量还有所欠缺,而且不同的用户在不同的条件下经常会有一些比较个性化的需求,这时就会需要自己进行模型建模或者对其它类型的模型进行格式转换来满足自己的需求,出于对时间和人工成本的考虑,本文所涉及的模型都是通过3D Studio Max和PolyTrans软件进行模型格式转换获得的。

如图4.1,先将要进行类型转换的模型导入到3D Studio Max中,再通过3D

Studio Max导出为目标格式,在这个过程中3D模型的纹理贴图往往会丢失,因此我们通过PolyTrans纹理贴图的格式进行单独转换,最后在Unity中将纹理贴图重新贴到3D模型上,这样就完成了3D模型的格式转换。

21

西安电子科技大学硕士学位论文

flt格式模型框架3D Studio

Maxfbx格式模型框架flt格式模型fbx格式模型rgb格式纹理贴图Poly

Transtif格式纹理贴图图4.1模型格式转换流程

4.1.2坐标系转换

不同的3D建模软件和3D引擎所使用的坐标系是不一样的,3D Studio Max建模软件使用的是右手坐标系而Unity3D使用的是左手坐标系。可以分别通过左手定则和右手定则来确定模型的坐标系,在X轴和Y轴已经确定的情况下两者之间的区别其实就只有Z轴的朝向不同,当把经过3D Studio Max转换格式的模型导入到Unity3D中时,如果不将右手坐标系转换为左手坐标系,那么在Unity中对附加在模型上的子物体或者特效的偏移量进行设置时便会出现问题,这就需要在把模型导入Unity3D之前首先进行坐标系转换。

图4.2右手坐标系 图4.3左手坐标系

在3DMax中切换到顶视图,此时3D模型的坐标系为默认的右手坐标系,各坐标轴的指向分别是X轴指向右,Y轴指向上,Z轴指向自己。选择层次选项中的编辑工作轴功能,就可以对模型的坐标系进行旋转,变换完成后各坐标轴的指向是X轴向右,Y轴指向自己,Z轴向下,此时模型的坐标系便从3DMax默认的右手坐标系改为了导入Unity时所需的左手坐标系。

22

第四章 场景可视化模块

4.1.3模型尺寸变换

在Unity3D中,默认的模型的尺寸单位是米,而在3D Studio Max中,默认的模型的尺寸单位是英寸(inch),因此当我们把3D Studio Max创建的3D模型导入到Unity中时经常会有模型尺寸过小的问题,解决问题的办法有两个,一种是调整Unity3D中模型的Scale Factor属性,另一种是从3D Studio Max导出模型时按照Unity3D的尺寸单位导出。

(1)通过调整Scale Factor修改模型尺寸

在将模型导入Unity3D中时模型的尺寸会默认缩小100倍,这是因为Unity中缩放因子Scale Factor的默认值是0.01,即缩小100倍。

将Scale Factor的值改为1即可将模型的尺寸放大100倍从而符合尺寸要求,但是这样做会比较消耗物理缓存,因此不推荐使用这种方法。

图4. 2 Scale Factor

(2)通过3D Studio Max修改模型尺寸

因为Unity3D默认ScaleFactor的值是0.01,所以导入到Unity3D中的模型的尺寸会被缩小为原来的百分之一,我们需要在3DMax中将存储单位设置为100才能保证模型在导入Unity3D时保持1m = 1m。在3D Studio Max中存储单位=显示单位/系统单位。显示单位设置为1m,系统单位设置1cm,即可以制作一个单位为1m,存储单位为100的模型。同样的,显示单位和系统单位分别设置为1cm和1mm即可以制作一个单位为1cm,存储单位为100的模型,这样便解决了在向Unity中导入模型时模型尺寸被缩小的问题。

23

西安电子科技大学硕士学位论文

图4. 3 显示单位

图4. 4 系统单位

4.1.4 模型导入时的其它注意事项

(1)面元数量控制:3D Studio Max导出模型时单一物体的三维面元数量不能超过65000个三角形,如果超过这个数量物体会显示不出来。尤其是地形模型这种模型尺寸较大、比较复杂的模型,其较大的尺寸和复杂的地形必然会包含更多的三角面元,必须要特别注意。

(2)文件位置:3D模型在Unity中放置时一般要按照一定的规则,否则系统逻辑会被打乱。原则上3D模型要放置在Assets文件夹的相应文件夹内,然后在其中创建存放贴图和材质的Texture和Material文件夹。

(3)重复模型:当场景中出现重复模型时,如果每出现一次便导入一次模型会非常的耗费资源。在Unity3D中重复的模型可以用prefab组件进行关联复制,这样所有的重复模型实际上都关联到同一个模型,而且在需要的时候还可以断开关联成为独立的模型,既节省了资源又不失灵活性。

4.2 场景可视化仿真

4.2.1场景初始化

仿真场景的初始化主要包括模型的加载和光源、背景的创建。Unity3D加载模型非常方便,只需要将3D模型拖放到Hierarchy视图中并调整模型的位置参数即可。光源是仿真场景中不可或缺的一部分,新创建的场景因为没有光源所以往往整个场景都是黑的,整个场景看起来模糊不清,要想使场景明朗清晰起来必须添加光源组件。场景的形状由创建场景模型时的网格模型决定的,场景的质感是由场景模型的24

第四章 场景可视化模块

材质纹理决定的,而场景的氛围、色彩和明暗则是由光源决定的,在一个场景中可以使用不同类型的多个光源,合理的使用光源可以营造出极佳的视觉效果[48]。

Unity3D提供了方向光源、点光源、聚光灯光源和面光源四种类型的光源,通过合理的组合和设置可以对自然界中任何的光源进行模拟[49]。方向光源可以放置在场景的任何地方,包括无穷远处,它的效果跟自然界中的太阳一样,可以对场景中的所有对象产生作用,并且方向光源是消耗图形处理器资源最少的光源类型。点光源的作用类似于灯泡,从一个点向四面八方放射光线,中心点处最亮,由中心点向外逐渐变暗。聚光灯光源顾名思义,它的效果跟聚光灯一样,光源以一个锥形从一个点向另一个方向照射,并且锥体的角度可以任意调整。面光源一般用于烘焙光照贴图,无法应用于实时光照。在可视化虚拟仿真实验平台场景种主要用到了方向光源和点光源两种类型的光源。

图4.5添加光源前的场景俯视图

图4.6添加光源后场景俯视图

25

西安电子科技大学硕士学位论文

在没有添加光源之前整个场景是昏暗的,模糊不清,而添加光源后整个场景都被照亮,模型的各个细节也都体现了出来。

光源创建完成后整个场景都亮了起来,但是此时的场景背景却是灰的,我们用天空盒作为整个场景的背景。天空盒是Unity3D的一个组件,它实际上是一个正方体,场景中的所有元素都被包含在天空盒中,在它的六个面上都有贴图,分别是前(Front)、后(Back)、左(Left)、右(Right)、上(Up)、下(Down),通过使用不同的贴图可以获得晴天、多云、晚霞、夜空等各种逼真精致的天空效果。导入天空盒资源包后就可以在Project视图中的Standard Assets文件夹下看到存储着天空盒资源的Skyboxes文件夹,通过Rendering Setting选项可以选择要加载的天空盒纹理。

图4.9添加天空盒前的场景

图4.7添加天空盒后的场景

26

第四章 场景可视化模块

在场景中一共有三个观察点,分别设有三个相机:第一个相机负责观察导弹武器的动态,第二个相机负责观察目标飞机的动态,第三个相机负责绘制导航图。第三个相机的功能与前两个有较大的不同,在本文后面会有单独的介绍。

相机是作为场景对象的一种放在Scene视图中,通过设置相机相对于导弹武器和目标飞机的距离和高度、相机照射的面积、相机的照射方向以及相机画面的渲染图层等来实现对导弹武器和目标飞机的监控。

相机的切换:在仿真场景中两个相机分别对导弹武器和目标飞机进行监控,但是主显示画面每次只能显示一个相机的画面,要能够随时获取到敌我双方的动态,就必须能够随时对两个相机的画面进行切换,通过在相机上附加一个脚本程序可以便捷的做到这一点:在脚本中,把按键值作为参数传入Down()函数便可以监测按键是否被按下,当数字键“1”被按下时,监控导弹武器的相机被激活,监控目标飞机的相机被关闭,当数字键“2”被按下时则相反,这样便可以在两个相机之间随意切换。

相机跟随:通过调整相机相对于导弹武器和目标飞机的距离和高度可以获得一个比较好的观察视角,因为导弹武器和目标飞机是运动的,这就需要相机跟随导弹和飞机进行运动。通过脚本获取到导弹武器和目标飞机的transform组件便可以实现对两者实时位置坐标的读取,然后对两者的实时位置的x、y、z坐标固定一个合适的偏移量作为相机的位置,实现相机对导弹武器和目标飞机的运动跟随。

相机平滑:相机在跟随导弹武器和目标飞机移动时经常会出现画面抖动的现象,为了使画面更流畅必须对相机进行平滑处理。相机画面抖动的原因是多方面的,其中之一是将负责相机位置更新的代码放到了不是每一帧都执行的FixedUpdate()函数中,这样相机的位置不会每一帧都更新,而是相隔几帧的跳跃式更新,造成画面抖动。解决办法是将负责相机位置更新的脚本代码放到每一帧都会执行的LateUpdate()函数或者Update()函数中。造成相机画面抖动的另一个原因是相机的移动算法是不匀速的,在写相机的移动算法时一定要将相机速度与ime结合在一起来保证相机的匀速运动。ime即每一帧的时间,因为每一帧所做的工作不同,所以每一帧所消耗的时间是不一样的,如果相机每一帧都有相同的位移,就会造成相机速度的不同使画面产生抖动。

如图4.11所示,通过对相机附加一个Smooth Follow脚本对其进行平滑处理,使相机的画面平稳流畅,并且可以在Inspector面板中直接对脚本中相机与导弹和飞机的距离,相机与导弹和飞机在垂直方向上的高度以及高度、旋转阻尼变量等进行调整,并且改变变量的值后不用重新编译程序,直接运行就可以看到各个参数调整后的效果。

27

西安电子科技大学硕士学位论文

图4.11 Smooth Follow脚本

4.2.2预设体与动态信号模型

动态信号模型是模拟导弹武器探测目标时的探测信号,它由四个相同的扇形组成,与导弹模型成一定的夹角分布在导弹模型的前端,并且在导弹运动的过程中会动态的变化大小来模拟信号的探测过程。信号模型是在3D Studio Max中创建的,在3D Studio Max中首先创建一个圆柱体,将其高度调整到接近零,这样便获得了一个圆,再对圆进行切片和平滑处理并调整模型的颜色,便得到了如下图所示的扇形信号模型。

图4.8信号模型

将信号模型导入到Unity3D并放置到Hierarchy视图中,由于最终的信号模型是由四个扇形信号组成,所以要将信号模型复制三份,如果单纯地通过对模型进行复制操作得到另外三个模型,虽然另外三个模型与第一个模型是一样的,但是它们其实是四个独立的模型,这会在进行场景仿真的时候消耗大量的资源,尤其是在给28

第四章 场景可视化模块

信号模型添加动态效果以后。解决这一问题需要用到Unity3D的Prefab组件,Prefab是预设体的意思,它是为了使场景对象和模型进行重复使用而创建出来的组件。对于场景中重复多次的对象模型,将原始模型制作成预设体再放置到场景中,所有的预设体都关联到同一个原始模型,节省了大量的系统资源,大大提高了资源的使用效率。使用预设体创建出组成信号模型的四个扇形模型后,将这四个扇形信号模型设置为导弹模型的子物体并调整信号模型相对导弹模型中心轴线的位置和倾斜角度,最后为了获得更好的视觉效果,给信号模型增加透明效果,将信号模型Material属性的transparant(透明)选项调整为Diffuse,然后将main color选项中Aphla通道的值调整为一个比较小的值即可。

图4. 13动态信号效果图

信号的动态效果通过一个C#脚本实现,在与信号模型绑定的脚本中有一个计数器,场景动画每增加一帧,计数器加一,当计数器的值是三的倍数时通过脚本获取到信号模型的transform组件,并调整它的localScale值来放大信号模型,当计数器的值大于十八时将计数器的值归零并将信号模型的大小还原,即信号模型的大小每三帧放大一次,每隔十八帧循环一次,以此来模拟信号的探测过程。

4.2.3导航地图

导航地图是屏幕右上角用来显示导弹武器和目标飞机在整个作战场景中实时位置的地图,导航地图是整个场景的俯视图,因此导航地图相机位于整个场景的正上方,下面是导航地图相机的参数设置:

29

西安电子科技大学硕士学位论文

图4. 14 导航地图相机参数

要想获得理想的效果,以下几个参数的设置非常重要:

Position:相机的位置坐标。通过调整相机的坐标使其位于场景地图的正中央并调整其高度来获得合适的画面。

Culling Mask:剔除遮罩。Unity3D场景中的每个对象都可以设置其所在的Layer(层),只有在相机的Culling Mask选项中被选中的Layer才会被相机渲染到场景中,因为在导航地图中是分别用绿色和红色的两个圆点代表导弹武器和目标飞机而不是模型本体,所以需要在导航地图中将导弹武器和目标飞机模型隐去,即在Culling

Mask 选项中去掉导弹武器和目标飞机所在的Layer。

Projection:投影。相机的Projection选项有两个,分别是Perspective(透视)和Orthographic(正交)[50]。Perspective视图的效果和眼睛一样,而Orthographic同样大小的两个物体即使距离相机的距离完视图镜头中的物体的大小跟距离无关,全不同两者在相机中的大小依然是一样的,即物体在场景中的大小与距离相机的远近无关。导航地图中代表导弹武器和目标飞机的红绿色点实际上是导航地图相机前的两个圆形模型,通过相似性原理根据导弹武器和目标飞机的坐标以及场景的大小计算出红绿圆点在导航地图中的位置,是与距离相关的,因此采用Perspective相机。

Field of View:相机的视野。导航地图是包含整个场景的,所以要合理的调整相机的视野使其恰好覆盖整个场景。

ViewPort Rect:矩形视口。矩形视窗包含X、Y、W、H四个参数,其中X、Y是矩形视窗绘制的初始坐标,W和H分别是矩形视窗的宽度和高度,四个参数的值都是百分比[51]。因为导航地图的位置是屏幕的右上角,所以需要将X、Y的值设置为屏幕的右上角并选取合适的W、H值。

30

第四章 场景可视化模块

Depth:相机深度。当场景中有多个相机画面需要同时显示时就要考虑相机的渲染顺序,画面越接近上层渲染顺序越靠后,而相机的渲染顺序是由相机的深度值决定的[52]。因为导航地图视图在所有相机视图中位于最上面,所以导航地图相机需要最后渲染,即导航地图相机的Depth值要大于场景中其它所有相机的Depth值。

图4.15 导航地图效果图

4.2.4碰撞检测

在场景仿真中导弹武器引爆的条件是与目标飞机发生碰撞,而判断是否发生碰撞主要通过碰撞检测,碰撞器和触发器是实现碰撞检测的主要工具[53]。

碰撞器是一群组件的集合,包括BoxCopllider(盒子碰撞体)、Capsule Collider(胶囊碰撞体)、Mesh Collider(网格碰撞体)等,要产生碰撞效果必须为模型添加碰撞体组件和刚体组件[54]。

图4.16 导弹添加胶囊碰撞体后效果图 图4.17 飞机添加胶囊碰撞体后效果图

31

西安电子科技大学硕士学位论文

盒子碰撞体、胶囊碰撞体等相对简单,通过一些简单的立体形状来实现,而网格碰撞体较复杂,基本是对3D模型表面进行三角面元剖分得到的,因此网格碰撞体相对于其它碰撞体更加精确,代价是耗费的资源相对也非常多。本论文中导弹武器模型近似一个胶囊体,因而导弹武器采用的是胶囊碰撞体,目标飞机模型的形状相对导弹武器模型复杂,没有在形状上与之相似的碰撞体,但出于节省资源的考虑,在不影响实验效果的条件下同样使用了胶囊碰撞体。

如果模型不添加碰撞体,当导弹武器和目标飞机相互碰撞时会直接穿过去,不会产生碰撞也就不会触发物理引擎产生碰撞效果[55]。如果不需要产生碰撞效果而只是单纯的检测两个物体有没有发生接触可以使用触发器,要使用触发器只需要勾选碰撞器组件中的Is Trigger选项,此时物理引擎的效果会被忽略,不会进行物理计算,不会产生类似碰撞后反弹或四散纷飞的效果[56]。当检测到碰撞后,碰撞器和触发器都有相应的函数接口对碰撞事件进行处理。

进行碰撞信息检测的主要函数如下:

1、当进入碰撞器

isionEnterCollision collisionInfo

2、当进入触发器

gerEnterCollider other

激活导弹爆炸特效的脚本函数放置在当进入碰撞器函数isionEnterCollision collisionInfo中,即一检测到碰撞信息立即激活爆炸特效。

进行碰撞检测时的注意事项:

1、当使用碰撞器对导弹武器和目标飞机进行碰撞检测时,两者中的其中一个必须既添加了碰撞体组件又添加了刚体组件,并且检测碰撞信息的脚本必须绑定在添加了刚体组件的模型上,只有这样才能检测到碰撞信息并触发相应函数。

2、当使用触发器进行碰撞检测时,跟用碰撞器进行检测一样导弹武器和目标飞机两者之一必须既添加了碰撞体组件又添加了刚体组件并且绑定进行碰撞检测的脚本,而另一个必须要添加碰撞器组件并且两个碰撞器中至少有一个勾选了Is Trigger选项[57]。

4.2.5特效与粒子系统

可视化虚拟仿真实验平台场景中的特效主要有四部分,第一部分是导弹武器的尾焰,第二部分是目标飞机的双尾焰,第三部分是导弹的爆炸特效,第四部分是目标飞机被击中后起火烟雾特效。这四部分特效均是通过粒子系统实现的,粒子特效的原理是通过控制一定数量的无规则组合在一起的粒子的速度、持续时间、颜色、重力系数等来模拟爆炸、烟雾、水滴等效果,使用粒子系统可以非常方便的创造出各种逼真惊艳的特效效果[58]。

32

第四章 场景可视化模块

图4.18 导弹尾焰 图4.19 飞机尾焰

图4.20 导弹引爆

图4.21 飞机爆炸起火

以飞机爆炸起火烟雾特效为例,它由Inner Core(内焰)、Outer Core(外焰)、LightSource(点光源)和Smoke(烟雾)四部分组成,其中除了LightSource是为了增加特效的亮度使特效更绚丽而添加的点光源,其余三部分都是通过粒子系统模拟出来的。Inner Core(内焰)和Outer Core(外焰)是亮度不同的火焰,用于模拟真实环境中火焰的燃烧效果,Smoke(烟雾)则是通过粒子系统创建的烟雾特效,用于模拟火焰燃烧时产生的黑色烟雾,通过这三部分与灯光的结合,逼真的模拟出了飞机被击中时的损毁爆炸效果。

每个粒子系统都是由粒子发射器、粒子渲染器、粒子动画器和材质等构成,要制作出逼真的特效效果,需要对这几部分的参数进行合理的配置。通过在粒子发射器中对粒子的尺寸、每秒的发射数量、粒子在场景中的存在时间、粒子的加速度等进行设置模拟出飞机爆炸时的火焰的形状效果,通过在粒子动画器中对每个粒子在其生命周期中各个阶段的颜色、粒子的旋转量、粒子在其生命周期中大小的变化以及粒子受力的大小进行设置模拟出飞机爆炸时火焰的燃烧和颜色变化效果,通过粒子渲染器对粒子进行贴图使特效更加逼真。图4.22-图4.24为飞机损毁爆炸特效的粒子系统配置。

33

西安电子科技大学硕士学位论文

图4.22 粒子发射器

图4.23 粒子动画器

图4.24 粒子渲染器

粒子的数量越多消耗的资源也越多,对硬件的要求相应越高,所以对于要用到大量粒子的特效效果要谨慎使用,尽可能以最少的粒子数量完成相应特效的制作,同时要注意结合粒子动画器中的自动销毁属性AutoDestruct使用以节省资源。

34

第四章 场景可视化模块

4.3场景控制

4.3.1视角变换

为了在进行战场场景仿真时能够更加细致、更加便捷地对作战场景进行观察,系统实现了对相机视角的自由变换,通过键盘可以对视角进行左右三百六十度的旋转、视角远近拉伸收缩、视角的上仰和下俯并且可以一键将视角恢复到初始状态。

视角变换是通过绑定在相机上的视角变换脚本实现的,其基本原理是通过键盘对相机与导弹武器和目标飞机之间的distance(距离)、height(高度)以及相机绕导弹武器和目标飞机垂直方向轴线进行eulerAngles(欧拉角)旋转实现视角的任意变换。

视角变换效果如图4.25-图4.28所示:

图4.25 视角拉远 图4.26 视角拉近

图4.27 前视效果

图4.28 后视效果

在进行视角变换的过程中,首先要确保相机是始终朝向导弹武器和目标飞机的,如果只是对相机进行单纯的位移和旋转操作,导弹武器和目标飞机在画面刷新后会从相机视野中消失。通过脚本获取到相机的transform组件,然后调用它的LookAt()函数可以实现这一点,即相机所有视角变换操作的前提是通过调用()函数使相机视角始终朝向目标物体。

35

西安电子科技大学硕士学位论文

视角旋转:视角向左或向右的三百六十度旋转主要是通过先计算出当前相机绕导弹武器或目标飞机Y轴旋转的欧拉角度,每当按下左箭头或右箭头按键时便将相机与Y轴所成的欧拉角进行定量的增加或减小,并调用gle()函数实现从当前欧拉角度到目标欧拉角度的平稳转换,避免出现因为相机的视角跳跃式的变化而出现画面抖动等问题。

视角拉伸与收缩:视角的远近拉伸收缩是通过调用on获取到导弹武器和目标飞机与相机的vector3格式的位置向量,并计算出两者之间的距离,通过调整距离的大小并更新相机的位置实现视角的远近拉伸收缩。

视角上仰与视角下俯:通过按下键盘上的向上箭头和向下箭头按键可以实现视角的上仰和下俯。视角的上仰和下俯的实现原理相对比较简单,只需要调整相机的垂直高度并保持视角对准监控物体即可。

视角还原:当想把经过一系列操作改变后的视角恢复到初始状态时可以通过按下F12键实现,视角还原的原理是把相机距离导弹武器或目标飞机的距离、相机的高度、相机绕Y轴的旋转角度恢复到初始值,这样相机视角便恢复到了最初状态。

4.3.2帧控制和GUI界面

可视化虚拟仿真实验平台软件在进行场景仿真时,画面每秒刷新的帧数越高,演示的过程越流畅,但是帧率太高不利于细节的观察,同时帧率高时耗费的资源也会成倍增长,有时候需要放慢画面的播放速度来观察细节,因此要实现对帧率的控制。

帧率控制同样通过脚本来实现,通过FrameRate属性设置系统当前的帧率,同时通过设置键盘事件实现对帧率的实时控制,可以通过键盘随时加快和减慢帧率。

文字显示是显示在演示场景屏幕上对可视化虚拟仿真实验平台基本操作的说明和实时数据的显示,它主要通过Unity3D的GUI模块实现的。GUI(图形用户界面)看起来比较简单,只是一些按钮和文字的简单的组合,但是要想把GUI做的简洁、美观非常困难,各种元素一旦搭配不好很可能得到的是一个非常杂乱的界面。Unity3D通过OnGUI函数实现对GUI的控制,OnGUI函数每一帧都会调用,可以实现对信息的实时更新。

如图4.29所示,可视化虚拟仿真实验平台软件将导弹武器和目标飞机的实时坐标绘制在屏幕左上角,将视角左旋、视角右旋、视角上仰和下俯、视角的远近拉伸收缩、视角还原、截图和退出操作对应的按键操作说明绘制在屏幕的下方,最后给屏幕上绘制的文字设置合适的颜色使界面更加美观。为了使GUI适应不同大小、不同分辨率的屏幕,在进行界面绘制时要先获取到屏幕的分辨率和大小尺寸,然后根36

第四章 场景可视化模块

据屏幕的分辨率和大小尺寸增减相应的像素单位来获取各个元素所在的位置,这样最终的界面不论用何种屏幕进行显示,屏幕上的各个元素都始终会在相应的位置而不会出现偏移,增加了可视化虚拟仿真实验平台对不同硬件的兼容性。

图4. 29 GUI界面

4.3.3实时截图

屏幕截图功能分为两部分,分别是全屏截图和局部截图。全屏截图功能通过Unit3D自带的eScreenshot()函数实现,在脚本中通过SaveFileDialog类新建一个文件存储对话框就可以实现对截取图片的命名和存储路径的修改。Unity3D自带的截图函数的优点是操作简单、方便,缺点是耗费的系统资源较多,在PC、Mac等平台上因为硬件的性能比较高,截图功能在使用时比较流畅。但是在移动平台等一些硬件性能相对差一些的平台上,在使用截图功能时可能会出现卡顿的情况,同时Unity自带的截图函数只能实现全屏截图,当想要对屏幕进行部分截图是便不能满足需求,为此本系统还实现了一种较为节省资源的同时又能进行屏幕局部截图的方法。屏幕局部截图通过纹理功能实现,根据截图区域的位置和大小创建一个空的纹理,然后读取截图区域中的屏幕信息并存储到纹理中,最后将纹理转换成图片格式保存。用户可以根据不同的需求选择不同的截图方式,当只需进行全屏截图时可以选择第一种截图方法,方便快捷,当需要进行局部截图或者硬件性能较低时可以选择第二种截图方法,操作稍微复杂但是节省资源。

4.3.4一键发布

Unity3D最强大、最受欢迎的功能之一便是多平台支持,它能够将开发的项目一键发布到多个平台,最新版本的Unity3D支持21种不同的平台,包括各种移动设备37

西安电子科技大学硕士学位论文

和VR设备[59],这为开发者提供了非常大的便利,开发者只需要将全部精力用于项目开发而不用担心项目移植的问题,大大节省了平台迁移的时间,节省了开发成本。

将程序打包发布只需要点击“File”菜单“Build Setings”选项,在打开的窗口左侧选择目标平台,然后点击“Build And Run”即可,操作非常简洁方便,这也是越来越多的开发者投入到Unity3D阵营当中的原因[60]。

图4. 30 Unity程序发布界面

4.4本章小结

本章主要对可视化虚拟仿真实验平台的场景可视化模块进行了介绍,首先介绍了模型的创建和导入过程,通过结合3D Studio Max来创建模型或者对已有的模型进行格式转换来获取符合项目需求的模型,对模型左手坐标系与右手坐标系的差异进行了说明并介绍了转换方法,对向Unity3D导入模型时遇到的模型尺寸变化、面元数量限制、文件存放位置等问题进行了说明。

对场景可视化仿真过程进行了介绍,包括场景的初始化(光源、背景等),相机与视角的设置以及相机切换、相机跟随、相机平滑等技术,预设体与信号模型的创建,信号动态效果的实现,导航地图的创建过程,碰撞检测的类型、触发方式、触发条件、注意事项,场景中的导弹尾焰、飞机尾焰、导弹爆炸、飞机起火烟雾等特效以及粒子系统的构成和使用。

介绍了场景的控制模块,包括视角的左右三百六十度的旋转、视角远近拉伸收38

第四章 场景可视化模块

缩、视角的上仰和下俯以及一键视角恢复等视角变换功能的实现,仿真动画的帧率控制,仿真画面GUI视图及文字显示,屏幕全屏和局部实时截图功能的实现以及平台的一键发布。

39


本文标签: 进行 模型 虚拟 场景 平台