一种分布式三维虚拟环境的实体模型动态调度方法

文档序号:8340286阅读:357来源:国知局
一种分布式三维虚拟环境的实体模型动态调度方法
【技术领域】
[0001]本发明属于三维可视化仿真领域,尤其涉及诸如虚拟战场这类大规模复杂虚拟环境中的实体模型动态调度方法。
【背景技术】
[0002]分布式三维虚拟环境是一种基于虚拟现实技术与网络技术的实时网络交互环境,它通过分布在各地的计算节点之间的通信,共享虚拟三维环境的局部或全局数据信息,协同完成分布到多计算节点上的任务,给用户提供一种整体的、真实的、可沉浸的虚拟三维空间。分布式三维虚拟环境技术由于其扩展性好,适应性广等特点,已在军事仿真、网络娱乐等方面得到了广泛的应用。
[0003]随着计算机图形技术的发展,分布式三维虚拟环境的图形效果越来越逼真,随之带来存储量和运算量的急剧增加,针对这一问题,目前通常采用out-of-core技术将场景数据根据需要动态调入调出内存,但由于外存数据获取速度较为缓慢,频繁的内外存数据交互必然会引起系统延迟,使渲染帧率变得非常不稳定。
[0004]对于虚拟环境中的静态模型(整个渲染过程中空间位置和状态保持不变的模型),通过在数据调度的基础上引入数据预测机制,即预先判断并获取与未来需求密切相关的数据集,将可能突然增加的调度量平均到多个帧间完成,保证渲染平滑连续。但是对于虚拟环境中的动态模型,由于在分布式三维虚拟环境中存在着大量的构造复杂的实体模型,且这些模型空间位置和状态一直处于随机的动态变化之中,无法引入数据预测机制进行预测,因而无法采用现有的技术实现动态调度。

【发明内容】

