一种场景分割方法及装置制造方法及图纸

技术编号:37254670 阅读:15 留言:0更新日期:2023-04-20 23:31
本申请实施例提供了一种场景分割方法及装置,该方法包括:创建八叉树的根节点,在根节点下创建单链表,当物件添加至场景中时,将物件添加至单链表尾节点,判断尾节点上的物件数是否大于尾节点所能达到的最大物件数,若尾节点上的物件数大于尾节点所能达到的最大物件数,则计算尾节点下所有物件的边界空间,根据尾节点下所有物件的边界空间,对八叉树的结构进行重构,从而根据场景中的物件实时调整八叉树的结构,降低八叉树的创建开销,减少八叉树的遍历次数,提高渲染效率。提高渲染效率。提高渲染效率。

【技术实现步骤摘要】
一种场景分割方法及装置


[0001]本专利技术涉及三维数据可视化
,尤其涉及一种场景分割方法及装置。

技术介绍

[0002]大规模场景的渲染在虚拟实现以及游戏等领域中具有广泛的应用。在分割三维场景时,并不需要对场景中所有的物件进行渲染,只需要针对场景中可视的物件进行渲染或物理检测,此时便需要对空间进行分割并检测,以过滤掉不可见的分割区域。为了过滤掉不可见的分割区域,通常所采用的做法是先创建一个完整的数据结构,再将物件添加至数据结构中。然而这种方法往往计算量较大,占用资源多,且渲染速率较低。因此,如何提高场景的渲染效率成为当前所需解决的技术问题。

技术实现思路

