基于HLA的战场环境仿真研究

基于HLA的战场环境仿真研究

ID:36851074

大小:3.45 MB

页数:62页

时间:2019-05-16

上传者:U-145848
基于HLA的战场环境仿真研究_第1页
基于HLA的战场环境仿真研究_第2页
基于HLA的战场环境仿真研究_第3页
基于HLA的战场环境仿真研究_第4页
基于HLA的战场环境仿真研究_第5页
资源描述:

《基于HLA的战场环境仿真研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

摘要近年来,随着多媒体技术的迅速发展,虚拟现实技术和视景仿真技术也获得长足的进步。基于计算机、图形处理、网络通信等诸多新技术发展而来的虚拟现实和视景仿真技术由于其高度的逼真性,实时性和交互性,获得了广泛的关注并在民用和军事领域都有着极其广阔的应用前景。本文来源于海军装备部的一个项目,着重研究基于HLA(HighLevelArchitecture)高层体系结构的虚拟现实和视景仿真技术在战场环境仿真中的应用。本研究采用高层体系结构作为分布式仿真的系统构架,采用Multigen公司的建模工具Creator和驱动工具VegaPrime作为开发工具,在编译平台VC++下完成该战场环境的仿真。在介绍了研究背景以及国内外发展现状的基础上,本文着重研究了高层体系结构的组织与原理,详细分析了HLA高层体系结构中整个联邦的开发过程以及联邦成员的实现方法。按照HLA的六个开发步骤,结合项目具体要求,完成了战场环境仿真体系结构中的任务空间模型设计,联邦以及联邦成员的设计,并且根据本仿真中的数据流设计了联邦对象类信息表以及仿真交互信息表。接着本文深入分析了实体建模软件Creator和驱动编写软件VegaPrime的特点以及两个软件工具中所使用的关键技术细节。按照建模和驱动工具的设计流程,分别完成了战场环境的建模,战场环境参数的设置,部分实体模型的驱动编写以及编译环境的配置等工作,其中着重完成了战场环境中大型地形背景以及各种战场要素如舰艇,预警机,导弹以及坦克的建模工作,并且完成了舰艇和预警机的驱动编写,使得本战场环境仿真产生了较为理想的仿真效果。关键词:虚拟现实视景仿真高层体系结构联邦战场环境驱动I AbstractNowadays,withthefastdevelopmentofmultimedia,virtualrealityandscenesimulationarealsoinahighspeedofdevelopment.Basedonthenewtechnologiesofcomputer,imageprocessingandnetworkcommunication,virtualrealityandscenesimulationgetmuchmoreattentionandownabrilliantfuturebothincivilapplicationsandmilitaryapplicationsbecauseoftheiradvantagesinvividness,real-timeandmutuality.ThisresearchcomesfromaprogramsupportedbyEquipmentDepartmentofNavyandresearchesontheapplicationofvirtualrealityandscenesimulationonbattlefieldenvironmentbasedonHLA(HighLevelArchitecture).TheresearchadoptstheHLAastheframeworkofthesystemandusesthemodelingtoolCreatorandthedriverprogrammingtoolVegaPrimeastheplatformandcompilestheprogramwithVC++.BasedontheintroductionofthehistoryanddevelopmentofHLA,thisthesisfirstresearchesonthearchitectureandtheoryofHLAanddetailsthewaytodevelopthefederationofHLA.Followingthesixstepstodevelopthefederation,thisthesisfinishesseveraljobssuchasdesignthetaskspacemodeling,designthefederationandmembers,anddesigntheFOM(FederationObjectModel)andSOM(SimulationObjectModel).ThenthispaperanalysesthecharacteristicsofthetwosoftwaretoolsCreatorandVegaPrime,meanwhiledetailsthekeytechnologiesusedbythosetwosoftwaretools.Then,thispapercreatedifferentmodelsinthebattlefieldenvironment,configuresimulationparametersforthebattlefieldenvironment,thirdwritedriversforthosemodelscreatedbyCreatorandthelastcompletethesettingsinthecompilingenvironmentVC++.Amongthosejobs,thispaperpaysmoreattentiontothemodelscreatinganddriversprogramming.Thosedifferentmodelssuchasterrain,battleship,missileandtankwithdriversmaketheeffectofthesimulationofbattlefieldenvironmentlookvividandprettygood.Keywords:virtualrealityscenesimulationHighLevelArchitecturefederationbattlefieldenvironmentdriverII 1绪论1.1课题的背景近年来,随着多媒体技术的迅速发展,虚拟现实技术和视景仿真技术得到了空前的发展。基于计算机、图形处理与图像生成、网络通信等诸多新技术发展而来的虚拟现实和视景仿真技术为仿真实验创造了逼真的虚拟环境,并将仿真实验过程以三维动画及声响的形式直观输出。仿真实验人员获得了远比数字和曲线更多的信息,促进了形象思维,加深了对仿真现象的理解,从而提高了仿真实验在各个应用领域的辅助作用。正是基于现今仿真技术的高度逼真性和实时交互性,虚拟现实和视景仿真技术在各个领域都有着十分广阔的应用前景。在民用方面,虚拟现实和视景仿真技术被应用与虚拟游戏,虚拟地图,遥感测绘以及医学方向等等。设计人员可以通过仿真技术在虚拟的环境中实现复杂的设计任务而无需在设计未完成阶段开始实际的制作,因此十分高效并且节约成本的完成设计任务。在医学方面,虚拟现实技术可以逼真的模拟人体内部器官组织的构造,为研究各种病理以及开展基于虚拟现实的手术提供了很好的支持,这样的虚拟手术平台具有高效,低成本,可反复使用的优点,因此得到了极大的重视并赖以发展。虚拟现实和视景仿真技术在民用领域的发展可谓是十分广泛,其相对低廉的成本,一次开发多次使用的特点受到越来越多行业的青睐,这也使得虚拟现实技术本身得到更大的发展。在军事应用反面,虚拟现实技术和视景仿真技术更是得到了很大的关注。在当今这个国际形势十分复杂的环境下,本着和平与发展的国际主题,各国为了提高本国的军事水平,加强和平时期迎接战争挑战的能力,必须保持对军事武器,战术战略的研究,而基于实际操作的高成本,高风险等不利原因,各国都将目光投向了一个更为高效低成本的手段,这就是利用虚拟现实技术来实现武器的研发,战术的推演以及复杂战场环境下各兵种协调作战的仿真。可以说虚拟现实和视景仿真技术已经成为了军事武器研发,军事训练以及战争模拟等领域的一个十分重要的手段。1 1.2国内外研究现状虚拟现实和视景仿真技术在军民两用上都有着广泛的发展,特别是其在军事上的有效应用使其自身得到了各个国家政府的重视,因而得到高速发展。本文主要是研究虚拟现实技术和视景仿真技术在战场仿真上的应用,因此本文关注的更多是其在军事上的发展以及动向。随着虚拟现实技术(VirtualReality,简称VR)在武器装备研制、作战效能分析与战略战术决策等方面的广泛应用,其对军用仿真的可视化、智能化、网络化与集成化提出了更高的需求。虚拟战场环境是利用分布式交互仿真和虚拟现实技术人工合成的、可支持多武器平台的电子环境,对其生成及关键技术的研究,将在作战指挥训练、攻防对抗演习,现代作战行动的决策与谋划中发挥巨大的作用。基于VR的战场模拟早已成为世界军事强国研究的热点。早在1983年美国陆军和美国国防部高级[1]项目研究计划局(DARPA)共同制定并实施了SIMNET(SimulationNetworking)计划,到1989年,建成了分布于美国和德国的11个基地,包括约260个地面车辆仿真器、指挥中心和数据处理设备的军事演练仿真网。基于SIMNET的经验,1992年美国军方和工业界共同倡导并着手建立异构型网络互联的分布交互仿真系统DIS(Distribute[2]InteractiveSimulation),把它作为美国面向21世纪的一种信息基础设施,并着手在各兵种开展各种高级概念技术演示项目ACTD(AdvancedConceptTechnologyDemonstration)的研究开发(1994-1999年)。JSIMS/WARSIM2000(JointSimulationSystem,1997-2003年)则是美国国防部正在研制的一个以STOW为技术基础的,支[3]持多兵种联合军事仿真演练的分布式虚拟战场环境系统。WARSIM2000是21世纪的新一代战争模拟系统,满足JSIMS的陆军部分的需求,并提供一个逼真的联合战争空间环境。从各国在虚拟现实和视景仿真技术应用与军事与战场环境的发展情况,我们可以得出以下结论:虚拟现实技术和视景仿真技术应用领域已覆盖陆、海、空、空间、特种操作等军兵种,其可以在较大规模上支持作战、指挥训练、多兵种联合战术演练、作战任务预演以及军事教育等。在设计思想上,它采用开放的体系结构与统一2 的应用程序框架,如VR-link、TAFIM、HLA/RTI,以支持不同仿真应用系统之间的互操作与重用。在实现技术上,大量采用VR技术,建立三维逼真的合成环境,构造支持自然人机交互的各种类型的虚拟仿真实体;应用先进的网络技术互联处于不同地点的仿真,建立具有一定规模的分布式虚拟战场环境。我国是从1996年开始,在863计划的资助下,开展了分布式虚拟战场环境[4][5]DVENET(DistributedVirtualEnvironmentNetwork)的研究开发工作,目前应该说一直处于起步阶段,离发达国家与军事强国在虚拟现实应用于军事方向的发展还存在着很大的差距。1.3研究内容和设计目标本文的研究内容就是研究基于HLA(HighLevelArchitecture)高层体系结构的战场环境仿真。HLA是美国国防部提出的新的分布式仿真的标准和体系结构。本文在研究该结构应用与战场环境仿真的基础上,利用Multigen公司的建模工具Creator和模型驱动工具VegaPrime进行战场环境的建模与仿真研究。本研究的设计目标就是通过对HLA体系结构的分析,初步构架起一个战场环境下的HLA体系结构,并在一个假定的战场想定环境的基础上设计出该结构的具体细节。同时,本研究将利用选定的开发工具,完成战场环境仿真中模型的制作以及实体模型驱动的初步编写,实现一定的功能,初步完成战场环境仿真。1.4论文结构安排本论文主要研究基于HLA的战场环境的仿真,全文分为五个章节,第一章主要概述了本研究的研究背景以及国内外在战场环境仿真领域的发展情况以及动向,并简要介绍了本论文的研究内容和目标。第二章概述了HLA高层体系结构的概念,发展历史以及现状,并详细介绍了HLA的结构与原理,以及整个高层体系结构的开发过程,为第四章的HLA开发提供参考。第三章概述了虚拟现实技术和视景仿真技术的发展与应用,并详细介绍了本研究使用的开发软件Creator模型制作工具以及模型3 驱动软件VegaPrime的原理以及特点。第四章详细分析了本战场环境仿真的研究内容和设计目标,在此基础上,分析了本战场环境仿真的HLA高层体系结构中的开发细节,完成了仿真中模型的制作以及模型驱动程序的编写,同时可以通过截图看到整个战场环境的仿真效果。第五章对本研究和本论文做出总结与展望,分析目前工作的成果和以后系统的改进方向。4 2仿真系统平台简介2.1HLA高层体系结构概述高层体系结构HLA(HighLevelArchitecture)是美国国防部于1995年提出的新一代分布式交互仿真的技术框架,目的是解决国防领域内所有类型的模型、仿真和C3I系统的互操作性和可重用性,其显著特点是通过提供通用的、相对独立的支撑服务体系,将应用层和底层分离,即将具体的仿真功能实现、仿真运行管理和底层通信三者分开,隐蔽各自的实现细节。从而可以使各部分相对独立地进行开发,最大程度的利用各自领域的新技术来实现标准的功能和服务,适应新技术的发展。同时可[6]实现应用系统的即插即用,保证了仿真系统联邦范围内的互操作和重用。HLA按照面向对象的思想和方法来构建仿真系统,它是在面向对象分析与设计的基础上划分仿真成员,构建仿真联邦的技术。HLA以标准化、规范化的对象模型模板OMT(ObjectModelTemplate)的形式定义和描述仿真实体的对象信息和交互信息,并通过运行时间支撑体系RTI(RunTimeInfrastructure)管理各仿真应用,提供较好的仿真应用的互操作性和仿真资源的可重用性,以保证不同类型的仿真应用能够协调工作,完成复杂的仿真任务。2.1.1HLA的发展1996年美国国防部发布了针对建模仿真领域的通用技术框架,该框架由任务空间概念模型(ConceptualModelofMissionSpace,CMMS)、建模与仿真高层体系结构[7](HighLevelArchitecture,HLA)和一系列的数据标准三部分组成。HLA是美国国防部(DOD)发布的建模与仿真大纲(DODM&SMasterPlan)中第一个目标———开发建模和仿真通用技术框架中的首要内容,其主要的目的是促进仿真应用的互操作性和仿真资源的可重用性。1996年10月美国国防部正式规定HLA为国防部范围内仿真项目的标准技术框架,开始推行HLA,并用它代替原有的DIS、5 ALSP等标准。同时提交IEEE作为IEEE1516发布,2000年9月成为国际通用的标准。美国自2001年起只支持基于HLA仿真系统开发,在我国的航空、航天有关部门也在[8]大力开展HLA的研究、开发和应用推广。2.1.2HLA的特点由于HLA具有许多的优点,因此基于HLA标准开发的模型可以实现广泛的用途,基于HLA标准的仿真系统能实现多方面的应用需求。HLA高层体系结构具有以下几[6]个显著的优点:(1)HLA模型良好的可重用性,通过对模型统一的定义标准使得为一个仿真应用开发的模型能在不同的仿真应用中实现共享,从而大大节省新系统的开发费用和开发周期。(2)HLA的互操作性使得不同的HLA应用模型能实现集成,实现基于网络的多子系统的交互和对抗仿真。(3)HLA提供更大规模的将构造仿真/虚拟仿真/实物仿真集成在一起的综合环境。(4)HLA标准可以建立不同层次和不同粒度的对象模型。2.1.3HLA体系结构中的概念HLA技术框架定义了构成仿真各个部分的功能及相互间的关系,以下几个基本[9]概念需要理解:(1)联邦(Federation):为实现某种特定的仿真目的而组织到一起,并能彼此进行交互作用的仿真系统、支撑软件和其它相关的部件就构成一个联邦,其执行过程称为联邦执行。(2)联邦成员(Federate):参与联邦的所有应用都称为联邦成员,简称成员。联邦成员包含两部分内容:1)联邦成员自身的代码:实现联邦成员的仿真模型,包含模型所需要的各种对6 象的实现以及成员代理的实现。2)RTI接口LibRTI部分:实现联邦成员间的信息交互,包含RTIAmbassadoFederateAmbassador两个代理类以及RTI对象。(3)仿真应用(SimulationApplication):使用模型来获得实体动态行为的一种联邦成员。(4)对象(Object):是构成成员的基本元素,用于描述真实世界的实体,其粒度和抽象程度适合于描述成员间的互操作。在任何一个给定的时间,对象的状态定义为其所有属性值的集合。(5)对象模型(ObjectModel):用来表达客观世界的一组对象的集合,它描述了各对象的属性,对象间的联系和交互。(6)对象模型模板(ObjectModelTemplate):提供一种标准文档化的格式来描述联邦及其成员的对象模型信息,OMT主要包括两个部分:1)联邦对象模型(FederationObjectModel,FOM)2)仿真对象模型(SimulationObjectModel,SOM)2.1.4HLA的组成HLA高层体系结构主要由三部分组成,分别是规则(Rule),运行支撑系统(RunTimeInfrastructure,RTI)的接口规范说明(InterfaceSpecification)以及对象模型模板[10][11](ObjectModelTemplate),它们的定义及功能如下:(1)规则:定义了在联邦设计阶段必须遵循的基本准则,保证在联邦中,仿真应用(联邦成员)间能正确实现交互的原则和协定,描述各联邦成员的责任及它们与RTI的关系,是对象模型模板和接口规范说明的设计原则。(2)接口规范说明:它的功能类似于用于特殊目的的分布式操作系统,定义了在仿真系统运行过程中,支持联邦成员之间互操作的六类标准服务,即联邦管理服务、声明管理服务、对象管理服务、时间管理服务、所有权管理服务和数据分发服务。它通过应用接口层和网络接口层将仿真应用,底层支撑和RTI的功能模块相7 分离。(3)对象模型模板:定义了对象模型信息的通用方法,对对象属性及对象间信息交换的格式和内容进行定义的标准化描述,提供了一种标准格式的HLA对象模板,促进了模型的互操作性和资源的可重用性。2.2虚拟现实与视景仿真技术虚拟现实(VirtualReality)技术是20世纪90年代初崛起的一种实用技术,它以计算机图形显示技术为核心,借助计算机生成逼真的视、听、触觉一体化的特定范围的虚拟环境,使得用户利用适当的设备,如头盔、立体眼镜、传感手套等,和虚拟世[12]界的客体进行交互,并以想象性、交互性、沉浸性为用户提供了丰富的临场感。虚拟现实技术涉及多种技术及交叉学科,包括计算机图形学、图像处理与模式识别、人工智能技术、网络技术、并行处理技术等等。虚拟现实的核心是建模与仿真,就[13]建模和仿真本质而言,它是对真实物理系统在某一层次上的抽象。与实际的物理系统相比,用户在这个抽象模型上可以更高效、更节省、更灵活、更安全地对物理[14]系统进行了解和设计。2.2.1虚拟现实技术的特点虚拟现实技术作为一种新型人机接口,不仅使参与者沉浸于计算机产生的虚拟世界中,而且还提供用户与虚拟世界之间的直接通信手段。它具备以下三个基本特[15]征:(1)沉浸:这是虚拟现实技术的核心,指使用户投入到由计算机生成的虚拟场景中的能力。用户在虚拟操作训练场景中有"身临其境"之感。(2)交互:指用户与虚拟场景中各种对象相互作用的能力。它是人机和谐的关键性因素。交互性包含对象的可操作程度及用户从环境中得到反馈的自然程度、虚拟场景中对象依据物理学定律运动的程度等,以用户的视点变化进行虚拟交换。这个过程中最重要的因素是实时性。实时性是指计算机能够响应用户的输入并立即改变8 虚拟场景的状态。(3)构想:虚拟现实不仅是一个用户与终端的接口,而且可使用户沉浸于此环境中获取新的知识,提高感性和理性认识,从而产生新的构思。把这种构思结果输入到系统中去,系统会将处理后的状态实时显示或由传感装置反馈给用户。2.2.2虚拟现实技术的应用目前,虚拟现实技术的应用前景与科学价值已引起了人们的广泛关注,世界上许多国家都先后开展了虚拟现实技术相关课题的研究和开发。由于虚拟现实技术具有可以降低成本,减少危险,克服物理条件的限制等诸多优点,它已经在军事、教[13]育训练、工程技术、建筑工程、医学等方面有广泛的应用前景。在民用方面,目前国外在虚拟现实的应用上主要侧重于历史继承性的应用(如虚拟博物馆、生物演变的模拟),虚拟现实和遥感技术的结合(如气象、宇航事业)以及虚拟游戏的开发。美国波音公司已成功应用虚拟现实技术设计了747的座舱,在医学领域,英国的曼彻斯特皇家医院同索尔福德大学合作,研制了一台三维解剖模拟器,外科医生可以在虚拟环境中进行解剖练习,此外,虚拟现实技术还应用于城市规划[14]的模拟、城市生态建设或改造的模拟实验等。尤其值得指出的是,虚拟现实技术在军事应用方面可谓是发展迅速,其广阔的应用前景也使得各个国家都在这个领域投入了大量的财力和精力。虚拟现实技术在[15]军事上的应用主要在以下3个方面:(1)武器系统性能评价;(2)武器操纵训练;(3)指挥大规模军事演习;随着虚拟现实技术在军事上的广泛应用,对军用仿真的可视化、智能化、网络化与集成化提出了更高的需求。虚拟战场环境是利用分布式交互仿真和虚拟现实技术人工合成的、可支持多武器平台的电子环境,对其生成及关键技术的研究,将在作战指挥训练、攻防对抗演习,现代作战行动的决策与谋划中发挥巨大的作用。9 2.2.3视景仿真技术简介视景仿真是虚拟现实的重要组成部分,是虚拟现实技术最重要的表现形式。它是使用户产生身临其境感觉的交互式仿真环境,实现了用户与该环境直接进行自然交互。视景仿真的基本思想是将不具有直观性的数据以视像形式显示出来,使人们能够在三维图形世界中用以前不可想象的手段来获取信息,从而提高了工作效率。视景仿真采用计算机图形图像技术,根据仿真的目的,构造仿真对象的三维模型或再现真实的环境,达到非常逼真的仿真效果.为了达到逼真的效果,在仿真系统中,需要预先建立复杂的三维场景模型;同时在仿真过程中,会要求对这种复杂的三维视[16]景模型进行实时渲染。[17]视景仿真可分为仿真环境制作和仿真驱动两部分。仿真环境制作主要包括:模型设计、场景构造、纹理设计制作、特效设计等步骤,它要求构造出逼真的三维模型和制作逼真的纹理和特效,这一步骤生成的仿真效果与真实自然环境中各景物的外观越接近,最终效果便越能够让人产生真实感。仿真驱动主要包括:场景驱动、模型调动处理、分布交互、大地形处理等,它要求高速逼真地再现仿真环境,实时响应交互操作等,这一步骤需要开发者对人们在自然环境中的观察习惯非常熟悉,以对各景物在与观察者位置产生相对变化时的运动情况作出适当的判断,以使最终仿真的效果不仅拥有接近真实的外观,更让用户有身临其境的沉浸感。2.2.4视景仿真技术的发展与应用视景仿真的历史开始于20世纪中期。40年代初,美国开始了飞行模拟器的设计。1966年,美国MIT(麻省理工学院)的林肯实验室开始了头盔式显示器的研制。20世纪90年代,美国进行了“扩展的防空仿真系统”(EADSIM)计划,该系统是用于攻防体系对抗研究的作战仿真系统。近年来美国更加重视仿真,将发展“合成仿真环境”作为国际科技发展的7个科技推动领域之一。我国自20世纪50年代开始,在自动控制领域首先采用仿真技术,面向工程建模和模拟计算机的数据仿真获得较普遍的应用。随后又在发展仿真技术的基础之上研制出了一系列复杂仿真系统和实物仿真器。9010 年代,我国开始对分布交互仿真、虚拟现实等先进仿真技术及其应用进行研究,开[13]展了较大规模的复杂系统仿真,与此相应的视景仿真技术显得越来越重要。视景仿真技术是计算机技术、图形处理与图像生成技术、立体影像和音响技术、信息合成技术、显示技术等诸多高新技术的综合运用。它已经在许多领域得到了广泛使用,如城市规划仿真、大型工程漫游、名胜古迹虚拟旅游、虚拟现实房产推销系统、虚拟现实模拟培训、交互式娱乐仿真等等。特别是它十分适于应用在军事领域的作战训练和武器研制方面,例如运用场景模拟技术建立起一个虚拟的、非常逼真的电子战场环境,使攻防双方的作战人员沉浸在由计算机产生的作战环境中,它为武器装备研制、战术演练和训练提供了非常有效、经济的手段和途径,具有十分明显的经济效益并成为军事领域里重要的高科技手段。现在,在很多领域,视景仿真技术已经成为仿真系统软件的一个主要组成部分,它是虚拟现实技术、分布式交互仿真技术研究的主要内容之一。2.3仿真系统的软件平台(1)仿真建模工具视景仿真分为仿真环境和模型的制作以及仿真实体模型驱动两部分。无论采用何种虚拟现实实现方式,要完成整个战场环境仿真系统,首先要解决视景仿真建模问题。三维模型是可视化仿真工作的基础,模型建得越逼真,则越能反映真实实体,[18][19]给人的感觉就越真实,效果越好。在视景仿真领域,主要的建模工具有以下几种:1)采用OpenGL开发专门的建模工具,建立模型库。用这种方式进行建模,由于是从底层开发,因而工作量是非常大的。2)采用AutoCAD、3dsMax等普通建模工具进行建模。3)采用Multigen公司的MultigenCreator工具建模。4)采用虚拟环境建模工具,如VRML等专用的虚拟现实建模语言来完成建模。在三种建模工具中,AutoCAD,3dsmax和Creator各有所长:AutoCAD二维平面绘制和编辑的功能强大;3dsmax对精细建模,复杂建模和材质的真实感表现上占优,11 Creator则在实时虚拟仿真方面独领风骚。这主要是因为这三种软件体系设计之初就是面对不同领域的使用要求而开发的,因此在功能上各有长短。与此同时,它们具[20]有一些功能特点是这三个软件工具所共有的,就是三维建模图形的真实感表现。在本项目的研究过程中,基于项目实际的要求以及Multigen公司Creator建模工具利于实时虚拟仿真的优点,我们采用了该软件作为战场环境的建模工具。(2)模型驱动工具做为建模软件工具Creator的配套软件,Multigen公司的另一个产品VegaPrime则是用于虚拟现实、实时视景仿真及其它可视化领域的应用软件工具。它将易用的工具和高级仿真功能巧妙地结合起来,使我们用户能以简单的操作迅速创建、编辑和运行复杂的仿真应用程序,实现实体模型的驱动和仿真过程。VegaPrime作为实时仿真与虚拟现实应用的高性能软件环境和开发平台,很适合成为我们这个战场环境仿真系统中的实体模型驱动的设计和编写工具。(3)编译平台VC++为了实现战场环境的实时仿真,本仿真系统使用VC++6.0集成环境作为开发和编译的平台,通过调用实体模型驱动软件VegaPrime中的API函数库,传递和交互数据信息,实现可视化仿真。基于以上对建模软件,实体模型驱动软件以及编译平台的分析和比较,最终本仿真系统选择的仿真开发平台以及软件工具的具体版本如下:1)仿真模型创建工具MultigenCreator3.02)实体模型驱动工具VegaPrime1.23)仿真编译平台VC++6.0Creator软件实现各种战场环境的编辑工作,创建战场环境中所需的要素,如战舰,战机,导弹等。VegaPrime软件用来实现战场环境中各种要素的驱动,如战舰的巡游,战机的飞行,导弹的攻击等。VC++6.0集成环境作为开发和编译平台,对实现可视化仿真。12 2.4本章小结本章主要是介绍本仿真系统涉及到的各种技术的平台和背景。首先介绍了HLA高层体系结构的历史与由来,概述了其发展过程,特点,以及在高层体系结构中涉及到的相关概念并阐述了HLA的组成。然后本章接着介绍了虚拟现实技术以及视景仿真技术的历史与发展,并讨论了两项技术的广阔应用前景,尤其是在军事领域的应用。最后本章介绍本仿真系统的软件平台并分析和比较了各种建模工具,实体模型驱动编写工具以及整个系统的开发和编译平台。13 3仿真系统体系结构的设计3.1HLA的原理HLA体系结构运行的核心是RTI(RunTimeInfrastructure)运行支撑系统。RTI是一个按照HLA接口规范开发的软件系统,它相当于一个分布式操作系统,跨计算机平台、操作系统和网络系统。从物理组成上看,RTI由RtiExec、FedExec、LibRTI[21]三部分组成,它们运行在单独的一台工作站。进程RtiExec管理联邦的创建和撤消,并指示成员加入正确的联邦执行。FedExec管理联邦中成员的加入和退出,每一运行的联邦对应一个FedExec进程。LibRTI是一个C++库,为成员开发者提供了HLA接口规范定义的一系列的服务。成员通过LibRTI调用HLA的服务同RtiExec、FedExec以及其它成员进行通信。它能为仿真应用提供通用的、相对独立的支撑服务。联邦成员[22]间通信都要按照HLA接口规范说明所要求的格式通过RTI进行。联邦成员包含两部分内容:联邦成员自身的代码和RTI接口LibRTI部分。前者实现联邦成员的仿真模型,包含模型所需要的各种对象的实现以及成员代理的实现,后者实现联邦成员间的信息交互,包括RTIAmbassador和FederateAmbassador两个代理类以及RTI对象。联邦成[23]员通过LibRTI实现与RtiExec进程、与其对应的FedExec进程以及其他成员的通信。[24]HLA仿真系统结构框图如图3.1所示:联邦成员1联邦成员2联邦成员n……RTI接口RTI接口RTI接口RTI接口RTI接口RTI接口运行时间支撑框架底层通信系统(网络通信或共享内存方式)图3.1HLA仿真系统结构14 HLA联邦的执行过程是以RTIAmbassador和FederateAmbassador为基础进行的。联邦成员通过调用RTIAmbassador完成创建联邦,加入联邦,设置时间管理方式、发布和预定对象类和交互类等工作,并与具体的仿真执行逻辑相结合更新对象类和[23]交互类信息。同时RTI通过回调FederateAmbassador的接口服务获得联邦成员预定的对象类属性和交互类信息。根据RTI与联邦、联邦成员之间的数据通信关系,联邦的执行具体过程如表3.1所示:表3.1联邦的执行过程1启动RTI6注册对象实例2创建联邦7仿真循环3联邦成员加入8退出联邦4设置时间管理策略9销毁联邦5发布和定购对象类和交互类10终止3.2基于HLA的仿真系统开发过程3.2.1联邦的开发步骤开发基于HLA的分布交互仿真系统,应明确联邦成员和联邦的组成,确定联邦成员之间的交互信息;建立联邦对象模型(FOM)和仿真对象模型(SOM);然后对各个联邦成员进行模型实现。[10]联邦的开发和执行过程抽象为六个步骤:(1)定义联邦目标:定义联邦开发所要达到的目标。(2)开发联邦概念模型:对仿真的真实世界进行抽象性描述。(3)设计联邦:确定联邦组成,并给各个联邦成员分配功能。(4)开发联邦:开发联邦对象模型FOM。(5)集成和测试联邦:检查测试联邦对象模型是否达到仿真目的。(6)运行联邦和分析结果。15 3.2.2HLA联邦成员的实现在联邦的开发与实现过程中联邦成员的实现是核心问题,联邦成员模型的内容主要包括三个部分:联邦成员实体模型、交互模型和仿真循环体。实体模型直接描述实体自身的行为特征,或者是一组动力学和运动学方程,或者是一组事件流,可以运用传统的连续系统和离散事件系统仿真方法建立实体模型。交互模型描述系统中各实体之间的交互作用,它基于对象模型模板的FOM和SOM表。仿真循环体是对实体进行仿真的具体实现。这三部分有机结合,组成一个联邦成员,完成特定的仿真任务。3.2.3联邦/仿真对象模型FOM/SOM设计在联邦的开发与实现中另一个关键的问题就是要设计联邦对象模型以及仿真对象模型。HLA中的对象模型主要用来描述两类系统,一类是用来描述联邦中的各个成员(SOM),一类是用来描述联邦中相互之间存在信息交换特性的那些成员(FOM)。OM(ObjectModel)分为三个层次:底层是对象,中间层是联邦成员,上层是联邦,它的描述包括两部分:OMT和OMT扩展。OMT由四个表组成:(1)对象类结构表(2)对象交互表(3)属性/参数表(4)FOM/SOM词典OMT扩展由三个表组成:(1)组件结构表(2)关系表(3)对象模型的元数据成员之间的数据交换是借助于RTI提供的“对象属性”及交互的“公布”与“定购”的服务实现的:在联邦运行过程中,由声明公布对象类属性或交互类的成16 员不断地提供更新的属性值或交互,由定购数据的成员自己接收数据,并把它本地[7]化加以利用。FOM/SOM定义了联邦执行和联邦成员的交互数据,是HLA系统进行数据交互的基础。开发FOM/SOM的过程,实际上是对分布式交互仿真系统中的交互数据进行建模和抽象的过程,要求建立正确的、完整的、同时又利于编程实现的交互对象[25][26]模型,其一般步骤如下:(1)分解仿真任务,确定联邦成员及其仿真的实体类型和事件在开发FOM/SOM的初始阶段,首先需要对仿真任务和仿真想定进行分析和总结,确定联邦执行中需要仿真的实体类和所发生的事件。(2)确定FOM中的对象类和交互类对象类和交互类的设计,实际上是确定各个联邦成员之间的数据流和控制流。各个联邦成员通过发布其它联邦成员感兴趣的对象类和交互类,订购自己所需要的对象类和交互类,来实现联邦成员之间的信息交换和互操作。(3)确定对象类属性和交互类参数的特性需要确定对象类属性和交互类参数的数据类型(Datatype)、基(cardinality)、单位(units)、分辨率(Resolution)、精度(Accuracy)、精度条件(Accuracycondition)、更新类型(Updatetype)、更新速度/条件(Updaterate/condition),对象类属性还需确定可传递/可接收(Transferable/acceptable)特性、可更新可反射(Updateable/reflectable)特性以及路径空间(Routingspace)。(4)生成SOM表确定SOM中每个对象类的属性和每个交互类的参数,填写对象类结构表、交互类结构表、属性表、参数表、属性/参数子表、SOM词典。在该联邦中对象类结构表、交互类结构表、SOM词典为空。(5)综合SOM,生成FOM依据HLA规则,一个联邦只能有一个FOM,该联邦的FOM由SOM组合而成。17 3.2.4HLA联邦成员接口设计RTI软件主要包含三个组件:RTIExec、FedExec和libRTI,它们运行在单独的一台工作站。进程RTIExec管理联邦的创建和撤消,并指示成员加入正确的联邦执行。FedExec管理联邦中成员的加入和退出,每一个运行的联邦对应一个FedExec进程。LibRTI是一个C++库,为成员开发者提供了HLA接口规范定义的一系列的服务。成员通过libRTI调用HLA的服务同RTIExec、FedExec以及其它成员进行通信。联邦成员程序中与RTI接口的部分主要包括:创建并加入联邦,初始化RTI数据,声明公布/定购关系请求时间推进,更新和反射对象属性值,发送和接收交互,退出并撤销联邦等,具体流程如下:(1)开始程序运行(2)初始化成员数据1)创建RTIAmbassdor对象RTIAmb2)创建FederateAmbassador对象fedAmd3)初始化成员仿真对象(3)调用RTIamb.createFederationExecution创建联邦(4)加入联邦执行1)调用RTIamb.joinFederationExecution加入联邦2)若加入时有异常发生,则退出程序(5)获得Fed文件定义的对象类及类属性、交互类及其参数的句柄值1)调用RTIAmb.getObjectClassHandle获取对象类句柄值2)调用RTIAmb.getAttributeHandle获取对象属性句柄值3)调用RTIAmb.getInteractionClassHandle获取交互类句柄值4)调用RTIAmb.getParameterHandle获取交互参数句柄值(6)声明公布定购关系1)调用RTI∷∷AttributeHandleSetFactorycreate为每一对象创建句柄集2)调用RTIAmb.SubscribeObjectClassAttribute定购对象类,调用RTIAmb.18 publishObjectClass公布对象类3)通过调用RTIAmb.subscribeInteractionClass和RTIAmb.publishInteractionClass定购和公布交互类(7)声明时间推进策略1)调用RTIAmb.enableTimeConstrained声明时间推进为Constrained2)调用RTIAmb.enableTimeRegulationg声明时间推进为Regulationg(8)若需创建新的对象,调用RTIAmb.registerObjectInstance进行注册,并记录返回的实例句柄值(9)更新对象实例属性值,发送交互1)更新属性值调用RTI∷∷AttributeSetFactorycreate创建RTI∷AttributeHandleValuePairSet调用RTIAmb.updateAttributeValues更新实例属性值2)发送交互调用RTI∷∷ParameterSetFactorycreate创建RTI∷ParameterHandleValuePairSet调用RTIAmb.sendInteraction发送交互(10)若仿真结束,跳转(8)(11)调用RTIAmb.timeAdvanceRequest请求时间推进(12)调用RTIAmb.tick处理RTI事件,直至允许时间推进,跳转(8)(13)结束程序执行1)调用RTIamb.resignFederationExecution退出联邦2)调用RTIamb.destroyFederationExecution撤销联邦3.3仿真体系结构的设计结合本论文所研究的虚拟战场环境仿真以及HLA高层体系结构中联邦的开发和19 执行过程中的六个步骤:(1)定义联邦目标:定义联邦开发所要达到的目标。(2)开发联邦概念模型:对仿真的真实世界进行抽象性描述。(3)设计联邦:确定联邦组成,并给各个联邦成员分配功能。(4)开发联邦:开发联邦对象模型FOM。(5)集成和测试联邦:检查测试联邦对象模型是否达到仿真目的。(6)运行联邦和分析结果,下面将对系统进行具体分析和设计。3.3.1仿真背景的设定结合当前国内外发展形式,将本虚拟战场环境仿真的背景想定为如下情景:我方巡洋舰在我国东海海域执行任务,在雷达搜索到敌方岛屿火炮阵地以后,经过准备,发射某型巡航导弹一枚,攻击目标。巡航导弹控制系统依靠各种传感器所感知到的数据信息(包括飞行参数和战场环境的信息)作出分析处理,不断更新控制命令控制导弹依据环境采取相应的策略进行攻击。敌方火炮阵地依靠雷达以及预警机探测到我方舰艇发出的导弹后,根据敌方控制中心发出的命令进行机动规避并对我方导弹予以拦截。3.3.2任务空间概念模型的设计根据想定,可以得出本战场环境仿真系统的主要概念模型有巡洋舰,导弹武器系统,导弹控制系统,预警机,敌方火炮阵地,敌方控制中心等,其主要功能为:(1)巡洋舰:模拟舰艇机动特性和行为,完成在海上巡弋的任务。(2)导弹武器系统:模拟不同导弹的外形和构造特征以及其在弹道上的飞行动作。(3)导弹控制系统:根据传感器探测的各种信息,自动解算导弹的位姿以及飞行弹道。(4)预警机:以固定的飞行路径模拟敌方在空中的雷达监控。(5)敌方火炮阵地:模拟敌方阵地目标的机动行为。(6)敌方控制中心:根据预警机获取的导弹信息控制己方火力武器的规避并反击。20 3.3.3对象类/交互类设计对象类和交互类的设计,实际上是确定各个联邦成员之间的数据流和控制流。各个联邦成员通过发布其它联邦成员感兴趣的对象类和交互类,订购自己所需要的[27][28]对象类和交互类,来实现联邦成员之间的信息交换和互操作。(1)对象类设计根据任务空间概念模型,本系统应包含有以下的对象类:巡洋舰,导弹武器系统,导弹控制系统,预警机,敌方火炮阵地,敌方控制中心,仿真管理平台。根据以上对象类的确定,我们可以设计出如下对象类信息表(如表3.2),其中P代表位置,D代表方向或向量,V代表速度,R代表巡逻半径。表3.2对象类信息表对象类属性数据类型巡洋舰ShipPShipDShipVpositionvectorvelocity导弹武器系统MissilePMissileDMissileVpositionvectorvelocity导弹控制系统ControlMisDControlMisVvectorvelocity预警机PlaneVPlaneRvelocitylength敌方火炮阵地EnemyPposition敌方控制中心ControlEnemyPposition仿真管理平台Displaypositionvectorvelocity(2)交互类设计联邦成员之间交换信息是作战建模仿真的基础,HLA交互类用交互名和一系列参数来定义。本系统的交互类包括管理交互、运动参数改变交互以及导弹武器攻击交互等。根据对象类信息表,我们可以设计出交互类信息表(如表3.3):表3.3交互类信息表交互类参数数据类型FiremessagestringDamagemessagestringMissileErrormessagestring21 1)Fire表示我方是否已经发射导弹2)Damage表示我方导弹是否击中敌方目标3)MissileError表示我方导弹是否有功能部件损坏以此判断是否启动容错控制(3)联邦成员对对象类以及交互类的发布与订购关系根据以上对对象类信息表以及交互类信息的设计,我们可以设计出联邦成员对对象类以及交互类的发布与订购关系(如表3.4)表3.4联邦成员对象类以及交互类的发布与订购关系联邦成员发布订购巡洋舰ShipPShipDShipVFireEnemyP导弹武器系统MissilePMissileDMissileVMissileErrorEnemyPControlMisDControlMisV导弹控制系统ControlMisDControlMisVEnemyPMissileErrorFireDamage预警机PlaneVPlaneRMissilePMissileDMissileV敌方火炮阵地EnemyPDamageControlEnemyPMisslePMissleDMissleV敌方控制中心ControlEnemyPFireDamageEnemyPShipPShipDShipV仿真管理平台DisplayMisslePMissleDMissleVPlaneVPlaneREnemyP3.3.4联邦结构HLA联邦是由通过调用RTI提供的服务进行交互的联邦成员组成,联邦成员之[29]间交换信息基于HLA的公布/订购机制。本仿真系统联邦主要由七个联邦成员组成:巡洋舰,导弹武器系统,导弹控制系统,预警机,敌方火炮阵地,敌方控制中心,仿真管理平台。具体的联邦结构图如图3.2所示:22 巡洋舰导弹武器系统导弹控制系统联邦成员联邦成员联邦成员仿真平台预警机敌方火炮阵地敌方控制中心联邦成员联邦成员联邦成员联邦成员运行支持环境RTI计算机网络图3.2联邦结构图3.3.5程序流程和联邦线程虚拟现实环境下的联邦成员既要不断刷新虚拟场景的显示,又要进行联邦成员之间的通信,在虚拟现实环境下的联邦成员的实现中,采用多线程技术,增强了系统的实时性。联邦成员的程序流程和联邦线程分别如图3.3和图3.4所示。联邦运行时,巡洋舰联邦成员和预警机联邦成员根据初始值开始运行,创建联邦,并实时显示场景、巡洋舰和预警机的三维立体效果;联邦创建之后,联邦成员加入联邦,联邦成员之间开始实时互操作,不断更新自己发布的巡洋舰,预警机和导弹对象实例的位置和状态。用户可选择退出联邦、终止操作和发射导弹,当仿真完成后,所有成员退出联邦,由最后退出的成员销毁联邦。23 联邦线程开始开始程序初始化联邦运行程序初始化成员数据创建并加入联邦执行声明发布定购关系界面初始化确定成员时间推进策略创建联邦线程注册对象实例创建虚拟现实仿真线程请求时间推进处理windows消息确定回调函数NoNo更新页面显示时间许可结束程序Yes仿真结束Yes退出和撤销联邦执行结束联邦线程图3.3联邦成员的程序流程图图3.4联邦线程图3.4本章小结本章主要是分析战场环境仿真系统的体系结构并结合具体的仿真要求设计出仿真系统的体系结构。首先本章介绍了HLA高层体系结构的原理以及执行过程。接着24 本文研究了HLA仿真系统的开发过程,并在接下来的内容中详细分析了本战场环境对于仿真系统的要求并按照HLA开发的过程进行具体的细节设计,完成了模型空间的建立以及FOM/SOM对象类的设计并得到了本仿真系统的联邦结构图,通过联邦成员的程序流程图以及联邦线程图进一步阐述了本仿真系统的运行过程。25 4仿真系统模型的设计与实现4.1建模工具Creator简介MultigenCreator是Multigen-Paradigm公司在业界领先的软件工具,为实时应用生成实时的三维模型及地形,是功能强大的专业三维建模软件。该软件运行在所见即所得,三维实时的环境中。它用在视景仿真、交互式游戏、城市仿真、军事仿真[30]等许多领域,在满足实时性的前提下生成面向仿真的,逼真性好的大面积场景。4.1.1Creator软件的特点MultigenCreator软件主要用于模型的建立和地形的处理,它为我们提供了极为友好的用户操作界面,在该界面下可以完成对模型的编辑,修改以及三维预览的工[31][16]作。MultgenCreator除了具有良好的操作界面以外还具有以下一些特点:(1)建模容易、纹理贴图简单、材质丰富应用MultigenCreator建立模型非常方便,它以面作为三维模型的基本处理单位,辅助以点和线,来完成三维模型的建立;对于纹理的处理,MultigenCreator有多种纹理贴图方式,如平面三点贴图、平面四点贴图、立方体贴图、图柱体贴图、圆球贴图等,同时还提供了一种动态纹理贴图,可以根据不同的要求,选择不同的贴图方式,并且相对应的有很方便的调整方式;MultigenCreator还提供了丰富的材质,用户可以选择提供的材质,也可自编辑材质。(2)数据处理合理数据分块处理和分层技术是MultigenCreator数据处理的两大重要技术。数据分块处理即是将数据分成若干块,在使用时实时动态地调用相应块的数据;分层技术即LOD技术(LevelofDetail),根据观察视点的位置,来确定模型的精细程度,距离视点近的模型精细度高,而距离视点远的模型精细度低,距离可以定义,而后模型会自动调整精细程度。采用分块和分层技术大大优化了数据的处理,使得数据处理更26 加合理、高效。(3)与其它软件接口方便,支持多种文件格式MultigenCreator自身文件格式为仿真业界标准文件OpenFlight,它还可出输出其它文件格式,如AutoCAD文件格式、VRML文件格式等,同时它也可以读入其它文件格式,如3DMax文件格式、AutoCAD文件格式等。在图4.1中我们可以看到Creator软件的用户界面,Creator的层级数据库将模型的[32]数据层次化,可以分别对模型的点,线,面以及一组画面进行编辑修改。图4.1MultigenCreator的用户界面4.1.2Creator模型数据结构当前主流三维模型数据格式主要有.max、.3ds、.flt、.obj、.dxf、.dwg、.dem。Creator采用的数据格式是仿真业界的标准数据格式.flt(OpenFlight),它是一个分层的[33][34]数据结构,能同时支持许多对虚拟现实应用十分重要的建模特性:(1)Switch:根据提供的索引值决定物体的不同状态。(2)实例:在一个复杂视景中,会由于使用了大量相同的几何体而使几何体数量27 迅速增加,这将大大增加存储空间。这时,只需要在计算机内存中存放一个实例,并通过几何变换而得到其它位置的物体。(3)外部引用:外部引用可以让用户直接把其他数据库引用到当前的数据库中。引用的数据库能在当前数据库中重新定位。外部引用类似于实例,不同的是它是只读。(4)自由度(DOF):自由度用来在数据库中定义模型某一部分的移动和旋转。经过MultigenCreator编辑和修改过的模型将生成OpenFlight的图形数据格式文件(.flt),该文件可以直接导入实体模型驱动软件Vega进行实时交互应用开发,实现仿真。4.1.3Creator层级数据库Creator包括多种建模工具,这些工具集成在一起,用来创建和编辑模型和数据库。一个数据库创建完毕后,它的层级结构仍可进行调整,而且可以同时更改选定的多个元素。独立的元素可以被隔离出来做更精细的编辑,光源、材质和纹理等都可被分类保存在各自的面板中以便于重复利用。Creator作为一个基本的建模工具,在实时应用中可以最大限度地减少模型中多边形的数量,并具有模型的API编程接口。它为用户提供了一个在可视化层级数据库中创建模型、地形和场景的界面,其OpenFlight数据库使用几何图形、层级和属性来定义实时应用中的模型,并在模型中发挥各自的作用。几何图形定义了一系列坐标点组成的三维模型;层级将模型的点组合成易于编辑和显示的逻辑单元;层级中各节点的属性提供了另外一组数据来定义节点的图形的和物理的特性。OpenFlight格式使用一个多层级的结构来说明数据库中各节点的关系。可视化的图形界面使我们可以非常直观地创建模型,而层级数据库可以使我们轻易地观察和操作模型的各个组成部分。用于实时仿真的模型一般都具有层级结构并以多层节点的方式出现,由一个或多个树型结构组成。数据库中的每一层级包括一个或多个节点。位于最顶层的唯一的一个节点称为数据库的头节点。最底层的是由顶点(Vertex)组成的面(Face)节点,而面节点又组成体(Object)节点,在头节点和体节点之间的是很多不同类型的以一定方式组织在一起的类似组28 (Group)的节点,例如组(Group)节点、不同细节层次(LOD)节点、转换(Switch)节点、自由度(DOF)节点、光源(LightSource)节点等。每一个数据库层级都包括几种类型的节点,按层进行排列。每一种节点(组、体、面等)都有其不同的数据库属性,但有些属性可能不止一种节点拥有。在实时仿真中,如果需要对某节点通过程序进行控制,那么必须为其指定一个特定的命名,不能使用默认命名,否则无法对该节点进行控制。在为节点命名时,需使用有意义的英文单词或汉语拼音,以便于查找和进一步的编辑。各节点可进行剪切、复制和粘贴等操作。在创建模型时,应首先选定其父节点,之后在父节点下创建子节点,这样可使数据库结构更加明晰。Creator的数据库层级结构在建模时十[35]分重要,熟练使用并合理设计其结构,可以使其具有更好的可读性。4.2建模关键技术的分析由于战场环境的仿真是个及其复杂的过程,其中涉及的视景模型包括大规模的地形数据库以及在这个大的地形背景下运动的战场要素模型如坦克,战斗机等,因此作为战场仿真,对系统的实时性和逼真性两方面都达到很高的要求。在实时交互场景中,三维场景和各种物体的绘制是由一个个面组成的,面越多,划分越细,则最终的物体效果将越逼真,但过多的面使得三维动画场景的计算量较大,减慢了物体的渲染速度。为达到画面平滑,必须60帧/秒内,最低不能低于10帧/秒,为保持较[36]好的实时性,最好在30-60帧/秒。而即使现在的计算机的运算速度及图形处理设备已有极大的提高,仍不能完全满足现实中仿真可视化的要求。为了解决实时性和逼真性的问题,本仿真系统中的模型设计使用了六个关键的[37][38]技术以解决在实时性和逼真性之间的矛盾。(1)LOD技术LOD技术是指根据模型与观察者之间距离的远近来调整模型所用多边形的数目,具体说就是对同一物体建立几个(通常3个)不同细节程度的模型。细节度越高,模型显示得越详细,所需的多边形数目也相应增加。比如当描述一个近处的物体时,29 需要精确描述它的细节,我们使用高精度模型。而当描述一个远处的物体时,它在屏幕上仅仅占据很少的象素,完全没有必要将该物体的每一个面每一条线都表现的淋漓尽致,此时如果仍使用精确绘制实际上是一种浪费,而且也加重了图形系统的负担,这时就可以用比较粗糙的模型来代替它。从而可加快处理器的处理速度,更好地实现仿真的实时交互能力。(2)Instance实例技术在创建大型场景时,会用到许多相同或类似的几何体,如一些建筑、树木、路灯等自然景象,或者是虚拟战场场景中的各种重复出现的军用仓库、营房等建筑物模型、各种武器模型、虚拟的士兵模型等,一个个创建然后存储无疑会占用大量的计算机内存、硬盘空间减慢处理时间,从而影响实时显示速度。解决的方法就是使用Instance(实例)技术。相同的几何体可以共享同一个模型数据,通过矩阵变化安置在不同的地方,这时只需要一个几何体数据的存储空间。Instance就好像一个物体的副本,但又不同于副本,因为它仅仅是指向一个已存在的物体,并不实际占用内存。它通过几何变换方法实现。数据库中每个实例可按所需进行比例缩放后应用。使用时内存仅调用一次,大大加快了显示速度。需要指出的是,虽然Instance技术大大节约了内存空间,但当你修改或编辑其中的一个对象时,它的任何变化将使与之相关的其他对象都随之改变。所以使用时需要小心。如果打算生成不同的属性,如不同的纹理,材质等时是不能用Instance技术的。(3)ExternalReference外部引用技术ExternalReference即外部引用,指引用其他数据库中的文件到当前数据库。它对于在不同区域使用相同物体的大型复杂数据库是非常有用的,通过它可以减少硬盘空间,简化数据库。它与Instance不同点在于它是只读的,只能被平移、缩放、转向,而不能在该数据库中编辑,需要修改只能到它原来所在的数据库中修改。在该仿真平台中,充分利用了以上技术,实现了较好的仿真效果。(4)层次结构视图MultigenCreator建模环境同时提供交互的、多重显示和用户定义的三维图形观察器和一个有二维层次的结构图.所有的显示是交互的并且是充分关联的;这种灵活30 的组合加速了数据库的组织、模型生成、修改编辑、赋予属性和结构关系的定义。通过调整层次结构视图提供了对数据库管理的方便方法,从而达到了优化系统的目的。(5)纹理映射技术虚拟环境中仅仅有体和面的结构是不能产生仿真环境的真实感觉的,还需要对表面进行处理即加表面反射和纹理。对纹理的处理,Multigen提供有多种纹理贴图方式;同时还提供了一种动态纹理贴图,可以根据不同的要求,选择不同的贴图方式。(6)LADBM大面积地形数据库管理技术[39]大面积地形数据库管理技术(LargeAreaDatabaseManagement)是一种使图形生成卡能够处理远远超出其计算处理能力的大型地形数据库的新技术。战场环境仿真模拟的地形场景地理面积很大,若正常加载,则现有硬件无法满足,会造成图像的抖动和跳变,无法保持帧连续性,影响了仿真精度。该技术能够根据当前观察点所处坐标动态调整地形数据库的固定起始点的距离坐标,通过选择一个接近观察点的动态数据库起点或地面坐标系统起点作为地形数据库新固定起始点,可使当前观察点与数据库起始点之间的相对距离差值保持在一定的精度范围内,从而使系统能在保证数值精度连续性的情况下处理任意面积大小的地形数据库。4.3武器系统模型的设计与实现为了实现虚拟战场环境的仿真,我们需要利用Creator建模软件为战场的大型场景以及战场中的各种要素如舰艇,飞机,导弹建立模型,通过模型较为逼真的设计[36]与创建,达到仿真中可视化的需求。所有模型的建立应遵循以下几个原则为:(1)提前确立该模型的最终目的(即要达到的程度,需要的技术),以便有效建模。(2)优化目标实时模型系统(如限制软硬件平台,颜色,多边形数目,材质,光源和纹理等参数)。(3)注意模型系统的特殊要求,如各种类型导弹以及导弹库的建立。(4)提高模型系统中重要部分的精度。31 在三维建模的过程中,复杂模型应该有一个清晰的结构,这样有利于模型的添加,修改,删除以及颜色和纹理的修改。通常,这个三维模型的结构和现实世界中复杂模型的层次结构一般要一致。首先我们要设计出整个战场环境仿真中的武器系统。三维武器系统模型库为整个系统提供了各武器装备的真实模型和技术参数支持,是本战场虚拟环境仿真数据[5]库中最具特色的部分。目前,建立三维武器模型库的主要考虑的问题有:(1)标准性。从实战角度出发,各种武器模型要完全反映实际武器的特征,且对同一武器模型,无论在哪一级终端上,既要真实,又要统一。(2)交互性。即要求所建立的武器模型能够便于访问和控制。此外,还要求能够满足多用户同时对一个模型进行操作,用户之间可以并行交互,操作彼此独立。(3)可视化。要保证所建立的武器模型能够在任意平台下浏览,而且不受操作系统的限制,模型库可以跨平台操作。本仿真经过设计,编辑和修改得到了以下的武器模型:巡洋舰模型,航空母舰模型,两种巡航导弹模型,预警机模型,坦克模型以及雷达模型,在这几个模型的设计与制作过程中使用了层次结构视图并使用了纹理映射技术,使得模型更为逼真。如图4.2和图4.3所示可以看到巡洋舰和巡航导弹的模型效果,其余模型效果见附录1。图4.2巡洋舰模型32 图4.3巡航导弹I型模型4.4战场地形环境的设计与实现虚拟战场包括地形,地貌,作战背景,静态和动态实体。地形建模是虚拟战场构建的关键,精确、逼真的地形是作战背景、静态和动态实体生成的基础。Creator软件可以产生高优化、高精度的实时三维场景,它在满足实时性的前提下,能生成面向仿真的逼真性好的大面积精确地形。采用Creator软件的地形数据库模块来实现三维地形的生成,能够批处理操作,生成高级的地形表面,实现纹理映射,其创建地形的核心在于地形生成算法。地形数据主要是建立数字高程模型(DigitalElevationModel,简称DEM)用到的高程数据。可以是等高线、离散的高程点数据及其他具有高程的陡坎线、湖泊平面多边形等。这些数据的来源可以是地形图上的等高线、离散高程数据。可以直接处理航摄影像、机载激光扫描仪扫描的数据或者SAR/INSAR图像来生成DEM。地理纹理来源于航空摄影相片、卫星遥感像片。DEM主要有三种表示模型:等高线模型、规则格网模型和不规则三角网模型。三维地形的表示目前主要使用后两种。规则格网模型,主要是根据已有的离散点数据,内差规则格网顶点的高程。DEM内差本质上是数学上的插值问题。按内插点的分布范围,可以将内插分为:整体内插、分块内插和逐点内插三类。基于格网的内插广泛采用双线性多项33 式内插。采用这种方法的考虑点是:使用最靠近插值点的四个已知数据点组成一个四边形,确定一个双线性多项式来内插待插点的高程。不规则三角网的构建,最关[40]键的算法是Delaunay三角网的产生算法。4.4.1地形生成算法Creator提供的地形生成算法有Polymesh,Delaunay,TerrainCultureTriangulation(TCT)和ContinuousAdaptiveTerrain(CAT)等四种,而基本地形模块只提供了Delaunay这一种算法。(1)Polymesh算法Polymesh算法创建由一个、两个或四个平面多边形组成的方形地形对象,每个对象的大小是位置空间(postspacing)的函数。当平面多边形的顶点共面时,就创建一个平面多边形,否则就将平面多边形分成两个;如果网格(mesh)所含区域包括一个顶峰,就加入一个顶点并将该区域分成四个平面多边形。这个过程作用于整个地形数据库,使之转换为以平面多边形表示的形式。利用Polymesh算法生成的地形是一种以四叉树的形式表示的多分辨率规则网格的地形模型,以由规则排列的三角形组成的矩形网格作为构成数字地形模型的基本元素。(2)Delaunay算法Delaunay算法机制是通过搜索高曲率的区域以及平坦区域、脊和谷的边缘将地形数据转换为多边形。它是将点数据转换为与地形完全吻合的许多三角形,形成一个不规则三角网来表现地形的起伏变化。Delaunay算法最适合硬件所支持的Z缓冲技术,它能随地形起伏变化的缓急而动态地确定生成多边形的数量。当地形起伏较大时,就生成更多的面来模拟;当区域的地形比较平缓时,就产生较少的面来模拟。与Polymesh算法相比,它能够生成更精确的对原始数据集的表示,因此应用更广泛。(3)TCT算法TCT地形转换算法相当于一种限制性的Delaunay转换算法,因为使用TCT算法生成的地形模型只能有一个单独的LOD,而且只能用于批处理地形转换。34 (4)CAT算法CAT算法,主要应用于LOD地形模型的构建。CAT算法要求实时系统作一些额外的计算,使得LOD地形模型的过渡平滑连续。在CAT算法中,LOD模型的切换是通过用下一个较高复杂度的LOD模型生成的一系列三角形代替现有LOD模型的每个三角面来实现的,这使得LOD地形模型的变换连续平滑,避免了相邻LOD层次转换中常见的跳跃现象。CAT算法的三位数据结构层组织是基于三角形区域的,与Polymesh和Delaunay算法相比,具有更高的筛选效率。Polymesh和Delaunay算法在处理LOD地形模型时,是把地形分成较小的地形块(tiles),然后在实时系统进程中切换属于每个地形块的LOD地形模型。利用这种方法生成的三维地形数据库,在实际应用时效率较低,而且不同LOD细节层次之间进行切换时会出现不连续的情况,即模型突变(popping)现象。利用CAT算法生成LOD地形模型时,地表纹理要采用带有地理坐标的纹理模式进行映射。在对地形实际建模过程中,要根据具体情况选择算法。当场景很大时,选择CAT算法比较理想。而当地形变化起伏不大,比较平坦时,Polymesh选择是比较理想的选择。当地形起伏较大时,Delaunay算法能很好地模拟实际的地形特[41]征。4.4.2战场环境中地形模型的建立本战场环境中地形的生成是采用基本地形模块提供的Delaunay算法。在本战场环境的仿真中由于模型要素较多,故地形数据库的数据量特别的大,为了实现仿真的实时性以及逼真性,采取了四个关键技术来解决数据量过大的问题解决这两个要求之间存在的矛盾。(1)LOD分层设置细节技术为本仿真中生成的地形图设置不同的细节精度,按照离视点距离的远近分别设置使得地形数据的调用效率和速度相应的提高了。(2)Instance技术使得本战场环境中大量的植被以及树木模型得以以一个模型的数据量存储与内存中,通过系统的坐标变换实现这些多处出现的模型能够以最少的35 数据存储量达到要求的显示数量。(3)ExternalReference外部引用技术使得整个地形文件得以用一个master.flt文件来调用外部数据库中的其它地形文件,这使得内存中的存储空间相对节省了很多。(4)LADBM大面积地形数据库管理技术同样通过管理视点和地形起点之间的距离并合理控制在一个区间以保证逼真度和实时性的显示要求。本仿真的地形数据是以一个海洋中的小岛为背景,在岛屿中加入城市,高山,植被,以及敌方军事基地,火炮阵地等要素,较为逼真的显示出了一个合理的战场环境。图4.4是海洋及小岛的宏观成像,如图所示,由于地形数据库中的数据量太大,因此整个地形数据被分割成了很多小的三角形块状图,整个地形图由名为master.flt的文件组织起所有的块状文件,通过Creator提供的外部引用技术调入其它的块状地形文件。图4.4海洋及小岛的宏观景象图4.5是小岛中块状图的细节成像,由于在岛屿中的其他要素如城市中的建筑,敌方军事基地等都是通过应用配置文件调入该地形数据库的,所以在本小岛的成像中暂时是看不到这些要素的。36 图4.5小岛的细节成像4.5本章小结本章主要完成整个战场环境仿真的模型设计与实现的工作。首先本章介绍了Creator软件的特点以及Openflight的数据结构,接着分析了六种建立模型的时候用到的关键技术。然后本章分两个小节分别设计和实现了武器系统模型和战场环境地形模型,并且可以看到模型的效果图。37 5仿真系统参数的设计与驱动的开发5.1实体模型驱动工具VegaPrime简介Vega同样是美国Multigen-Paradigm公司的产品,Creator是用于视景建模,而VegaPrime则是用于虚拟现实、实时视景仿真及其它可视化领域的应用软件工具。它将易用的工具和高级仿真功能巧妙地结合起来,使我们用户能以简单的操作迅速创建、编辑和运行复杂的仿真应用程序,实现实体模型的驱动和仿真过程。5.1.1VegaPrime的特点VegaPrime作为实时仿真与虚拟现实应用的高性能软件环境和开发平台,它具有[42]以下特点:(1)图形用户界面:VegaPrime图形用户界面,用来定义和预览Vega应用程序,最后生成用于VegaPrime程序的ACF文件(应用配置文件),在图形用户界面下,可以容易的修改参数,使得非专业编程人员能开发出功能强大的实时应用程序。(2)生成具有实时性和交互性的应用程序:利用VegaPrime开发平台和工具集,可以开发出具有实时性,交互性的应用程序,用户可以通过鼠标和其它设备操纵,从各个不同的角度观看物体,就好象把物体拿在手中任意翻转一样。同时,用户还可以选择不同的运动模式,如飞行、驾驶、飞碟运动等等,用户可以从各个方向以不同的运动模式来观看场景,有身临其境的感觉。(3)功能强大的应用编程接口(API):在NT环境下,Vega的基本开发环境为VC++,它可以很方便地和C++/OpenGL相结合,而且,开发的应用程序可以在IRIX与NT之间移植。VegaPrime的系统结构如图5.1所示:38 OpenFlightModeLynxPrimeMetaFlightFileACF应用配置文件VegaAPIC++VSGOpenGL图5.1VegaPrime系统结构5.1.2VegaPrime用户界面LynxPrimeVegaPrime作为实时仿真与虚拟现实应用的高性能软件环境和开发平台。它由一个图形化的用户界面LynxPrime和一系列基于C++语言的函数库及API组成。LynxPrime用户界面(如图5.2)用来定义和预览VegaPrime应用程序,最后生成用于VegaPrime程序的应用配置文件ACF(ApplicationConfigurationFile)。在Lynx图形用户界面下,用户可以容易的修改系统基本参数和特征,使整个定义过程直观方便,减少了大量代码的编写、函数库及API用于基于用户需求的进一步开发和控制,实现复杂的人机交互。利用Vega类函数,在Lynx中建立漫游所必需的对象,包括场景、窗口、[43]通道、运动方式、观察者、碰撞方式等,建立对象之间的相互联系。LynxPrime的用户界面遵循标准的窗口用户界面规则,非常直观和灵活,并且它最大的特点就是可以实时的预览参数设置的效果,高效方便。39 图5.2LynxPrime用户界面5.1.3VegaPrime的开发过程可视化仿真系统的开发过程通常包括三个主要的步骤:创建三维模型、生成虚拟场景、编写可执行文件。创建三维模型的工作在Creator里进行,将建好的模型保存为.flt格式。生成虚拟场景的工作在LynxPrime中进行,任何.flt格式的模型除了在程序中动态加载外,也都能在LynxPrime中做为object加入到场景中,然后通过调整它们的属性和相互之间的关系生成所需景。LynxPrime本身只能实现一些简单的功能,为了实现复杂的功能,必须以VC++为平台调用VegaAPI函数来实现,最后生成一个可执行文件及供这个可执行文件调用的一个ACF应用配置文件。整个Vega[44]开发的流程如图5.3所示:获取数据资料Creator下建模VegaPrime下配置任务完成生成可执行文件VC下创建应用图5.3VegaPrime开发流程40 [45]开发VegaPrime应用程序的基本步骤是:(1)利用ACF文件进行初始化设置;(2)编写代码,VP模块进行初始化;(3)读入ACF文件中的数据,创建并配置类的实例;(4)调用帧循环方法,渲染、刷新场景;(5)关闭VP模块,结束应用程序。以下显示了一个最基本的VegaPrime应用程序框架:intmain(intargc,char*argv[]){vp::initialize(argc,argv);//初始化VP模块vpApp*app=newvpApp;//创建一个vpApp实例if(argc<=1)//读入ACF文件app->define("simple.acf");elseapp->define(argv[1]);app->configure();//配置vpApp实例app->run();//进入帧循环app->unref();//释放vpApp实例vp::shutdown();//关闭VP模块return0;}整个Vega应用程序的流程图如图5.4所示:41 开始出错提示读取数据No成功否Yes初始化vgInitSys定义vgDefinetSys系统配置vgConfigSys驱动形式判断接受数据同步帧vgSyncFramevgFrameNo结束否Yes结束图5.4Vega应用程序流程图5.2仿真系统参数的设计完成仿真模型的制作以后就要将模型分别加入战场环境并对各种战场要素进行42 必要的配置。战场环境中各种参数的配置以及仿真界面的设置都是在VegaPrime的图形化用户界面Lynx中完成。[36]仿真过程中参数的设置包括很多方面,如模型的调入,窗口的位置和大小,通道在窗口内的布局和图象状态,观察者的对象和定位方式,视点的运动模式,场景内的环境和特效,碰撞检测,选择的输入设备和应用程序等。接下来将结合应用配置文件ACF来对本仿真中的参数设置予以说明。(1)模型文件的调入通过Lynx界面调入的模型文件有岛屿地形文件,我方的巡洋舰,以及巡航导弹文件,敌方的多量坦克,雷达以及预警机模型文件。(2)窗口的位置和大小窗口在Vega中代表的是一条渲染管道(Pipeline渲染管道指的是可视化仿真系统实现中的整个渲染流程),用户指定窗口在屏幕的位置可以使显示效果最理想。本仿真指定窗口文件分辨率为1024×768。(3)通道在窗口内的布局和图像状态通道代表了用户用以观察场景的特定视角,表现为窗口中的一个矩形区域,实际上所有实时的渲染都是通过通道进行的,所以场景要显示出来至少还要定义一条通道。一个窗口可以包括多条通道,它们在窗口中的位置可以重叠。在本仿真中一共定义了三个通道,窗口靠左是上下两个通道,一个是从预警机上方的视角向敌方火炮阵地俯瞰,随着预警机的圆形巡逻轨道转换。一个是从岛屿上方俯瞰全局,包括所有的战场要素。在窗口右方是一个大的通道,视角为巡洋舰的侧方,可以观看巡洋舰和导弹的动作。(4)观察者的对象和定位方式本仿真中定位的对象为三个,一个是岛屿全局,一个是敌方预警机及火炮阵地,还有一个是我方巡洋舰及其上导弹,对于岛屿这个全局对象,观察方式采用的是地图式的平铺视角,对于敌方火炮阵地,将视角定位为预警机上方跟随,对于巡洋舰及其导弹模型,定位方式为跟随巡洋舰运动并处于其侧方。43 (5)模型对象的运动模式在本仿真中,动态的对象目前只有预警机,巡洋舰及其随动的导弹,预警机的运动模式是自定义的圆周运动,根据驱动程序的编写完成其沿固定圆周按照设定的半径进行运动。而巡洋舰的运动模式采用drive模式,模拟汽车在地面上的行驶模式。drive模式由鼠标控制,鼠标左键相当于加速控制,右键是减速控制,中间可以控制巡洋舰的禁止和运动两种状态的切换。导弹的运动模式可以选择驱动程序自定义以及配置参数实现导弹模式的运动模式。导弹运动模式包括制导导弹,火箭弹,弹道导弹和炮弹各种导弹的运动状态。(6)场景内的环境和特效Vega可以提供具有特定功能的模块,通过定义很多参数来实现交互式的视景仿真,实现某些自然环境特效(如日照,光线,雾,雨等特效)和以及战场特效(如烟火、爆炸特效等)。在本仿真中目前只采用了两种特效,一种是预警机的尾迹,两条模拟预警机尾迹的粒子群由预警机尾部双侧喷出。(7)碰撞检测Vega中系统的漫游采用了两个方式的碰撞检测:1)与地形的碰撞检测,使漫游时始终随着地形的改变而改变视点的高度。2)与场景实体的碰撞检测,当碰到场景中实体模型时就不能前进。在Vega中能够对Creator建立的模型文件中各个不同的部分进行分类:地形,军事地物,虚拟人物模型,武器模型等。再根据各个分类中的具体不同(如地形可分为平坦道路,山丘等。静态军事地物有:军用仓库,营房,指挥所等。动态的武器模型实体有:坦克等装甲车辆。虚拟人物模型有:虚拟士兵、假象敌等)设置标记。利用分类标记和所建立的碰撞方式对象,就可以实现实时漫游时的碰撞检测。在本仿真中采用的碰撞检测算法是三角法,即在所需要碰撞检测的运动物体前方设置三个竖线,在物体前方形成等腰三角形,依靠这个三角形与地形或者是其他物体的碰撞来实现对象所需要的碰撞检测。(8)选择的输入设备在本仿真中选取鼠标作为巡洋舰运动方向和速度的控制输入设备。鼠标左键控44 制巡洋舰的加速,点击右键控制巡洋舰的减速,而中键实现巡洋舰运动和禁止状态的切换。5.3实体模型驱动的设计与实现完成了模型的制作以及各种战场参数的设置就可以开始模型驱动的编写。模型驱动的编写使用VC++编程工具,调用VegaPrime工具所带的函数、动态连接库,以[29]驱动建立起来的三维实体模型。程序主要通过循环把场景一帧一帧地渲染到通道上,每帧场景都要得到所控制的模型和观察者的位置、姿态,然后再一帧一帧地改变其位置、姿态,以此来实现模型的运动。当帧刷新率达到一定的值时,就会实现[46]连续的效果。采用VegaPrime工具,模型驱动时可以采用如下一些函数:(1)系统初始化:vgInitSys()(2)寻找所需模型:vgFindObj(ObjectName)(3)得到模型部件:vgFindPart(missile,part,NULL)(4)得到模型位置和姿态:vgGetPos(missile,missile_position)(5)控制模型位置和姿态:vgGetPosVec(missile,missile_position)(6)给模型添加声音:vgAddSnd(missile,weaponFireSnd)在本战场环境仿真系统中,需要完成驱动设计的主要有我方的巡洋舰以及随动的航空母舰,敌方的预警机以及我方巡洋舰舰载巡航导弹,每种模型都希望按照各自的功能实现驱动的设计目标。(1)巡洋舰以及随动的航空母舰在本仿真中,巡洋舰的驱动采用鼠标控制,模拟汽车在路上驾驶,在这里不同的是由鼠标控制巡洋舰在海平面上的运动,鼠标作为控制设备的输入端,由鼠标左键和右键分别实现巡洋舰的加速和减速运动,而中键实现运动和禁止状态的切换。(2)敌方预警机本仿真将敌方预警机的运动方式设为绕固定的中心保持设定的高度以及圆周半径在敌方火炮阵地上方巡弋。预警机这样设计运动轨迹是为了配合预警机这个联邦45 成员能够根据自身的巡弋半径和高度这两个参数实现我方巡航导弹以及舰只的部分信息,通过不同高度和半径的设置,实现不同的侦察和获知信息的能力,巡弋半径越大这个能力越强,但是面临的被我方攻击的几率越大,同时信息的反馈也越难。敌方预警机实现运动的部分代码如下所示:constfloatORIGINX=-6810.0f;//设定起始横坐标constfloatORIGINY=1400.0f;//设定起始纵坐标constfloatORIGINZ=800.0f;//设定起始高度坐标constfloatRAD_FLIGHT=500.0f;//设定巡弋半径constfloatH_RATE=0.25f;//设定偏转率while(s_vpKernel->beginFrame()!=0){floathsin,hcos;m_hpr[0]+=H_RATE;if(m_hpr[0]>360.0f)m_hpr[0]-=360.0f;vuSinCos(m_hpr[0],&hsin,&hcos);m_xyz[0]=ORIGINX+RAD_FLIGHT*hcos;//刷新坐标m_xyz[1]=ORIGINY+RAD_FLIGHT*hsin;m_xyz[2]=ORIGINZ;m_pE2C->setTranslate(m_xyz[0],m_xyz[1],m_xyz[2]);//通过Vega的APIm_pE2C->setRotate(m_hpr[0],m_hpr[1],m_hpr[2]);//函数将新坐标送入s_vpKernel->endFrame();//仿真模型}(3)巡航导弹的控制仿真中巡航导弹方位姿态与行为的控制由于导弹飞行过程的运动状态呈现多阶段性,运动形式复杂性与时效性,在仿真系统中应能精确地控制实体模型表现出与实际过程一致的运动状态。在本系统中主要使用Vega的嵌入式API函数基于矩阵变换实现实体模型的方位角与空间位置的更新下面是实现实体模型方位姿态与行为控46 制的程序模块。由于导弹的飞行数据参数取决于导弹自身的气动力学方程以及控制方程,所以在此仅研究导弹控制的函数,导弹在仿真中的运动方式还是采用随动,跟随巡洋舰一起运动,导弹实现实际飞行状态的仿真还有待于具体飞行参数的获取以及气动力方程的结算。StoreInitPositionToStack(InitialPosition,InitialPositionMatrix);//初始空间状态存入矩阵堆栈GetPositionDataFromFile(Position,DataFileName);//从飞行状态数据库中获取当前状态数据VgGetPosVecD(Position,x,y,z,h,p,r);//获得当前方位状态数据的各因子vgPushMatStack(InitialPositionMatrix);//矩阵堆栈压栈防止初始状态丢失vgTransMat(InitialPositionMatrix,x,y,z);//根据初始位置和当前位置因子进行空间位置变换并把坐标原点变换到实体模型自身的坐标原点上为下一步方位角旋转做准备vgRotMat(InitialPositionMatrix,p,'x');//更新偏移角vgRotMat(InitialPositionMatrix,h,'y');//更新俯仰角vgRotMat(InitialPositionMatrix,r,'z');//更新滚动角vgGetMat(InitialPositionMatrix,NewPositionMatrix);//从矩阵堆栈获得新状态矩阵vgPosMat(Position,NewPositionMatrix);//从新状态矩阵获得控制实体模型的新空间状态UpdatePosition(Missile,FlameFx,SmokeFx,SoundFx,Position);//更新实体模型和特效在开始驱动的编写前首先要完成编译开发平台VC++的设置工作,这样才能顺利完成整个开发。为了运行应用程序,我们需要建立VC的编译环境,VC里要做的事情就是创建workspace、配置project、添加files,然后编译运行即可。具体的VC++环境的配置见附录2。47 5.4仿真效果分析在VegaPrime预览功能里可以看到仿真调入各种战场要素以及地形图以后的预览效果(如图5.5所示)。从预览的效果里面可以看出预警机处于禁止状态,且尾翼的特效无法显示。图5.5预览效果相比较预览里的仿真效果,经过VC++编译ACF配置文件以及编写的驱动文件以后生成的可执行文件.exe的仿真效果与VegaPrime的预览功能的差别在于,不仅可以看到预警机的动态效果及其尾迹,而且可以用鼠标控制巡洋舰的运动速度与运动方向,并实现碰撞检测(如图5.6)。从全局的通道里也可以清楚的看到巡洋舰以及航空母舰的运动轨迹,仿真效果较为逼真。48 图5.6可执行文件的效果图5.5本章小结本章主要是利用VegaPrime软件设计实体模型的驱动。首先介绍了VegaPrime软件的特点以及开发流程,然后对本战场环境中各种参数进行了设计与实现,主要包括窗口,通道,视角以及运动模式和碰撞检测算法。最后本章结合实际的仿真要求,对巡洋舰,预警机以及导弹的驱动做了分析与设计并通过预览以及编译生成可执行文件的执行分别比较了两种情况下仿真系统的仿真效果。49 6总结和展望6.1总结战场环境的视景仿真涉及很多方面的知识,为了实现高度的逼真性,实时性和交互性,需要研究者做很多工作。本论文以一个军工项目为依托,主要做了如下工作:(1)结合HLA分布式仿真的高层体系结构的原理和设计方法,分析和设计了本战场环境仿真的系统结构,完成了各个仿真联邦的初步设计。(2)在研究建模软件Creator的基础上,完成了战场环境仿真系统的建模工作,主要包括战场地形和武器系统的模型建立详。(3)采用驱动软件VegaPrime完成了战场环境中部分模型的驱动开发工作,包括巡洋舰和预警机,并在VC++平台下完成了系统配置,实现了整个战场环境的仿真,取得了理想仿真效果。6.2展望(1)目前系统最主要的改进方向是完善基于HLA的系统结构,实现支持联邦成员之间互操作的六类标准服务,即联邦管理服务、声明管理服务、对象管理服务、时间管理服务、所有权管理服务和数据分发服务。(2)目前仿真最主要的改进方向是进一步实现导弹模型的驱动,完成导弹攻击敌方火炮阵地的仿真效果,并加入一定的特效使仿真更为逼真。(3)在模型上,需要研究地形数据的数据结构,以便获取高程数据,为进一步实现导弹的控制算法做好准备。(4)在具体的导弹打击敌方火炮阵地的仿真中,着重研究导弹从巡洋舰发射以后与敌方目标和整个地形之间的坐标变换关系。50 致谢时光如白马过隙般流逝。转瞬间,两年研究生阶段的学习生活已经到了尾声。回首这段美好的时光,我很高兴自己能够进入智能控制与机器人实验室。在这个实验室里有导师的关怀指导,有实验室兄弟姐妹的指点帮助;这里有紧张工作,也有欢声笑语。在这里,我学到了如何研究问题,分析问题;我也学会了如何保持一股科学实践的精气神。这两年每一步的成长,都应该是在导师和师兄师长的帮助下实现的。首先,感谢我的导师黄心汉老师。两年的研究生生活,黄老师给予我了很多帮助。在研究上,多次与我讨论我的研究方向,帮我找到适合我的前进方向。在机器人原理的课堂上,黄老师上课认真,一丝不苟的工作态度让我领略了大师的风范。另外,要感谢指导我完成项目和毕业论文的彭刚老师。彭老师非常认真,他在我的工作和研究过程中,给予我了极为中肯和有益的建议。彭老师教导我们天道酬勤,学习和科研应脚踏实地。这些使我受益匪浅。我还要感谢在研究生阶段给予我很多帮助的王永骥老师、王敏老师,以及在最后论文成型阶段提出宝贵修改意见的周纯杰老师。还要感谢与我合作完成项目的四个博士生,尤其是崔宇,感谢他们的帮助和指点。当然还要感谢父母,感谢女友,是他们为我的研究生生活提供保障,分享快乐和困苦。最后,向所有支持过我,帮助过我的每一个朋友表示由衷的感谢。正是有你们,我的求学道路走得才如此的顺利而快乐。黄为5/28/200751 参考文献[1]GonzalezAJ,MullallyD,GonzalezG.AHierarchicalRule-basedArchitectureforImplementingIntelligentAdversariesinaSIMNETEnvironment.in:Proceedingsofthe13thInterservice/Industry,TrainingSystemsConference,1991[2]FranceschiniRW,KarrCR.ProposalforRevisionoftheDISAggregateProtocol.in:Proceedingsofthe11thWorkshoponStandardsfortheInteroperabilityofDistributedSimulations,1994[3]DaileyPS,etal.StatusReport:JSIMSEnvironmentalTailoringServies(JETS)TailoringAlgorithmsandFrameworkAssessment.99S-SIW-154,1999[4]赵沁平,沈旭昆,吴威等.分布式虚拟环境DVENET研究进展.系统仿真学报,2000,12(4):291-295[5]赵沁平.分布式虚拟战场环境—现代战争的实验场.系统仿真学报,2001,13(11):1-7[6]周彦,戴剑伟.HLA仿真程序设计.北京:电子工业出版社,2002.6[7]张笑瀛,宋贵宝.基于HLA的反舰导弹突防仿真系统研究.计算机仿真,2006,23(6):271[8]FrederickKuhl,RichardWeatherly,JudithDahmann.AnIntroductiontotheHighlevelArchitecture.NationalDefenseIndustryPress,2003.1-30[9]郭文刚,宋善德.基于HLA的分布式通信网络仿真技术.计算机仿真,2004,21(8):91-92[10]刘奎平,袁志勇,顾晓东.基于HLA的水面舰艇反潜仿真系统研究.仿真技术,2006,267[11]吴金平,王海京,陆铭华.基于HLA的潜艇作战仿真训练系统.火力与指挥控制.2006,31(12):64[12]陈昊,洪景新,陈辉煌.基于Multigen和Vega的场景仿真系统技术.厦门大学学52 报,2005,44(3):352[13]杨建国,王乘.基于Multigen和Vega的虚拟现实技术.计算机仿真,2003,20:75[14]王炜,吕光宏,张正维等.基于虚拟现实的飞行训练视景系统.计算机仿真,2004,24:128[15]陈瑞,张锡恩,刘鹏远等.虚拟现实技术在某型导弹操作训练中的应用.计算机工程,2002,28(9):246[16]程文俊,陆宇平.基于Multigen平台的飞机飞行可视化研究.计算机与数字工程,2005,33(8):15[17]吴义明,齐欢.导弹对抗的视景仿真.计算机仿真,2005,22(8):28[18]宋志明,康风举,唐凯等.水下航行器视景仿真系统的研究.系统仿真学报,2002,14(6),761[19]王伟红,李付林,芦伟等.导弹发射的可视化仿真.导弹与航天运载技术,2006,281:54[20]DonaldHearmM.PaulineBaker.ComputerGraphics(SecondEdition).北京:电子工业出版社,2002[21]付正军,王永红.计算机仿真中的HLA技术.北京:国防工业出版社,2003[22]黄柯棣,张金槐,李剑川.系统仿真技术.长沙:国防科技大学出版社,1998[23]HighLevelArchitecturerun-timeinfrastructureprogrammerguide.Version1.3,DMSO.1998[24]崔建江,商云鹏,龙德.基于HLA和VR的防空导弹作战仿真系统研究.系统仿真学报,2006,18(8):2137[25]褚彦军,康凤举.分布交互环境下的视景系统研究与开发.计算机仿真,2004,21(1):32-35[26]董光波,张锡恩.联邦式操作训练仿真系统对象模型设计方法.计算机仿真,2004,21(10):201-205[27]张宇宏,胡亚海,彭晓源等.基于HLA的防空导弹武器系统仿真平台研究.北京53 航空航天大学学报,2003,29(1):1-4[28]GoldiezB.Real-TimeVisualSimulationonPC.ComputerGraphicsandApplications,IEEE,1999,19(1):11-15[29]王乘,周均清,李利军.Vega实时三维视景仿真技术.武汉:华中科技大学出版社,2005[30]吴晓君,王昌金.基于Creator/Vega的战场飞行视景系统的实时仿真.系统仿真学报.2005,17(9):22-97[31]殷宏,王志东,许继恒.基于Creator/Vega的战场视景仿真.解放军理工大学学报,2005,6(2):137[32]梁永恩,邹勇,丁方颐.Creator/Vega及其在船舶航行视景仿真系统中的应用.应用科技,2005,32(4):37[33]何江华.计算机仿真导论.北京:科学出版社,2001[34]张秀山.虚拟现实技术及编程技巧.长沙:国防科技大学出版社,1999[35]王延红,杨平利,仇小鹏等.仿真建模软件Creator的应用技术.计算机仿真,2005,22(7):179[36]王乘,周均清,李利军.Creator可视化仿真建模技术.武汉:华中科技大学出版社,2005[37]洪光,李洪儒,牟建国.基于Creator的三维模型简化研究.计算机仿真,2004,12(1):57-58[38]Multigen-ParadigmInc.CreatingModelsforSimulation.version2.6.USA:Multigen-Paradigm,2003[39]MultigenParadigmInc.VegaPrimeLADBMProgrammer’sGuide.Version1.2.Multigen-Paradigm,2003[40]TheMultigenCreatorModelingGuide.Version2.5.1.U.S.A:MultigenParadigmInc,2002[41]舒娱琴,唐丽玉,彭国均.采用creator生成三维地形.测绘信息与工程,2003(10)[42]MultigenParadigmInc.MultigenCreatorUser’sGuide.Version2.5.1.Multigen54 ParadigmInc,2003[43]MultigenParadigmInc.LynxUser’sGuide.USA:MultigenParadigmInc,2003[44]吴家铸,党岗,刘华峰等.视景仿真技术及应用.西安:西安电子科技大学出版社,2001[45]任庆龙,赵明辉,李龙等.场景模型的建立及快速显示.青岛大学学报,2002,26(2):56-59[46]MultigenParadigmInc.VegaPrimeProgrammer’sGuide.Version1.2.USA:Multigen-ParadigmInc,200355 附录1武器系统模型图示航空母舰模型图巡航导弹II型模型图56 预警机模型图坦克模型图57 雷达模型图58 附录2VC++环境的配置方法为了运行应用程序,我们需要建立VC的编译环境,VC里要做的事情就是创建workspace、配置project、添加files,然后编译运行即可。(1)创建VC++6.0的workspaceStep1检查并确认当VP安装完时,系统环境变量中已经配置了如下参数:1)MPI_LOCATE_VEGA_PRIME,值为安装目录2)MPI_LOCATE_VEGA_PRIME_LIB,值为lib目录Step2选择开始-》程序-》MicrosoftVisualStudio6.0-》MicrosoftVisualC++6.0,打开VC编译环境Step3在菜单中选择File-》NewStep4选择Workspaces标签Step5在Workspacename中输入myApplicationStep6在Location中指定一个位置Step7点击OK,可以看到FileView中生成一个新的名为myApplication的WorkspaceStep8选择File-》NewStep9选择Projects标签Step10在projects列表中选择Win32ConsoleApplicationStep11Projectname中输入myProjectStep12选择AddtocurrentworkspaceStep13点击OK,出现Win32ConsoleApplication的向导Step14选择AnemptyprojectStep15点击FinishStep16在出现的NewProjectInformation对话框中,确保路径是C:workspace保存路径myApplicationStep17点击OK,就可以看到一个project出现在当前的workspace中59 (2)配置projectStep1选择Projects-》SettingsStep2在SettingsFor列表里,选择AllConfigurationsStep3选择Debug标签Step4在Programarguments中输入ACF文件的保存路径加上文件名Step5选择C/C++标签Step6在Category列表中选择CodeGenerationStep7在Userun-timelibrary列表中选择MultithreadedDLLStep8Category中选择PreprocessorStep9在Additionalincludedirectories中加入下列值:1)$(MPI_LOCATE_VEGA_PRIME)includevsgstlport2)$(MPI_LOCATE_VEGA_PRIME)includevegaprime3)$(MPI_LOCATE_VEGA_PRIME)includevsgStep10选择Link标签Step11在Category列表中选择InputStep12在Additionallibrarypath中输入$(MPI_LOCATE_VEGA_PRIME_LIB)Step13点击OK(3)添加filesStep1选择Project-》AddToProject-》FilesStep2找到myProject.cpp所在目录Step3选择myProject.cpp文件Step4选择Build-》BuildmyProject.exe编译程序Step5选择Build-》ExecutemyProject.exe运行程序60

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