[0005]为解决上述问题,本发明提供一种分布式三维虚拟环境的实体模型动态调度方法,其在不降低三维虚拟环境内场景实体逼真度的基础上大幅降低实体模型的内外存数据交互频率,从而使得整个场景资源动态调度过程迅速、平滑。
[0006]本发明的分布式三维虚拟环境的实体模型动态调度方法,其方法包括以下步骤:
[0007]步骤1,建立所述分布式三维虚拟场景内各实体模型的层次化数据结构,并将所述实体模型内每个部件分别保存为一个模型资源文件;
[0008]其中,所述层次化数据结构为:实体模型内各部件的层级结构、各部件名称、各部件的局部坐标系和各部件的定位点;
[0009]步骤2,以外部文件的方式建立所述分布式三维虚拟场景内各仿真节点发送的实体模型状态信息数据包PDU与模型类模板的映射关系,所述映射关系为:实体模型ID、完好状态state与模型类模板的模型类名template、派生方式码mod--对应;
[0010]其中,所述实体模型状态信息数据包PDU包括:实体模型ID、实体模型的三维空间坐标和完好状态state ;所述模型类模板的内容包括模型类名template、基础模型和派生模型;所述基础模型包括:部件层级结构、基础部件对应的外部存储器中的步骤I保存的模型资源文件、基础部件识别码;所述派生模型包括:派生方式码mod、派生部件对应的外部存储器中的步骤I保存的模型资源文件、派生部件识别码和派生部件的装配偏移量和装配相对方向;
[0011]步骤3,创建从三维虚拟环境回收不可见实体模型的缓冲池Ml和存放三维虚拟环境中所有可见实体模型索引的存储池M2 ;
[0012]步骤4:获取当前帧三维场景视点信息,并结合所述实体模型状态信息数据包进行实体模型的可见性判断,将已存在于场景中的不可见的实体模型放入缓冲池M1,并将其模型置为不可见、将其模型的索引从存储池M2中删除;对场景中不存在或已存在但完好状态发生变化的可见的实体模型,根据步骤2中的映射关系和缓冲池Ml中存在对应的模型类模型实例情况,或进行实体模型重用操作、或进行实体模型重组操作、或进行实体模型重构操作。
[0013]进一步的,所述步骤4包括:
[0014]步骤40,获取当前帧三维场景视点信息和所有仿真节点发送的rou,其中三维场景视点数据包括视点的位置、方向、水平视场角和可见距离;
[0015]步骤41,根据实体模型的三维空间坐标和三维场景视点数据计算各实体模型的观察角和视目距离,并对从网络中接收的所有PDU进行遍历判断:若观察角和视目距离均处于设定的观察范围和视场角之内,则实体模型为可见实体模型,执行步骤44;否则实体模型为不可见实体模型,执行步骤42 ;
[0016]步骤42,以实体模型ID为关键字搜索M2内其对应的实体模型索引,如果搜索到,则说明该实体模型在三维虚拟场景中存在,则执行步骤43 ;如果未搜索到,则说明该实体在场景中不存在,不需要进行处理;
[0017]步骤43,将实体模型以及实体模型的索引、template和mod加入缓冲池Ml,并将该实体模型置为不可见;同时将该实体模型的索引从M2中删除;
[0018]步骤44:以实体模型ID为关键字搜索M2内其对应的实体模型索引:
[0019]如果搜索到,则说明该实体模型在三维虚拟场景中已存在,进一步判断该实体模型的state是否发生变化,如果发生变化则先执行步骤43,然后执行步骤45 ;如果未发生变化,说明该实体模型不需要更新,不执行调度处理;
[0020]如果未搜索到,说明该模型还未加入到三维虚拟场景,执行步骤45 ;
[0021]步骤45,根据实体模型ID和state从步骤2中建立的映射关系中获取模型类模板的template和mod,并在Ml中进行检索,如果检索到template和mod的值都匹配的实体模型,则对该模型执行步骤46的模型重用操作;如果只有template的值匹配,则进入步骤47的模型重组操作;如果template和mod都不匹配,则进入步骤48的模型重构操作;
[0022]步骤46,模型的重用操作:将实体模型的索引加入M2,并置为可见,同时将模型的索引、template和mod从缓冲池Ml中删除;
[0023]步骤47,模型的重组操作:在缓冲池Ml中查找template相同,mod差值绝对值最小的模型,将该模型称为原始模型,将需要重组的模型称为目标模型;在template对应的模板资源文件中找到目标模型mod对应的派生方式描述T和原始模型mod对应的派生方式描述0,首先对T中所有的部件识别码进行遍历,将原始模型中对应的部件替换为T指定的部件;然后对O中的所有的部件识别码进行遍历,首先判断部件识别码是否在T中存在,若存在,则不进行任何操作,若不存在,则将原始模型中对应的部件替换回基础模型对应的部件;对原始模型执行步骤46的模型重用操作;
[0024]步骤48,模型构造操作:依据template对应的模板资源文件中的基础模型部件层级结构,按照自顶向下的顺序依次加载外部存储器中基础部件的模型资源文件,构造出基础模型B ;如果mod不等于0,按照步骤47对基础模型B执行模型重组操作;将重组后的模型索引加入M2,并置为可见。
[0025]进一步的,该方法还包括动态调整缓冲池Ml中各模型类的模型实例数量比例的步骤:在某一时间段内对所有模型类调出和存入缓冲池的模型实例数量以及当前缓冲池内存储的模型实例数量进行统计,如果存入数量远大于调出数量,则将缓冲池内该模型类的模型实例数量减半;如果调出数量大于存入数量,则将缓冲池内该模型类的模型实例通过复制,将其数量增加调出与存入差值的二倍。
[0026]进一步的,该方法还包括动态调整缓冲池Ml大小的步骤:在某一时间段内对缓冲池内所有模型类的模型实例总数量进行统计,如果大于某一阈值,以该时间段内不同模型类的模型实例数量的方差值作为优先级,对模型类的模型实例进行删除。
[0027]有益效果:
[0028]本发明的实体模型动态调度方法以xml模板构建模型部件-模型类-模型实体的层次化的模型数据结构为基础,在动态调度过程中实现了实体模型的部件级重用,减少模型几何数据和纹理数据对内存资源的消耗,并减少内外存储器的交互频率,确保虚拟场景渲染的实时和平滑。
[0029]本发明针对大规
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1