战场仿真中的三维实体模型管理系统

(整期优先)网络出版时间:2019-01-23
/ 2
摘 要 三维实体模型是战场仿真体系的重要组成部分。为了有效的管理和利用大量的三维实体模型、模型的组成元件,需要建立一个高效的实体模型管理系统。本文对模型管理系统的总体结构、功能、关键技术等进行了系统论述。针对模型复杂等问题,文章采用面向对象的模型表示方法。初步实现了系统的基本功能。

关键词 战场仿真; 实体模型 ; 模型管理系统


1 引言

战场仿真,是利用计算机软件的强大模拟功能,基于先进的仿真技术和开发环境,对军事作战领域内的各种作战条件、武器装备、兵力部署等进行逼真的模拟,形成一个虚拟的“数字化”战场,以便进行实战演练和作战效能分析[1]。在虚拟的战场中存在大量的实体模型,如坦克车辆武器装备等,这些模型是战场仿真的重要组成部分。对模型进行合理有效的管理直接影响到战场仿真体系的真实性和高效性,影响整个体系的运行能力。为了更加有效地对这些模型进行管理和重用,同时也为了加快建模速度,需要建立一个模型库管理系统来对这些模型、组成模型的元件以及建模所用到的纹理等进行管理,并实现三维模型或者元件的标准化。因而建立实体模型库管理系统是开发具有逼真性扩展性战场仿真体系的前提和重要工作。

2 系统结构


模型库将所有模型集中起来进行有效管理,其功能相当于数据库管理系统。但是模型库里存放的是较为复杂的三维实体,涉及了大量不同的参数及参数之间的复杂关系。模型库管理系统总体框架如图1:

1711161938.jpg

图1 模型库管理系统总体框架

其中,仿真体系中应用实体模型时必须通过模型库管理系统来访问。模型管理员利用收集的模型元信息对模型库进行设计、实现、维护、集成、协调等管理。内部数据库储存的是用来描述模型一般属性的静态信息,包括如下属性:模型编号,模型名称,模型功能,适用条件,执行文件名,使用频率,使用说明,有效性系数等。模型库中的模型和相关的数据库中的数据都受模型库管理系统的管理,只有通过模型库管理系统才能够访问模型和相关的数据,不能够直接通过数据库访问有关模型的数据[2]。

3 系统功能设计:

模型库系统功能模块如图2所示

1711177123.jpg

图2 模型库系统功能模块图

(1)模型维护

模型维护包括模型的建立、更新、删除、检索、验证等功能。

·模型建立:建立新模型,并将新模型入库,同时建立模型各种信息录入内部数据库,并建立对应关系。

·模型更新:由于客观情况的变化,可能要对模型作适当修改,这时授权用户可根据情况及时、方便地对库中模型信息进行修改。

·模型验证:通过系统建立的标准对库中模型进行验证确认,以保证模型是否完整,模型与其属性信息的对应关系是否正确等。

(2)模型操作

模型操作主要包括实体模型的整体和细节显示、分解、旋转、缩放、换肤、运行等。

(3)接口功能

接口功能由接口模块实现,是模型库与外界的联系,其主要功能是向其他系统提供应用程序,以供外界方便的调用。

(4)系统分析

系统分析主要功能是提供模型库系统信息及注意事项、分析评估内部模型

4 模型库的关键技术

在模型库的实现过程中,模型的表示与重构、模型库的接口技术等都是其关键问题。

4.1 模型的表示

为了能够实现对虚拟环境中模型的高效管理,需要对模型进行层次化和组件化。层次化要求对模型进行详细的分类,组件化要求将模型最终化分为不需要进一步分解的原子模型,然后在此基础上组合成用户所需要的组合模型[2]。首先对模型的类型进行层次化的分类,将战场仿真环境中的实体进行进一步的分类,对类型分类的基础上可以提出具体可应用的模型,然后对应用模型进一步分解,最终得到不能够或不必要进一步分解的模型称为原子模型。这样就将模型分为了三个层次,分别为模型类型层、应用模型层和原子模型层,便于存储管理。对于单个模型,本系统采用面向对象的模型表示。模型可以表示成一个三元组的形式:{M_id, M_attribute, M_operation}[3]。M_id是模型的标识符,相当于身份确认;M_attribute 用于描述模型的各类属性。对于组合模型还需要增加两类属性:子模型列表和子模型参数信息。子模型列表包括组成该组合模型的各子模型的顺序信息,子模型参数信息是组成组合模型时子模型的接口信息;M_operation 描述模型的操作,包括模型的集成,调用,运行等操作。之所以采用这个方法是因为很多大型装备有共同之处,可以用少数子模型组合出大量整模型,减少了库中的储存量。本文是以工程兵的装备为主要研究对象。例如实体可分为武器、车辆等。在车辆中的模型有扫雷坦克、布雷坦克、坦克架桥车等。履带式布雷车模型与坦克车模型可以通用一种履带,所以存储时只用存一条履带和两个不同的车体。

