CN106204719A - 基于二维邻域检索的三维场景中海量模型实时调度方法 - Google Patents
基于二维邻域检索的三维场景中海量模型实时调度方法 Download PDFInfo
- Publication number
- CN106204719A CN106204719A CN201610504912.1A CN201610504912A CN106204719A CN 106204719 A CN106204719 A CN 106204719A CN 201610504912 A CN201610504912 A CN 201610504912A CN 106204719 A CN106204719 A CN 106204719A
- Authority
- CN
- China
- Prior art keywords
- node
- model
- scene
- dimensional
- neighbours
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/56—Information retrieval; Database structures therefor; File system structures therefor of still image data having vectorial format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
Abstract
本文提出一种基于二维邻域检索的三维场景海量模型实时调度方法,根据三维场景范围构建对应的二维矢量点图层,再将三维场景中每个模型体中心对应的经纬度坐标点一一绘制在点图层上,实现将模型用点来表示,对得到的二维模型图层构建主邻居四叉树,对构建好的主邻居四叉树进行先序遍历,创建缓存区,将当前场景可视范围内应显示的节点模型存入缓存区,并在场景中加载这些节点,通过对场景中的模型构建一种主邻居四叉树,将基于主邻居四叉树的邻域检索算法用于缓存区的创建和更新,大大降低缓存区的创建更新时间,从而提高了三维场景中模型的检索调度速度。
Description
技术领域
本发明属于三维场景中模型检索领域,特别是基于二维邻域检索的三维场景海量模型实时调度方法。
背景技术
在高逼真度的大规模三维场景仿真系统中,通常需要动态调度和显示高精度的地物模型,这些地物模型具有网格精细,纹理分辨率高,且数量巨大的特点,在场景中一次性加载这些模型,往往会造成内存溢出的问题,所以需要根据可视范围的变化在模型数据库中高效地检索调度模型,以保证三维场景中模型实时绘制的流畅性。
目前大规模三维场景中海量地物模型组织调度常采用的方法包括基于R树(RealTrees)的空间索引和基于传统四叉树的空间检索两大类。基于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本发明实施例主邻居四叉树编码方式说明图;
图3主邻居四叉树节点的四个主邻居说明图;
图4(A)新子节点NW的主邻居更新说明图;
图4(B)确定孩子节点[21]在N方向上的主邻居说明图;
图5构建主邻居四叉树流程图;
图6采用主邻居四叉树先序遍历确定显示节点流程图;
图7缓存区构建遍历更新流程图;
图8(A)三维场景模型图层建立的主邻居四叉树示意图;
图8(B)三维场景可视范围显示示意图。
具体实施方式
实施例1
基于二维邻域检索的三维场景中海量模型实时调度方法,其特征在于,至少包括如下步骤:
步骤1,获取该三维场景范围,若不是正方形,则取该范围的最小外接正方形,创建大小与该正方形范围相等的空白二维矢量点图层;
步骤2,从该三维场景的模型数据库中遍历场景中每个模型,获取每个模型中心投影的经纬度,根据获取的经纬度在步骤1创建的图层上添加对应的点,所有模型添加完成后,得到该场景的模型点图层;
步骤3,对模型点图层建立主邻居四叉树;
步骤4,对构建好的主邻居四叉树进行先序遍历,创建缓存区,将当前场景可视范围内应显示的节点模型存入缓存区,并在场景中加载这些节点,绘制当前场景可视范围内的模型;
步骤5,更新缓存区,漫游时根据场景可视范围的实时变化方向,获取在这些方向上场景可视范围内的边缘节点,使用基于主邻居四叉树的二维邻域检索方法对这些边缘节点在这些方向上的相邻节点进行检索,根据场景可视范围在各个方向上的变化速度,确定需要检索节点的范围大小,将检索到的节点存入缓存区域,更新缓存区域,直接对缓存区内的节点进行遍历,确定需要加载和卸载的节点;
步骤6,根据查询条件进行快速查询;如果要对场景中任一模型的某一方向上的模型进行更新,则需要先检索到该模型所在节点;给定某一模型,选择查询方向,以及在方向上的具体位序,即可快速检索到相应节点,再根据查询到的位置在数据库中检索对应模型,进行更新。
实施例2
如图1所示,基于二维邻域检索的三维场景中海量模型实时调度方法包括如下步骤:
步骤1,获取该三维场景范围,若不是正方形,则取该范围的最小外接正方形,边长为d(单位:按经纬度单位度),创建一个边长为d的空白二维矢量点图层A0;
步骤2,从该三维场景的模型数据库中遍历场景中每个模型,获取每个模型中心投影的经纬度,根据获取的经纬度在图层A0上添加对应的点,所有模型添加完成后,得到该场景的模型点图层A1;
步骤3,对图层A1建立主邻居四叉树;
步骤4,对构建好的主邻居四叉树进行先序遍历,创建缓存区,将当前场景可视范围内应显示的节点模型存入缓存区,并在场景中加载这些节点,绘制当前场景可视范围内的模型;
步骤5,更新缓存区,漫游时根据场景可视范围的实时变化方向,获取在这些方向上场景可视范围内的边缘节点,使用基于主邻居四叉树的二维邻域检索方法对这些边缘节点在这些方向上的相邻节点进行检索,根据场景可视范围在各个方向上的变化速度确定需要检索节点的范围大小,将检索到的节点存入缓存区域,随着可视区域的变化,不断更新缓存区域,直接对缓存区内的节点进行遍历,确定需要加载和卸载的节点;
步骤6,根据查询条件进行快速查询。如果要对某一模型的某一方向上的模型进行更新,则需要先检索到该模型所在节点。给定某一模型,选择查询方向,以及在方向上的具体位序,即可快速检索到相应模型,再根据查询到的位置在数据库中找到对应模型,进行更新。
如图5所示,步骤3包括如下步骤:
步骤31,定义主邻居四叉树节点模型,在构建主邻居四叉树时,每个节点应至少包括以下信息:
(1)位置编码:用一串四进制数表示,根节点不进行编码,如图2所示,将根节点分为四等分,则四个节点的编码按“Z”字形顺序依次为0,1,2,3,四个节点可以依次表示为[0],[1],[2],[3];继续对子节点进行四等分,子节点的四个子节点仍然按“Z”字形顺序编号为0,1,2,3,但其编码应为父节点编码加上该节点在兄弟节点中的编号,如图2中对[0]划分后,[0]的四个子节点编码分别00,01,02,03,[0]的四个子节点分别表示为[00],[01],[02],[03],依次类推,所有的节点可以表示为[节点编码];
(2)节点尺寸:代表区域的边长(度);
(3)节点类型:三种类型,分别是:WHITE,BLACK,GRAY(WHITE代表该区域没有模型,BLACK代表该区域有且只有1个模型,GRAY代表该区域有且大于1个模型,这里的一个模型并非指的是单个物体的模型,可以代指某一小片区域的整体建模);
(4)父节点:当前节点的直接父节点;
(5)孩子节点:当前节点的四个孩子节点;
(6)当前节点在四个方向上的主邻居:如图3所示,在创建主邻居四叉树时,为每个节点定义西,北,东,南四个方向的主邻居指针,分别用符号CN0,CN1,CN2,CN3表示,这四个指针分别指向节点西,北,东,南四个方向上的主邻居,主邻居是指:若节点在某个方向上只有一个相邻节点,则该相邻节点即为该节点在该方向上的主邻居;若节点在某个方向上相邻节点大于一个,则该节点的主邻居指节点在某方向上的第一个相邻节点。第一个相邻节点规定如下:节点在西边的主邻居是节点在西边的相邻块中最北边的节点;节点在北边的主邻居是节点在北边的相邻节点中最西边的节点;节点在东边的主邻居是节点在东边相邻节点中最南边的节点;节点在南边的主邻居是节点在南边的相邻节点中最东边的节点;
(7)当前节点的范围:经度最小值(该节点区域的经度最小值),经度最大值(该节点区域的经度最大值),纬度最小值(该节点区域的纬度最小值),纬度最大值(该节点区域的纬度最大值);
步骤32,取图层A1作为根节点;
步骤33,判断要划分的节点类型是否为GRAY,若是,则转步骤34,若否,则转步骤38;
步骤34,对节点进行划分,得到四个子节点;
步骤35,更新新的子节点主邻居,每个子节点首先继承其父节点的外部邻居,接着更新其内部邻居。举例来说,如图4(A)所示,对于节点NW的更新为:CN0=父节点的CN0,CN1=父节点的CN1,CN2=节点NE,CN3=节点SW。具体更新方法为(下文中将西,北,东,南分别用W,N,E,S来表示):
(1)有些孩子节点可以继承其父节点的主邻居,如图4(A)所示,父节点W方向和N方向上的主邻居对于NW节点依然有效,同理父节点E方向和S方向的对SW节点依然有效;
(2)有些孩子节点需要则需要进行更新来反映有效的主邻居,如节点NE和节点SW,对于节点NE和节点SW又分为两种情况:父节点的主邻居尺寸比父节点的尺寸大或者相等;父节点的主邻居尺寸比父节点的尺寸小。在第一种情况下,不需要进行更新,孩子节点的主邻居可以直接继承父节点的主邻居,而在第二种情况下,孩子节点的主邻居需要被更新。如图4(B),表示了[21]是如何确定其在N方向上的主邻居,[21]首先继承其父节点在N方向上的主邻居[022],但是正确的主邻居是[03]。所以[21]的CN1需要被更新。通过从W到E方向对[21]在N方向上的邻居进行水平遍历,直到第一次到达一个[21]的直接邻居,即[03]。其中在从W方向到E方向的遍历步骤中,终止检索的标准是:当所有遍历过的邻居节点的尺寸之和比该节点的尺寸大,停止遍历。其它类似情况下处理方法相同。
步骤36,相应更新所有原有节点的主邻居,在对一个节点进行分解后,需要将该变化通知该节点四个方向上所有的邻居,这样它们才可以相应地更新其主邻居。
步骤37,判断当前所有的节点中是否已经不存在GRAY类型节点,若是,完成构建;若否,执行步骤38;
步骤38,按“Z”字形顺序取下一个节点。
如图6所示,所述步骤4,包括如下步骤:
步骤41,获取场景的可视范围,即经纬度范围;
步骤42,对步骤3创建的主邻居四叉树进行先序遍历;
步骤43,获取当前遍历节点的区域范围;
步骤44,获取当前三维场景的可视范围;
步骤45,判断当前遍历节点的范围是否完全不在当前场景可视范围内,若是,转步骤49,若否,转步骤46;
步骤46,判断当前遍历节点的范围是否完全在当前场景的可视范围内,若是,转步骤48,若否,转步骤47;
步骤47,判断当前节点是否已达到主邻居四叉树的最大深度,若是,转步骤48,若否,转步骤42;
步骤48,在场景中加载该节点范围内的模型,转步骤410;
步骤49,创建缓存区,将该节点加入缓存区;
步骤410,判断是否已遍历完主邻居四叉树所有节点,若是,则结束遍历,若否,则转步骤42;
如图7所示,所述步骤5,包括如下步骤:
步骤51,获取当前的场景可视范围变化方向;
步骤52,获取场景可视范围内在可视范围变化方向上的边缘节点B1,B2,B3,…,Bn;
步骤53,根据可视范围变化方向,使用主邻居检索方法对节点B1,B2,B3,…,Bn遍历,对其在可视范围变化方向上的相邻节点进行检索,检索的节点范围由可视范围在其变化方向上的变化速度确定,例如,检索Bi,i∈{1,2,3,…,n}在N方向上的所有直接邻居,为了查找Bi在N方向的邻居,首先可以得到Bi的CN1,以CN1为起始点,利用几个函数进行一个简单的遍历就可以得到N方向上所有的邻居。
Bi在N方向上任意一个邻居(记为X)可以通过以下的主邻居检索算法检索到:
令如果(Size(X)<Size(Bi)),当则令
其中,Size(X)返回节点X的边长,j为0,1,2,3时,分别返回节点X的CN0,CN1,CN2,CN3;
如果节点在N方向上的邻居尺寸等于或大于该节点的尺寸,则一步完成检索,否则,则会从W方向开始按顺序依次检索。
在所有其他方向上,邻域检索也是相同的原则。对W方向上的主邻居,应从N方向至S方向逐次检索;对E方向上的主邻居,应从S方向至N方向逐次检索;对S方向上的主邻居,应从E方向至W方向逐次检索,即可得到模型的某一方向上某一具体序位的子块。
步骤54,将步骤53中检索到的子块存入缓存区域;
步骤55,对缓存区内的子块进行遍历;
步骤56,获取当前遍历节点的范围;
步骤57,获取当前三维场景的可视范围;
步骤58,判断当前遍历节点的范围是否完全不在当前场景可视范围内,若是,转步骤55,若否,转步骤59;
步骤59,在场景中加载该节点范围内的模型;
步骤510,判断缓存区遍历是否结束,若是,转步骤511,若否,转步骤55;
步骤511,判断视场是否有改变,若是,转步骤51,若否,结束。如图8(A)中所示为三维场景中模型图层构建的主邻居四叉树示意图,其中点阴影部分801表示当可视范围的向东变化时的应更新的缓存节点,斜划线阴影部分803表示当前加载到场景中的节点,矩形粗线框802表示当前场景的可视范围(矩形线框长宽分别由经度范围和纬度范围确定),点804代表模型图层中的模型点;图8(B)中所示为对应图8(A)中矩形粗线框802中的三维场景,矩形粗线框802中的模型点分别对应三维场景中的房子模型805,树模型806,飞机模型807,点画线808示意了三维场景中加载的各个节点范围。
Claims (4)
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,更新新的子节点主邻居,每个子节点首先继承其父节点的外部邻居,接着更新其内部邻居。
步骤36,相应更新所有原有节点的主邻居,在对一个节点进行分解后,需要将该变化通知该节点四个方向上所有的邻居,这样它们才可以相应地更新其主邻居;
步骤37,判断当前所有的节点中是否已经不存在GRAY类型节点,若是,完成构建;若否,执行步骤38;
步骤38,按“Z”字形顺序取下一个节点。
3.根据权利要求1所述的基于二维邻域检索的三维场景中海量模型实时调度方法,其特征在于:所述步骤4,包括如下步骤:
步骤41,获取场景的可视范围,即经纬度范围;
步骤42,对步骤3创建的主邻居四叉树进行先序遍历;
步骤43,获取当前遍历节点的区域范围;
步骤44,获取当前三维场景的可视范围;
步骤45,判断当前遍历节点的范围是否完全不在当前场景可视范围内,若是,转步骤49,若否,转步骤46;
步骤46,判断当前遍历节点的范围是否完全在当前场景的可视范围内,若是,转步骤48,若否,转步骤47;
步骤47,判断当前节点是否已达到主邻居四叉树的最大深度,若是,转步骤48,若否,转步骤42;
步骤48,在场景中加载该节点范围内的模型,转步骤410;
步骤49,创建缓存区,将该节点加入缓存区;
步骤410,判断是否已遍历完主邻居四叉树所有节点,若是,则结束遍历,若否,则转步骤42。
4.根据权利要求1所述的基于二维邻域检索的三维场景中海量模型实时调度方法,其特征在于:所述步骤5,包括如下步骤:
步骤51,获取当前的场景可视范围变化方向;
步骤52,获取场景可视范围内在可视范围变化方向上的边缘节点;
步骤53,根据可视范围变化方向,使用主邻居检索方法对边缘节点遍历,对其在可视范围变化方向上的相邻节点进行检索,检索的节点范围由可视范围在其变化方向上的变化速度确定;
步骤54,将步骤53中检索到的子块存入缓存区域;
步骤55,对缓存区内的子节点进行遍历;
步骤56,获取当前遍历节点的范围;
步骤57,获取当前三维场景的可视范围;
步骤58,判断当前遍历节点的范围是否完全不在当前场景可视范围内,若是,转步骤55,若否,转步骤59;
步骤59,在场景中加载该节点范围内的模型;
步骤510,判断缓存区遍历是否结束,若是,转步骤511,若否,转步骤55;
步骤511,判断视场是否有改变,若是,转步骤51,若否,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610504912.1A CN106204719B (zh) | 2016-06-30 | 2016-06-30 | 基于二维邻域检索的三维场景中海量模型实时调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610504912.1A CN106204719B (zh) | 2016-06-30 | 2016-06-30 | 基于二维邻域检索的三维场景中海量模型实时调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106204719A true CN106204719A (zh) | 2016-12-07 |
CN106204719B CN106204719B (zh) | 2019-03-26 |
Family
ID=57462762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610504912.1A Expired - Fee Related CN106204719B (zh) | 2016-06-30 | 2016-06-30 | 基于二维邻域检索的三维场景中海量模型实时调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106204719B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107126702A (zh) * | 2017-04-20 | 2017-09-05 | 杭州游聚信息技术有限公司 | 一种3d游戏随机地图的生成方法 |
CN107730583A (zh) * | 2017-10-26 | 2018-02-23 | 浙江科澜信息技术有限公司 | 一种基于三维场景的地形瓦片数据动态调度方法及装置 |
CN108363808A (zh) * | 2018-03-07 | 2018-08-03 | 浙江科澜信息技术有限公司 | 海量数据的动态调度与显示方法、装置、设备及存储介质 |
CN108416843A (zh) * | 2018-03-08 | 2018-08-17 | 浙江科澜信息技术有限公司 | 三维场景构建方法、装置、设备及计算机可读存储介质 |
CN110796742A (zh) * | 2019-10-25 | 2020-02-14 | 西安建筑科技大学 | 一种基于面向对象的三维场景视锥体剔除方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1932884A (zh) * | 2006-09-26 | 2007-03-21 | 杭州镭星科技有限公司 | 一种基于分形层次树的过程式地形快速绘制方法 |
KR20080018404A (ko) * | 2006-08-24 | 2008-02-28 | 한국문화콘텐츠진흥원 | 게임 제작을 위한 배경 제작 프로그램을 저장한 컴퓨터에서읽을 수 있는 기록매체 |
CN101923542A (zh) * | 2009-06-12 | 2010-12-22 | 如临其境创意(上海)有限公司 | 一种用于网络多维空间数据表达的MDDRQ-Tree索引结构 |
CN102855662A (zh) * | 2012-07-25 | 2013-01-02 | 中国科学院对地观测与数字地球科学中心 | 海洋环境的可视化方法 |
-
2016
- 2016-06-30 CN CN201610504912.1A patent/CN106204719B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080018404A (ko) * | 2006-08-24 | 2008-02-28 | 한국문화콘텐츠진흥원 | 게임 제작을 위한 배경 제작 프로그램을 저장한 컴퓨터에서읽을 수 있는 기록매체 |
CN1932884A (zh) * | 2006-09-26 | 2007-03-21 | 杭州镭星科技有限公司 | 一种基于分形层次树的过程式地形快速绘制方法 |
CN101923542A (zh) * | 2009-06-12 | 2010-12-22 | 如临其境创意(上海)有限公司 | 一种用于网络多维空间数据表达的MDDRQ-Tree索引结构 |
CN102855662A (zh) * | 2012-07-25 | 2013-01-02 | 中国科学院对地观测与数字地球科学中心 | 海洋环境的可视化方法 |
Non-Patent Citations (3)
Title |
---|
G. MISUND ETAL: "GLOBAL MODELS AND THE W3DS SPECIFICATION - CHALLENGES AND SOLUTIONS", 《ACCEPTED TO FIRST INTERNATIONAL WORKSHOP ON NEXT GENERATIOND CITY MODELS》 * |
曹家铭: "分布式虚拟现实系统中的地形数据组织与基于地形的曲线绘制", 《中国优秀硕士学位论文全文数据库基础科学辑》 * |
邬超: "基于大数据集的DEM数据管理与调度关键技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107126702A (zh) * | 2017-04-20 | 2017-09-05 | 杭州游聚信息技术有限公司 | 一种3d游戏随机地图的生成方法 |
CN107126702B (zh) * | 2017-04-20 | 2020-08-25 | 杭州游聚信息技术有限公司 | 一种3d游戏随机地图的生成方法 |
CN107730583A (zh) * | 2017-10-26 | 2018-02-23 | 浙江科澜信息技术有限公司 | 一种基于三维场景的地形瓦片数据动态调度方法及装置 |
CN107730583B (zh) * | 2017-10-26 | 2021-02-26 | 浙江科澜信息技术有限公司 | 一种基于三维场景的地形瓦片数据动态调度方法及装置 |
CN108363808A (zh) * | 2018-03-07 | 2018-08-03 | 浙江科澜信息技术有限公司 | 海量数据的动态调度与显示方法、装置、设备及存储介质 |
CN108363808B (zh) * | 2018-03-07 | 2020-08-11 | 浙江科澜信息技术有限公司 | 海量数据的动态调度与显示方法、装置、设备及存储介质 |
CN108416843A (zh) * | 2018-03-08 | 2018-08-17 | 浙江科澜信息技术有限公司 | 三维场景构建方法、装置、设备及计算机可读存储介质 |
CN110796742A (zh) * | 2019-10-25 | 2020-02-14 | 西安建筑科技大学 | 一种基于面向对象的三维场景视锥体剔除方法 |
CN110796742B (zh) * | 2019-10-25 | 2023-03-14 | 西安建筑科技大学 | 一种基于面向对象的三维场景视锥体剔除方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106204719B (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106204719B (zh) | 基于二维邻域检索的三维场景中海量模型实时调度方法 | |
CN111504325B (zh) | 一种基于扩大搜索邻域的加权a*算法的全局路径规划方法 | |
CN106898045B (zh) | 一种基于sgog瓦块的大区域真三维地理场景自适应构建方法 | |
CN101271587B (zh) | 一种基于过渡光贴图的光照和阴影绘制方法 | |
CN108803332B (zh) | 基于改进生物地理学的路径规划方法 | |
JP2004164596A (ja) | 2分木を巡回する方法およびシステム | |
CN108198143B (zh) | 一种去LoD层级约束的三维地形裂缝消除方法 | |
CN112115534A (zh) | 一种将三维房屋模型转换带高度属性的二维矢量面的方法 | |
CN109118588B (zh) | 一种基于块分解的彩色lod模型自动生成方法 | |
CN115661374B (zh) | 一种基于空间划分和模型体素化的快速检索方法 | |
CN114529633A (zh) | 一种支持gis线对象和面对象连续lod绘制的方法 | |
CN111858810A (zh) | 一种面向道路dem构建的建模高程点筛选方法 | |
CN115757604B (zh) | 一种基于夜光影像数据的gdp时空演变分析方法 | |
CN111047682A (zh) | 一种三维车道模型生成方法及系统 | |
CN114440916A (zh) | 一种导航方法、装置、设备及存储介质 | |
CN115167474A (zh) | 一种移动机器人路径规划优化方法 | |
CN109460564B (zh) | 一种电网潮流图布线方法 | |
Ai et al. | A map generalization model based on algebra mapping transformation | |
CN108074253B (zh) | 一种基于Delaunay三角剖分的多层级矢量道路网匹配方法 | |
CN110769430A (zh) | 基于最小包围圆算法的无线传感器网络中继节点部署方法 | |
CN108197613B (zh) | 一种基于深度卷积级联网络的人脸检测优化方法 | |
CN116009552A (zh) | 一种路径规划方法、装置、设备及存储介质 | |
CN115129064A (zh) | 基于改进萤火虫算法与动态窗口法融合的路径规划方法 | |
CN113160235A (zh) | 一种基于内部圆和邻接图的房间分割方法 | |
CN115408382A (zh) | 面向大规模卫星数据的矢量空间信息网格化存储管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190326 Termination date: 20190630 |
|
CF01 | Termination of patent right due to non-payment of annual fee |