[0003]鉴于上述问题,本申请的目的在于提供一种场景分割方法、装置及计算机可读存储介质,以降低八叉树的遍历次数,优化渲染效率,具体方案如下:
[0004]第一方面,本申请实施例提供了一种场景分割方法,所述场景分割方法包括:
[0005]创建八叉树的根节点;
[0006]在所述根节点下创建单链表;
[0007]当物件添加至场景中时,将所述物件添加至单链表尾节点;
[0008]判断所述尾节点上的物件数是否大于所述尾节点所能达到的最大物件数;
[0009]若所述尾节点上的物件数大于所述尾节点所能达到的最大物件数,则计算所述尾节点下所有物件的边界空间;
[0010]根据所述尾节点下所有物件的边界空间,对所述八叉树的结构进行重构。
[0011]可选的,所述重新计算所述节点下所有物件的边界空间包括:
[0012]计算在所述尾节点所对应的空间中,所述所有物件在各个方向上所能达到的最远位置;
[0013]根据所述最远位置,确定所述尾节点下所有物件的边界空间。
[0014]可选的,所述根据所述尾节点下所有物件的边界空间,对所述八叉树的结构进行重构包括:
[0015]对与所述尾节点对应的空间进行分割,得到分割后的空间信息和中心点坐标;
[0016]将所述分割后的空间信息和所述中心点坐标节点存入所述八叉树扩展的子节点中;
[0017]根据所述尾节点中物件的边界空间,将所述尾节点中的物件重新添加至所述八叉树扩展的子节点中。
[0018]可选的,所述对与所述尾节点对应的空间进行分割包括:
[0019]当所述物件的边界空间的高度小于当前空间高度的一半时,对空间进行四叉树分割;
[0020]当所述物件的边界空间的高度不小于当前空间高度的一半时,则对空间进行八叉树分割。
[0021]可选的,所述根据所述尾节点中物件的边界空间,将所述尾节点中的物件重新添加至所述八叉树扩展的子节点中,包括:
[0022]若所述尾节点中物件的边界空间包含在所述子节点的空间范围内,则将所述物件添加至所述子节点中。
[0023]可选的,所述场景分割方法还包括:
[0024]若所述物件的坐标位置不包含在所述八叉树的总空间中,则修改所述八叉树的空间信息,并对子节点的空间信息进行重新计算。
[0025]可选的,所述修改空间信息,包括:
[0026]当所述物件的坐标位置超出总空间的右半部分坐标位置时,对所述总空间的右半部分进行扩充,直至所述总空间的右半部分范围包含所述物件;
[0027]当所述物件的坐标位置超出总空间的左半部分坐标位置时,对所述总空间的左半部分进行扩充,直至所述总空间的左半部分范围包含所述物件。
[0028]可选的,所述场景分割方法还包括:
[0029]判断所述八叉树的层数是否大于6;
[0030]若所述八叉树的层数大于6,则不再新增子节点。
[0031]第二方面,本申请实施例提供了一种场景分割装置,所述场景分割装置包括:
[0032]创建单元,用于创建八叉树的根节点;在所述根节点下创建单链表;
[0033]添加单元,用于当物件添加至场景中时,将所述物件添加至单链表尾节点;
[0034]判断单元,用于判断所述尾节点上的物件数是否大于所述尾节点所能达到的最大物件数;若所述尾节点上的物件数大于所述尾节点所能达到的最大物件数,则重新计算所述尾节点下所有物件的边界空间;
[0035]重构单元,用于根据所述尾节点下所有物件的边界空间,对所述八叉树的结构进行重构。
[0036]第三方面,本申请实施例提供了一种计算机可读存储介质,包括计算机操作指令,当所述计算机操作指令在计算机上运行时,使得所述计算机执行上述任意一种场景分割方法。
[0037]相对于现有技术,本申请具有以下有益效果:
[0038]通过在进入场景时只创建八叉树的根节点,在有物件添加至场景中时,将物件添加至尾节点中,若尾节点中的物件数量到达最大物件数量,则重新计算尾节点下各个物件的边界空间,并根据各个物件的边界空间对八叉树进行重构,从而根据场景中存在的物件实时对八叉树进行更新,降低八叉树的创建开销,减少八叉树的遍历次数,提高渲染效率。
附图说明
[0039]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0040]图1为本申请实施例提供的一种场景分割方法的流程示意图;
[0041]图2为一种被八叉树分割后的立方体空间示意图;
[0042]图3为另一种被八叉树分割后的立方体空间示意图;
[0043]图4为八叉树结构示意图;
[0044]图5本申请实施例提供的一种场景分割装置的结构示意图。
具体实施方式
[0045]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0046]本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0047]如图1所示,本申请实施例提供了一种场景分割方法,该方法包括:
[0048]S101:创建八叉树的根节点。
[0049]在进入3D场景后,在3D场景中创建八叉树的根节点。
[0050]S102本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种场景分割方法,其特征在于,所述场景分割方法包括:创建八叉树的根节点;在所述根节点下创建单链表;当物件添加至场景中时,将所述物件添加至单链表尾节点;判断所述尾节点上的物件数是否大于所述尾节点所能达到的最大物件数;若所述尾节点上的物件数大于所述尾节点所能达到的最大物件数,则计算所述尾节点下所有物件的边界空间;根据所述尾节点下所有物件的边界空间,对所述八叉树的结构进行重构。2.根据权利要求1所述的场景分割方法,其特征在于,所述重新计算所述节点下所有物件的边界空间包括:计算在所述尾节点所对应的空间中,所述所有物件在各个方向上所能达到的最远位置;根据所述最远位置,确定所述尾节点下所有物件的边界空间。3.根据权利要求2所述的场景分割方法,其特征在于,所述根据所述尾节点下所有物件的边界空间,对所述八叉树的结构进行重构包括:对与所述尾节点对应的空间进行分割,得到分割后的空间信息和中心点坐标;将所述分割后的空间信息和所述中心点坐标节点存入所述八叉树扩展的子节点中;根据所述尾节点中物件的边界空间,将所述尾节点中的物件重新添加至所述八叉树扩展的子节点中。4.根据权利要求3所述的场景分割方法,其特征在于,所述对与所述尾节点对应的空间进行分割包括:当所述物件的边界空间的高度小于当前空间高度的一半时,对空间进行四叉树分割;当所述物件的边界空间的高度不小于当前空间高度的一半时,则对空间进行八叉树分割。5.根据权利要求3所述的场景分割方法,其特征在于,所述根据所述尾节点中物件的边界空间,将所述尾节点中的物件重新添加至所述八叉树扩展的子节点中,包括:若所述尾节点中物件的边界空间包...

【专利技术属性】
技术研发人员:丁屹莫阳吴红
申请(专利权)人:湖南快乐阳光互动娱乐传媒有限公司
类型:发明
国别省市:

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

1