4.2 模型的重构

模型重构是指一些简单的子模型组合成所需的整体模型或是复杂模型分解成子模型。这个过程是由开发工具通过对模型进行裁减完成的。接口间的联系是模型进行裁减的依据,是模型组合信息的重要内容,通过联系的改变可以完成对模型的裁剪。编译之后的新模型要进行测试验证。功能属性符合要求,运行正常的模型认为是安全可用。重构技术减少了库中模型的存储量还可以让战场仿真中的指挥员查看装备的某些部分,即子模型的情况。

3.4 接口技术

战场仿真中,模型库与其他系统紧密联系,需要建立接口关系,以便接到访问请求,调用请求,进行模型传输等。接口类型有:模型库与内部数据库的接口,模型库与外部系统的接口。对于不同的系统接口设计不同。接口关系在模型库系统中起着重要的作用,只有通过这些接口模型库系统才能够与其它系统进行交互,没有这些接口,模型库系统将无法提供服务。对于不同的系统,由于服务的要求有所不同,所以接口的设计也会不同。其与外界建立联系的过程大致如下所述:应用系统调用模型库中模型时,向模型库管理系统发出请求命令,在模型库管理系统接到应用系统的请求后,向内部数据库和实体结构库发送相应命令,实体结构库收到命令后在库中进行相应调整编译最后通过接口向应用系统发送模型,向应用系统发送与最终输出模型相关的数据,应用系统在接到模型和与模型相关的数据后,向模型库管理系统发送一个确认。上述过程是由模型库提供的接口函数实现的。接口函数又可分为与内部数据库接口的数据接口函数和与实体结构库接口的模型接口函数两种,是通过链接动态链接库完成。

例如:实现接口调用的类class CDbModel 有一个函数GetComponent 功能是得到实体的一部分

函数int GetModelIndex 功能得到实体模型号

class CDbModel : public CRecordset

{

public:

CDbModel(CDatabase* pDatabase = NULL);

DECLARE_DYNAMIC(CDbModel)

class CDbModel (const int modelIndex,m_eLOD lod) const;

vpObject* GetComponent(m_eComponent,const int modelIndex,m_eLOD lod);

//返回实体的一个部分,NULL表返回失败

const int GetModelIndex(m_eWheel w,m_eBase b,m_eTop t,m_eBarbette,bbt,m_eLOD lod,m_eDamage d) const;

//得到实体模型号

private:

enum m_eLOD{l1,l2,l3};

enum m_eComponent{wheel,base,barbette};

enum m_eBarbette{none = 0,bbt1,bbt2};

enum m_eWheel{wheel1,wheel2,predrail1,predrail2};

enum m_eBase{b1,b2};

enum m_eTop{t1,t2};

enum m_eDamage{good = 1,lightDamage,badlyDamage};

const int ModelIndex(m_eWheel w,m_eBase

b,m_eTop

t,m_eBarbette,bbt,m_eDamage d);

//生成实体模型号

const int BuildModel(const vpObject&

wheel,const vpObject& base,const

vpObject& top,const vpObject&

additional.m_eDamage damage)

const;

}

//由模型部件组合实体模型 返回值为该类实体的索引号

4 小结

本文研究设计了模型库的总体框架、系统功能,提出了基于面向对象的模型表示方法,这种表示方法比较容易实现对模型的修改、更新。在此基础上实现了对模型的重构。目前该系统基本功能已经实现。但是对于分布在不同网络上的不同模型的管理以及接口的行等问题还有待于进一步的研究。

参考文献

[1] 雷鸣,冯永浩. 基于VRML技术的分布交互式虚拟战场仿真. 计算机仿真. 第20卷第11期, 2003年 26-29

[2] 赵新俊. 分布虚拟环境中数据/模型的分析和管理的研究. 学位论文. 北京航空航天大学

[3] 陈吴鹏,李伟华. 面向对象的DSS模型库管理系统设计. 西北大学学报(自然科学版) . 2002年2月第32卷第1期

[4] 刘科研,曾庆良. 支持协同仿真的模型库管理技术研究. 系统仿真学报. 2005年2月,第17卷第2期 327-331