一种三维超大场景的细分切割加载方法与流程

文档序号:20033915发布日期:2020-02-28 10:49阅读:来源:国知局

技术特征:

1.一种三维超大场景的细分切割加载方法,其特征在于,包括以下步骤:

s1:将三维场景矢量空间化,三维场景由坐标系由right、up、target三个互相垂直的向量组成,世界场景中的某一点都可由这三个矢量确定;在三维空间中计算三维场景的边界矢量信息,获得最大化边界信息数据进行矢量空间转换为0-1矢量,并将其矢量信息进行空间的切割与划分;需要对完整的场景空间根据矢量信息划分为若干layer;

s1a:进行三维场景的矢量空间转换;

s1b:获得每个计算子矢量空间的边界信息;

s1c:将子矢量空间转换为layer进行存储;

s2:三维场景模型数据空间矢量细分化后,通过建立范围layer进行子空间的划分,layer由l、t、r和b的4个三维空间矢量组成,此矩形范围为切割后的子空间的边界范围,且每个切割矩形都不相交,将非结构化数据提取为关键索引的结构化数据,并利用b+树对结构化关键索引值的信息进行存储;

s2a:layer空间计算,通过bound边界信息框来存储layer空间位置信息,并计算边界中心点为centerpoint;

s2b:提取layer关键索引信息作为layer关键id值,便于检索和计算;

s2c:通过边界相交计算方法来保证每个layer的边界唯一性,如果存在相交边界需要对新加入的边界进行修正计算;

s2d:引入distance变量来决定每个layer的是否可加载性;

s2e:为每个layer中的模型加入lod层级数据信息,来优化可见性的消隐剔除性能;

s2f:为以上信息建立layer结构化数据以关键值id为索引进行b+树存储;

s3:对三维视角进行偏特化输出为中枢点,偏特化方法为先指定当前观察点位置,根据观察点的视角范围fov及视角距离的远近面,对所有划分后的子矩形进行求交运算,此中枢点为整个矢量空间的中心点,根据此中心点与结构化的模型数据进行距离空间计算;

s3a:三维视角矩阵信息提取,提取观察点视角位置数据(x,y,z);

s3b:由视角范围fov及视角距离的远近面用于获取视锥透视平面信息;

s3c:通过方法2获得需要进行进行的所有layer,对于所有layer进行求交计算获得可见layer集合;

s3d:通过上一步方法获得当前可见的所有layer集合,对此集合进行遍历计算获得其centerpoint与当前视角进行距离计算,通过距离计算获得变量td与layer中的distance变量计算差值;

s3e:通过差值计算用于进一步在layer集合中剔除那些不可见部分;

s3f:差值计算的比值用于获取layer中的lod信息,取决于装载当前layer中的哪一部分lod模型;

s4:将偏特化后计算结果进行索引关系集合的建立,索引关系为中枢点所对应的可载入的模型集合,索引关系为键值对数据结构,其中k中枢点,v数据集合,当观察点发生改变后的中枢点数据索引会进行动态更新,可由索引关系快速获取需要加载的模型集合;因其k值为非线性连续值,若直接存储k值则会导致系统极大的开销,需要对k值进行快速索引的划分;

s4a:当视角发生改变时,重复方法3获得的集合存入待装载的kv数据结构中;

s4b:其中v为待装载待装载的所有layer集合以及其lod模型集合索引值,k值当前当前视角中枢点数据索引;

s4c:由当前视角位置信息,通过方法1获得子矢量空间的位置信息,因为当前视角必定会落在某个子矢量空间中,利用其特性获取唯一的k值信息等于子矢量空间唯一id;

s4d:通过哈希表hashmap数据结构用于存储信息,便于视角改变后的快速layer索引;

s4e:将模型集合加入多线程池进行模型数据加载;

s4f:根据计算机内核数,建立相同线程数的线程池方法;

s4g:通过该线程池引入异步机制asycwork用于异步装载方法4获得的layer中lod所对于的模型数据。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1