基于二维邻域检索的三维场景中海量模型实时调度方法技术

技术编号:14135106 阅读:83 留言:0更新日期:2016-12-10 02:32
本文提出一种基于二维邻域检索的三维场景海量模型实时调度方法,根据三维场景范围构建对应的二维矢量点图层,再将三维场景中每个模型体中心对应的经纬度坐标点一一绘制在点图层上,实现将模型用点来表示,对得到的二维模型图层构建主邻居四叉树,对构建好的主邻居四叉树进行先序遍历,创建缓存区,将当前场景可视范围内应显示的节点模型存入缓存区,并在场景中加载这些节点,通过对场景中的模型构建一种主邻居四叉树,将基于主邻居四叉树的邻域检索算法用于缓存区的创建和更新,大大降低缓存区的创建更新时间,从而提高了三维场景中模型的检索调度速度。

【技术实现步骤摘要】

本专利技术属于三维场景中模型检索领域,特别是基于二维邻域检索的三维场景海量模型实时调度方法。
技术介绍
在高逼真度的大规模三维场景仿真系统中,通常需要动态调度和显示高精度的地物模型,这些地物模型具有网格精细,纹理分辨率高,且数量巨大的特点,在场景中一次性加载这些模型,往往会造成内存溢出的问题,所以需要根据可视范围的变化在模型数据库中高效地检索调度模型,以保证三维场景中模型实时绘制的流畅性。目前大规模三维场景中海量地物模型组织调度常采用的方法包括基于R树(Real Trees)的空间索引和基于传统四叉树的空间检索两大类。基于R树的空间索引方法对三维场景中的每个模型依次建立包围盒,即最小外接长方体,再将距离相近的模型当作一个整体建立包围盒,以此类推,逐渐扩大包围盒范围,直至包围盒范围等于整个三维场景空间,在进行检索时,需要将包围盒范围与场景当前视锥体范围比较,而三维空间的范围比较十分复杂,计算量很大,使得检索效率不佳。基于传统四叉树的检索方法首先对每个模型投影形状建立最小外接矩形,对这些矩形构建四叉树,建立检索,为提高调用速度,在模型调度时构建缓存区,取一个比可视范围大的矩形范围,通过遍历比较,将在该矩形范围内的节点存入缓存区,若可视范围改变,就从缓存区中遍历获取数据。该方法将三维空间的范围比较简化为二维空间的范围比较,并采用了缓存机制,在一定程度上提高了检索效率,但在每次更新缓存区时,需要对整个四叉树全部遍历,缓存区更新的速度影响了整体的检索速度。若需要对场景中任一模型在某个方位上相邻模型进行检索,由于传统的四叉树模型在构建时只注重了父子节点的关系,所以需要先遍历到与当前节点在同一层次的相邻节点,再依次向下遍历,才能得到检索节点,这对检索速度造成了影响。
技术实现思路
本专利技术的目的是提供一种基于二维邻域检索的三维场景中海量模型实时调度方法,以解决基于传统四叉树模型进行模型检索调度时效率低下的问题。本专利技术的目的是这样实现的,基于二维邻域检索的三维场景中海量模型实时调度方法,其特征在于,至少包括如下步骤:步骤1,获取该三维场景范围,若不是正方形,则取该范围的最小外接正方形,创建大小与该正方形范围相等的空白二维矢量点图层;步骤2,从该三维场景的模型数据库中遍历场景中每个模型,获取每个模型中心投影的经纬度,根据获取的经纬度在步骤1创建的图层上添加对应的点,所有模型添加完成后,得到该场景的模型点图层;步骤3,对模型点图层建立主邻居四叉树;步骤4,对构建好的主邻居四叉树进行先序遍历,创建缓存区,将当前场景可视范围内应显示的节点模型存入缓存区,并在场景中加载这些节点,绘制当前场景可视范围内的模型;步骤5,更新缓存区,漫游时根据场景可视范围的实时变化方向,获取在这些方向上场景可视范围内的边缘节点,使用基于主邻居四叉树的二维邻域检索方法对这些边缘节点在这些方向上的相邻节点进行检索,根据场景可视范围在各个方向上的变化速度,确定需要检索节点的范围大小,将检索到的节点存入缓存区域,更新缓存区域,直接对缓存区内的节点进行遍历,确定需要加载和卸载的节点;步骤6,根据查询条件进行快速查询;如果要对场景中任一模型的某一方向上的模型进行更新,则需要先检索到该模型所在节点;给定某一模型,选择查询方向,以及在方向上的具体位序,即可快速检索到相应节点,再根据查询到的位置在数据库中检索对应模型,进行更新。所述步骤3,包括如下步骤:步骤31,定义主邻居四叉树节点模型,在构建主邻居四叉树时,每个节点中应至少包括以下信息:(1)位置编码;(2)节点尺寸;(3)节点类型:三种类型,分别是:WHITE,BLACK,GRAY,其中,WHITE代表该区域没有模型,BLACK代表该区域有且只有1个模型,GRAY代表该区域有且大于1个模型,这里的一个模型并非指的是单个物体的模型,可以代指某一小片区域的整体建模;(4)父节点;(5)孩子节点;(6)当前节点在四个方向上的主邻居;(7)当前节点的经纬度范围;步骤32,取图层A1作为根节点;步骤33,判断要划分的节点类型是否为GRAY,若是,则执行步骤34,若否,则执行步骤38;步骤34,对节点进行划分,得到四个子节点;步骤35,更新新的子节点主邻居,每个子节点首先继承其父节点的外部邻居,接着更新其内部邻居。步骤36,相应更新所有原有节点的主邻居,在对一个节点进行分解后,需要将该变化通知该节点四个方向上所有的邻居,这样它们才可以相应地更新其主邻居;步骤37,判断当前所有的节点中是否已经不存在GRAY类型节点,若是,完成构建;若否,执行步骤38;步骤38,按“Z”字形顺序取下一个节点。所述步骤4,包括如下步骤:步骤41,获取场景的可视范围,即经纬度范围;步骤42,对步骤3创建的主邻居四叉树进行先序遍历;步骤43,获取当前遍历节点的区域范围;步骤44,获取当前三维场景的可视范围;步骤45,判断当前遍历节点的范围是否完全不在当前场景可视范围内,若是,转步骤49,若否,转步骤46;步骤46,判断当前遍历节点的范围是否完全在当前场景的可视范围内,若是,转步骤48,若否,转步骤47;步骤47,判断当前节点是否已达到主邻居四叉树的最大深度,若是,转步骤48,若否,转步骤42;步骤48,在场景中加载该节点范围内的模型,转步骤410;步骤49,创建缓存区,将该节点加入缓存区;步骤410,判断是否已遍历完主邻居四叉树所有节点,若是,则结束遍历,若否,则转步骤42。所述步骤5,包括如下步骤:步骤51,获取当前的场景可视范围变化方向;步骤52,获取场景可视范围内在可视范围变化方向上的边缘节点;步骤53,根据可视范围变化方向,使用主邻居检索方法对边缘节点遍历,对其在可视范围变化方向上的相邻节点进行检索,检索的节点范围由可视范围在其变化方向上的变化速度确定;步骤54,将步骤53中检索到的子块存入缓存区域;步骤55,对缓存区内的子节点进行遍历;步骤56,获取当前遍历节点的范围;步骤57,获取当前三维场景的可视范围;步骤58,判断当前遍历节点的范围是否完全不在当前场景可视范围内,若是,转步骤55,若否,转步骤59;步骤59,在场景中加载该节点范围内的模型;步骤510,判断缓存区遍历是否结束,若是,转步骤511,若否,转步骤55;步骤511,判断视场是否有改变,若是,转步骤51,若否,结束。在创建和更新缓存区时,应设定几个阈值,通过判断场景可视范围内应显示的节点个数所属的范围,或根据视点距离场景中模型的距离,决定从模型数据库中调用模型的精细程度,属于三维场景模型调度中层次化细节相关技术,不进行详细描述。本专利技术提出的基于二维邻域检索的三维场景中海量模型实时调度方法将三维场景中的模型用点来表示,得到对应的二维模型点图层,通过对该图层构建主邻居四叉树,结合二维邻域检索算法,实现快速对相邻节点的索引,大大降低了缓存创建时间,从而提高三维场景中模型的检索速度,保证了三维场景漫游的流畅性。本专利技术的优点在于首先根据三维场景的经纬度范围创建一个空白的二维矢量点图层,将场景中的每个模型用一个二维点来表示,点的坐标是模型中心点投影的经纬度坐标,将三维场景中所有模型对应的点一一绘制在该矢量点图层上,得到二维模型图层,再对该模型图层创建主邻居四叉树,在漫游时,使用基于本文档来自技高网
...
基于二维邻域检索的三维场景中海量模型实时调度方法

