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

文档序号:20033915发布日期:2020-02-28 10:49阅读:680来源:国知局
一种三维超大场景的细分切割加载方法与流程

本发明涉及三维虚拟技术领域,具体为一种三维超大场景的细分切割加载方法。



背景技术:

为了更好的通过三维虚拟的技术来表示真实场景的需要,需要通过超大的场景来描述真实世界以满足日益增大的三维大规模数据的应用需要。随着计算机性能的提升,对中、大规模场景的加载支持已达到满意的效果,但超大级别的场景数据加载却没有较好的办法实现,使得超大规模三维场景的加载成为应用的一项瓶颈难点。通过对大规模场景进行矢量空间得切割划分,利用树形结构提取关键索引值信息从而建立快速索引结构信息,并对三维视角进行偏特化输出为中枢点,通过中枢点的可视区域进行索引的提取与三维模型建立,将结构索引信息加入多线程池进行特定化模型数据加载,最终实现三维超大场景的加载。

目前针对三维场景的加载技术通常都会使用结构树的形式进行资源的完全载入后在进入场景,会有载入的等待时间,相对于场景的体量越大则加载时间越长而用户等待的时间也就越长;除了等待时间外,对于计算机资源的消耗也会随着场景体量的增大而增大,由于系统资源又限无法提供更多的资源空间给应用使用,故而三维的场景大小会受到计算机性能的制约。



技术实现要素:

本发明的目的是针对现有技术的缺陷,提供一种三维超大场景的细分切割加载方法,以解决上述背景技术提出的问题。

为实现上述目的,本发明提供如下技术方案:一种三维超大场景的细分切割加载方法,包括以下步骤:

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所对于的模型数据。

本发明的有益效果是:本发明采用通用型方法进行编码,可对多终端硬件也可进行良好的支持;解决了常规技术所带来的时间和空间的问题,无需在三维场景加载时进行等待,充分发挥系统资源减少对计算机资源的依赖,大幅减少超大规模三维场景数据的加载时间,提高系统整体运行效率;本发明对三维场景进行矢量空间细分并建立快速索引的方法;基于三维视角为中枢点的偏特化空间计算,高效快速的建立三维资源载入方法;支持对超大三维场景的载入,大幅度提升载入速度以及大大降低对计算机资源的依赖。

附图说明

图1为本发明的方法流程框图;

图2为本发明的layer空间计算流程框图;

图3为本发明视锥平面计算流程框图。

具体实施方式

下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易被本领域人员理解,从而对本发明的保护范围做出更为清楚明确的界定。

实施例:请参阅图1-3,本发明提供一种技术方案:一种三维超大场景的细分切割加载方法,包括以下步骤:

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所对于的模型数据。

本发明采用通用型方法进行编码,可对多终端硬件也可进行良好的支持;解决了常规技术所带来的时间和空间的问题,无需在三维场景加载时进行等待,充分发挥系统资源减少对计算机资源的依赖,大幅减少超大规模三维场景数据的加载时间,提高系统整体运行效率;本发明对三维场景进行矢量空间细分并建立快速索引的方法;基于三维视角为中枢点的偏特化空间计算,高效快速的建立三维资源载入方法;支持对超大三维场景的载入,大幅度提升载入速度以及大大降低对计算机资源的依赖。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

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