本发明涉及三维数据可视化,尤其涉及一种场景分割方法及装置。
背景技术:
1、大规模场景的渲染在虚拟实现以及游戏等领域中具有广泛的应用。在分割三维场景时,并不需要对场景中所有的物件进行渲染,只需要针对场景中可视的物件进行渲染或物理检测,此时便需要对空间进行分割并检测,以过滤掉不可见的分割区域。为了过滤掉不可见的分割区域,通常所采用的做法是先创建一个完整的数据结构,再将物件添加至数据结构中。然而这种方法往往计算量较大,占用资源多,且渲染速率较低。因此,如何提高场景的渲染效率成为当前所需解决的技术问题。
技术实现思路
1、鉴于上述问题,本申请的目的在于提供一种场景分割方法、装置及计算机可读存储介质,以降低八叉树的遍历次数,优化渲染效率,具体方案如下:
2、第一方面,本申请实施例提供了一种场景分割方法,所述场景分割方法包括:
3、创建八叉树的根节点;
4、在所述根节点下创建单链表;
5、当物件添加至场景中时,将所述物件添加至单链表尾节点;
6、判断所述尾节点上的物件数是否大于所述尾节点所能达到的最大物件数;
7、若所述尾节点上的物件数大于所述尾节点所能达到的最大物件数,则计算所述尾节点下所有物件的边界空间;
8、根据所述尾节点下所有物件的边界空间,对所述八叉树的结构进行重构。
9、可选的,所述重新计算所述节点下所有物件的边界空间包括:
10、计算在所述尾节点所对应的空间中,所述所有物件在各个方向上所能达到的最远位置;
11、根据所述最远位置,确定所述尾节点下所有物件的边界空间。
12、可选的,所述根据所述尾节点下所有物件的边界空间,对所述八叉树的结构进行重构包括:
13、对与所述尾节点对应的空间进行分割,得到分割后的空间信息和中心点坐标;
14、将所述分割后的空间信息和所述中心点坐标节点存入所述八叉树扩展的子节点中;
15、根据所述尾节点中物件的边界空间,将所述尾节点中的物件重新添加至所述八叉树扩展的子节点中。
16、可选的,所述对与所述尾节点对应的空间进行分割包括:
17、当所述物件的边界空间的高度小于当前空间高度的一半时,对空间进行四叉树分割;
18、当所述物件的边界空间的高度不小于当前空间高度的一半时,则对空间进行八叉树分割。
19、可选的,所述根据所述尾节点中物件的边界空间,将所述尾节点中的物件重新添加至所述八叉树扩展的子节点中,包括:
20、若所述尾节点中物件的边界空间包含在所述子节点的空间范围内,则将所述物件添加至所述子节点中。
21、可选的,所述场景分割方法还包括:
22、若所述物件的坐标位置不包含在所述八叉树的总空间中,则修改所述八叉树的空间信息,并对子节点的空间信息进行重新计算。
23、可选的,所述修改空间信息,包括:
24、当所述物件的坐标位置超出总空间的右半部分坐标位置时,对所述总空间的右半部分进行扩充,直至所述总空间的右半部分范围包含所述物件;
25、当所述物件的坐标位置超出总空间的左半部分坐标位置时,对所述总空间的左半部分进行扩充,直至所述总空间的左半部分范围包含所述物件。
26、可选的,所述场景分割方法还包括:
27、判断所述八叉树的层数是否大于6;
28、若所述八叉树的层数大于6,则不再新增子节点。
29、第二方面,本申请实施例提供了一种场景分割装置,所述场景分割装置包括:
30、创建单元,用于创建八叉树的根节点;在所述根节点下创建单链表;
31、添加单元,用于当物件添加至场景中时,将所述物件添加至单链表尾节点;
32、判断单元,用于判断所述尾节点上的物件数是否大于所述尾节点所能达到的最大物件数;若所述尾节点上的物件数大于所述尾节点所能达到的最大物件数,则重新计算所述尾节点下所有物件的边界空间;
33、重构单元,用于根据所述尾节点下所有物件的边界空间,对所述八叉树的结构进行重构。
34、第三方面,本申请实施例提供了一种计算机可读存储介质,包括计算机操作指令,当所述计算机操作指令在计算机上运行时,使得所述计算机执行上述任意一种场景分割方法。
35、相对于现有技术,本申请具有以下有益效果:
36、通过在进入场景时只创建八叉树的根节点,在有物件添加至场景中时,将物件添加至尾节点中,若尾节点中的物件数量到达最大物件数量,则重新计算尾节点下各个物件的边界空间,并根据各个物件的边界空间对八叉树进行重构,从而根据场景中存在的物件实时对八叉树进行更新,降低八叉树的创建开销,减少八叉树的遍历次数,提高渲染效率。
1.一种场景分割方法,其特征在于,所述场景分割方法包括:
2.根据权利要求1所述的场景分割方法,其特征在于,所述重新计算所述节点下所有物件的边界空间包括:
3.根据权利要求2所述的场景分割方法,其特征在于,所述根据所述尾节点下所有物件的边界空间,对所述八叉树的结构进行重构包括:
4.根据权利要求3所述的场景分割方法,其特征在于,所述对与所述尾节点对应的空间进行分割包括:
5.根据权利要求3所述的场景分割方法,其特征在于,所述根据所述尾节点中物件的边界空间,将所述尾节点中的物件重新添加至所述八叉树扩展的子节点中,包括:
6.根据权利要求3所述的场景分割方法,其特征在于,所述场景分割方法还包括:
7.根据权利要求6所述的场景分割方法,其特征在于,所述修改空间信息,包括:
8.根据权利要求1所述的场景分割方法,其特征在于,所述场景分割方法还包括:
9.一种场景分割装置,其特征在于,所述场景分割装置包括:
10.一种计算机可读存储介质,其特征在于,包括计算机操作指令,当所述计算机操作指令在计算机上运行时,使得所述计算机执行如权利要求1-8任一项所述的场景分割方法。