【技术保护点】
基于二维邻域检索的三维场景中海量模型实时调度方法,其特征在于,至少包括如下步骤:步骤1,获取该三维场景范围,若不是正方形,则取该范围的最小外接正方形,创建大小与该正方形范围相等的空白二维矢量点图层;步骤2,从该三维场景的模型数据库中遍历场景中每个模型,获取每个模型中心投影的经纬度,根据获取的经纬度在步骤1创建的图层上添加对应的点,所有模型添加完成后,得到该场景的模型点图层;步骤3,对模型点图层建立主邻居四叉树;步骤4,对构建好的主邻居四叉树进行先序遍历,创建缓存区,将当前场景可视范围内应显示的节点模型存入缓存区,并在场景中加载这些节点,绘制当前场景可视范围内的模型;步骤5,更新缓存区,漫游时根据场景可视范围的实时变化方向,获取在这些方向上场景可视范围内的边缘节点,使用基于主邻居四叉树的二维邻域检索方法对这些边缘节点在这些方向上的相邻节点进行检索,根据场景可视范围在各个方向上的变化速度,确定需要检索节点的范围大小,将检索到的节点存入缓存区域,更新缓存区域,直接对缓存区内的节点进行遍历,确定需要加载和卸载的节点;步骤6,根据查询条件进行快速查询;如果要对场景中任一模型的某一方向上的模型进行更新,则需要先检索到该模型所在节点;给定某一模型,选择查询方向,以及在方向上的具体位序,即可快速检索到相应节点,再根据查询到的位置在数据库中检索对应模型,进行更新。...

【技术特征摘要】
1.基于二维邻域检索的三维场景中海量模型实时调度方法,其特征在于,至少包括如下步骤:步骤1,获取该三维场景范围,若不是正方形,则取该范围的最小外接正方形,创建大小与该正方形范围相等的空白二维矢量点图层;步骤2,从该三维场景的模型数据库中遍历场景中每个模型,获取每个模型中心投影的经纬度,根据获取的经纬度在步骤1创建的图层上添加对应的点,所有模型添加完成后,得到该场景的模型点图层;步骤3,对模型点图层建立主邻居四叉树;步骤4,对构建好的主邻居四叉树进行先序遍历,创建缓存区,将当前场景可视范围内应显示的节点模型存入缓存区,并在场景中加载这些节点,绘制当前场景可视范围内的模型;步骤5,更新缓存区,漫游时根据场景可视范围的实时变化方向,获取在这些方向上场景可视范围内的边缘节点,使用基于主邻居四叉树的二维邻域检索方法对这些边缘节点在这些方向上的相邻节点进行检索,根据场景可视范围在各个方向上的变化速度,确定需要检索节点的范围大小,将检索到的节点存入缓存区域,更新缓存区域,直接对缓存区内的节点进行遍历,确定需要加载和卸载的节点;步骤6,根据查询条件进行快速查询;如果要对场景中任一模型的某一方向上的模型进行更新,则需要先检索到该模型所在节点;给定某一模型,选择查询方向,以及在方向上的具体位序,即可快速检索到相应节点,再根据查询到的位置在数据库中检索对应模型,进行更新。2.根据权利要求1所述的基于二维邻域检索的三维场景中海量模型实时调度方法,其特征在于:所述步骤3,包括如下步骤:步骤31,定义主邻居四叉树节点模型,在构建主邻居四叉树时,每个节点中应至少包括以下信息:(1)位置编码;(2)节点尺寸;(3)节点类型:三种类型,分别是:WHITE,BLACK,GRAY,其中,WHITE代表该区域没有模型,BLACK代表该区域有且只有1个模型,GRAY代表该区域有且大于1个模型,这里的一个模型并非指的是单个物体的模型,可以代指某一小片区域的整体建模;(4)父节点;(5)孩子节点;(6)当前节点在四个方向上的主邻居;(7)当前节点的经纬度范围;步骤32,取图层A1作为根节点;步骤33,判断要划分的节点类型是否为GRAY,若是,则执行步骤34,若否,则执行步骤38;步骤34,对节点进行划分,得到四个子节点;步骤35,更新新的...

【专利技术属性】
技术研发人员:刘贵喜张娜赵丹周杰李建文
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1