掌桥专利:专业的专利平台
掌桥专利
首页

一种虚拟对象的分簇方法、装置、存储介质和电子装置

文献发布时间:2023-06-19 11:55:48


一种虚拟对象的分簇方法、装置、存储介质和电子装置

技术领域

本申请涉及计算机领域,尤其涉及一种虚拟对象的分簇方法、装置、存储介质和电子装置。

背景技术

当前,3D(three dimensional,三维)大场景游戏越来越多,游戏对画面质量的要求也越来越高。为了满足玩家对游戏越来越挑剔的品味以及对游戏质量越来越高的要求,MMO(Massive Multiplayer Online,大型多人在线游戏)以及吃鸡游戏的火爆,导致手机游戏的3D场景越来越大。

现有的HLOD(Hierachy Level-of-Detail,分层层次细节模型)系统在自动分簇方案上,通常使用单独基于包围体(包围球或者包围盒)的方案来计算自动分簇,通过计算合并后包围体的大小除以合并前的包围体体积所占合并后包围体体积的百分比的方法,来估算合并优先级,即在满足合并后体积大小等条件的限制下,优先将物体合并进估值大的簇内,实现自动分簇。

使用基于包围体方案时,因为包围体和显示的3D对象网格形状存在较大误差,自动分簇的结果并不理想。在实际应用中,可能会出现网格体积并不大,但包围体却很大的情况,比如建筑物的墙,或者路面等,导致物体会优先合并进墙上或者路上。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本申请提供了一种虚拟对象的分簇方法、装置、存储介质和电子装置,以至少解决相关技术中对虚拟对象进行分簇的准确性较低的技术问题。

根据本申请实施例的一个方面,提供了一种虚拟对象的分簇方法,包括:

将当前场景中的待分簇的虚拟对象体素化,得到每个所述待分簇的虚拟对象对应的实体对象;

对所述实体对象进行合并,得到初始融合对象,其中,每个所述初始融合对象中包括的实体对象合并后的包围体的体积落入目标阈值范围;

根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到目标融合对象,其中,所述目标融合对象中包括的多个实体对象所对应的包围体的体积落入所述目标阈值范围;

根据所述目标融合对象生成分簇结果。

根据本申请实施例的另一方面,还提供了一种虚拟对象的分簇装置,包括:

体素化模块,用于将当前场景中的待分簇的虚拟对象体素化,得到每个所述待分簇的虚拟对象对应的实体对象;

合并模块,用于对所述实体对象进行合并,得到初始融合对象,其中,每个所述初始融合对象中包括的实体对象合并后的包围体的体积落入目标阈值范围;

分簇模块,用于根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到目标融合对象,其中,所述目标融合对象中包括的多个实体对象所对应的包围体的体积落入所述目标阈值范围;根据所述目标融合对象生成分簇结果。

根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。

根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。

在本申请实施例中,采用将当前场景中的待分簇的虚拟对象体素化,得到每个待分簇的虚拟对象对应的实体对象;对实体对象进行合并,得到初始融合对象,其中,每个初始融合对象中包括的实体对象合并后的包围体的体积落入目标阈值范围;根据初始融合对象的体素数据对初始融合对象进行合并,得到目标融合对象,其中,目标融合对象中包括的多个实体对象所对应的包围体的体积落入目标阈值范围;根据所述目标融合对象生成分簇结果的方式,对当前场景中的待分簇的虚拟对象进行体素化处理得到实体对象,对实体对象进行合并得到满足分簇条件的初始融合对象,再对初始融合对象进行合并,得到目标融合对象,并根据目标融合对象生成分簇结果,对虚拟对象进行体素化处理之后,体素能更精准的反映出网格的体积,使得得到的对象的包围体更加符合模型的真实形状,达到了降低包围体和显示的虚拟对象网格形状之间误差的目的,从而实现了提高对虚拟对象进行分簇的准确性的技术效果,进而解决了对虚拟对象进行分簇的准确性较低的技术问题。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是根据本申请实施例的虚拟对象的分簇方法的硬件环境的示意图;

图2是根据本申请实施例的一种可选的虚拟对象的分簇方法的流程示意图;

图3是根据本申请实施例的一种可选的虚拟对象体素化的示意图;

图4是根据本申请可选的实施方式的一种生成初始MergeData对象过程的示意图;

图5是根据本申请可选的实施方式的一种生成分簇过程的示意图;

图6是根据本申请实施例的一种可选的虚拟对象的分簇装置的示意图;

图7是根据本申请实施例的一种电子装置的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本申请实施例的一方面,提供了一种虚拟对象的分簇的方法实施例。

可选地,在本实施例中,上述虚拟对象的分簇方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于PC、手机、平板电脑等。本申请实施例的虚拟对象的分簇方法可以由服务器103来执行,也可以由终端101来执行,还可以是由服务器103和终端101共同执行。其中,终端101执行本申请实施例的虚拟对象的分簇方法也可以是由安装在其上的客户端来执行。

图2是根据本申请实施例的一种可选的虚拟对象的分簇方法的流程示意图,如图2所示,该方法可以包括以下步骤:

步骤S202,将当前场景中的待分簇的虚拟对象体素化,得到每个所述待分簇的虚拟对象对应的实体对象;

步骤S204,对所述实体对象进行合并,得到初始融合对象,其中,每个所述初始融合对象中包括的实体对象合并后的包围体的体积落入目标阈值范围;

在上述步骤S204之后,可以但不限于通过以下步骤对得到的初始融合对象进行分簇处理,从而得到分簇结果:

步骤S206,根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到目标融合对象,其中,所述目标融合对象中包括的多个实体对象所对应的包围体的体积落入所述目标阈值范围;

步骤S208,根据所述目标融合对象生成分簇结果。

通过上述步骤S202至步骤S208,对当前场景中的待分簇的虚拟对象进行体素化处理得到实体对象,对实体对象进行合并得到满足分簇条件的初始融合对象,再对初始融合对象进行合并,得到目标融合对象,并根据目标融合对象生成分簇结果,对虚拟对象进行体素化处理之后,体素能更精准的反映出网格的体积,使得得到的对象的包围体更加符合模型的真实形状,达到了降低包围体和显示的虚拟对象网格形状之间误差的目的,从而实现了提高对虚拟对象进行分簇的准确性的技术效果,进而解决了对虚拟对象进行分簇的准确性较低的技术问题。

可选地,在本实施例中,上述虚拟对象的分簇方法可以但不限于应用于HLOD(Hierachy Level-of-Detail,分层层次细节模型)系统中对场景中的虚拟对象(比如:3D对象)进行自动分簇的过程中。

在步骤S202提供的技术方案中,当前场景可以但不限于包括游戏场景,动画场景,影视场景等等。该当前场景可以但不限于为2D场景,3D场景,或者更高维度的场景等等。

可选地,在本实施例中,当前场景中的虚拟对象可以但不限于包括场景中的各种模型,比如:游戏场景中的山、水、树木、建筑、设施、角色、道具等等。

可选地,在本实施例中,每个待分簇的虚拟对象对应的实体对象可以但不限于包括Entity对象等等。

可选地,在本实施例中,体素化(Voxelization)是将物体的几何形式表示转换成最接近该物体的体素表示形式,产生体素数据集,其不仅包括模型的表面信息,而且能描述模型的内部属性。图3是根据本申请实施例的一种可选的虚拟对象体素化的示意图,如图3所示,对游戏场景中的一个L型网格的墙面进行体素化处理得到了体素化后的模型,体素化之后,体素能更精准的反映出网格的体积,体素化后的模型中小方块的多少就可以表示网格的体积大小。

作为一种可选的实施例,将当前场景中的待分簇的虚拟对象体素化,得到每个虚拟对象对应的实体对象包括:

S11,从所述当前场景所包括的虚拟对象中获取允许分簇的虚拟对象作为所述待分簇的虚拟对象;

S12,将所述待分簇的虚拟对象体素化,得到所述待分簇的虚拟对象的体素数据;

S13,生成所述待分簇的虚拟对象对应的初始实体对象;

S14,将所述待分簇的虚拟对象的体素数据保存到所述初始实体对象中,得到所述待分簇的虚拟对象对应的实体对象。

可选地,在本实施例中,待分簇的虚拟对象可以但不限于是场景中允许分簇的虚拟对象。待分簇的虚拟对象可以是自动识别出来的,也可以是由操作人员手动选择的。

可选地,在本实施例中,待分簇的虚拟对象的每一个体素数据可以只存储一个整数的世界坐标,待分簇的虚拟对象的一组体素数据即一组世界坐标,代表了网格所在世界区域。

可选地,在本实施例中,将所有的待分簇的虚拟对象体素化,然后将其保存在新生成的一个Entity(实体)对象中。

在步骤S204提供的技术方案中,落入目标阈值范围可以但不限于是分簇的限制条件,目标阈值范围可以但不限于为上限值,即每个初始融合对象中包括的实体对象合并后的包围体的体积不能过大。目标阈值范围也可以但不限于为一个阈值范围,即每个初始融合对象中包括的实体对象合并后的包围体的体积不能过大也不能过小。

可选地,在本实施例中,合并实体对象后的初始融合对象中包括一组虚拟对象,把这组虚拟对象完全包裹在内的最小立方体为合并后的包围体。合并后的包围体的体积大小要满足限制要求,比如:有一个上限要求,合并后的包围体的体积大小不能过大。

作为一种可选的实施例,对所述实体对象进行合并,得到初始融合对象包括:

S21,遍历所有的所述实体对象,判断任意两个实体对象合并后的包围体的体积是否落入所述目标阈值范围;

S22,为合并后的包围体的体积落入所述目标阈值范围的每一对实体对象创建一个融合对象;

S23,将所述每一对实体对象保存到所述一个融合对象中,得到所述初始融合对象。

可选地,在本实施例中,融合对象可以但不限于包括MergeData对象。

可选地,在本实施例中,对任意两个Entity对象进行测试,判断其合并之后的包围体是否满足自动分簇的大小限制(即上述目标阈值范围),对于满足条件的每一对Entity对象,创建一个MergeData对象,并将这一对Entity对象保存在MergeData对象中,得到初始MergeData对象。

在一个可选的实施方式中,提供了一种根据待分簇的虚拟对象生成初始MergeData对象的过程,图4是根据本申请可选的实施方式的一种生成初始MergeData对象过程的示意图,如图4所示,收集场景中可分簇的虚拟对象作为待分簇的虚拟对象,对每一个虚拟对象进行体素化处理,为每一个虚拟对象生成一个Entity对象,并将虚拟对象的体素数据记录在Entity对象中,遍历所有的Entity对象,对任意两个Entity对象进行合并判断,判断合并后包围体是否满足限制条件(比如:是否小于预设值),如果否,则不生成MergeData对象,如果是,则将两个Entity对象记录在一个MergeData对象中,得到MergeData对象,对MergeData对象进行体素化,并将体素化后的体素数据记录在自身对象中,计算MergeData对象的体素数量大小,得到初始MergeData对象。

在步骤S206提供的技术方案中,合并过程中可以但不限于采用数据结构图的方式,比如:深度优先的遍历方式和广度优先的遍历方式等等。通过数据结构图的遍历过程,将可以到达的节点,并且符合合并后大小限制的节点放到一起,从而得到目标融合对象。

可选地,在本实施例中,初始融合对象的体素数据可以但不限于包括初始融合对象的体素数量(比如图4中计算得到的MergeData对象的体素数量大小),初始融合对象中实体对象之间的体素距离等等。

作为一种可选的实施例,根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到目标融合对象包括:

S31,根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到候选融合对象,其中,所述候选融合对象互相不包括公共的实体对象且每个所述候选融合对象所对应的包围体的体积落入所述目标阈值范围;

S32,从所述候选融合对象中筛选满足目标条件的融合对象作为所述目标融合对象。

可选地,在本实施例中,合并后得到的候选融合对象互相不包括公共的实体对象且每个候选融合对象所对应的包围体的体积落入目标阈值范围,也就是说,初步合并初始融合对象的过程中包括两个合并条件,条件一是合并后得到的候选融合对象互相不包括公共的实体对象,条件二是合并后的每个候选融合对象所对应的包围体的体积小于一定的阈值,不会过大。

可选地,在本实施例中,初步合并初始融合对象得到候选融合对象后,再利用预先设置的分簇需满足的目标条件对候选融合对象进行更进一步的筛选,得到目标融合对象。

作为一种可选的实施例,根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到候选融合对象包括:

S41,根据所述初始融合对象的体素数据判断所述初始融合对象所包括的两个实体对象是否相交;

S42,将实体对象相交的初始融合对象添加到第一列表中,并将实体对象不相交的初始融合对象添加到第二列表中;

S43,分别按照初始融合对象的体素数量从大到小对所述第一列表和所述第二列表进行排序,得到所述第一列表对应的第三列表和所述第二列表对应的第四列表;

S44,对所述第三列表中包括公共的实体对象的初始融合对象进行合并,直至不存在包括公共的实体对象的初始融合对象,得到第五列表,其中,所述第五列表中包括的初始融合对象所对应的包围体的体积落入所述目标阈值范围;

S45,将所述第四列表加入到所述第五列表之后,得到第六列表;

S46,对所述第六列表中包括公共的实体对象的初始融合对象进行合并,直至不存在包括公共的实体对象的初始融合对象,得到第七列表,其中,所述第七列表中包括的初始融合对象所对应的包围体的体积落入所述目标阈值范围;

S47,将所述第七列表中有效的且所包括的实体对象数量大于1的初始融合对象确定为所述候选融合对象。

可选地,在本实施例中,上述第一列表可以但不限于标记为ContactList列表,上述第二列表可以但不限于标记为NoContactList列表,第三列表是对ContactList列表排序后得到的列表,第四列表是对NoContactList列表排序后得到的列表。对排序后的ContactList列表进行合并操作后得到第五列表。将NoContactList列表加入到合并操作后的ContactList列表得到第六列表。对第六列表再一次进行合并操作后得到第七列表,第七列表中符合预设条件的初始融合对象即为候选融合对象。

可选地,在本实施例中,对于创建的MergeData对象,判断其所包括的两个Entity对象是否有相交,将Entity对象相交的MergeData对象存储到ContactList中,Entity对象没有相交的MergeData对象存储到NoContactList中。

可选地,在本实施例中,根据每个初始融合对象中两个Entity对象所含体素的数量,按照从大到小的方式,分别对ContactList和NoContactList进行排序,得到排序后的ContactList和NoContactList作为第三列表和第四列表。

可选地,在本实施例中,上述两个合并过程为对ContactList执行完合并操作之后,将NoContactList加入到合并操作后的ContactList后边,继续执行合并操作。

可选地,在本实施例中,执行完两次合并操作后,从第七列表中筛选有效的且包括的实体对象数量大于1的初始MergeData对象作为候选融合对象。有效的对象可以但不限于包括:列表中所包括的全部对象、列表中标记为有效标记的对象或者列表中未标记为无效标记的对象。

作为一种可选的实施例,根据所述初始融合对象的体素数据判断所述初始融合对象所包括的两个实体对象是否相交包括:

S51,判断所述初始融合对象所包括的两个实体对象中的体素所存储的坐标中是否包括相同坐标;

S52,在所述初始融合对象所包括的两个实体对象中的体素所存储的坐标中包括相同坐标的情况下,确定所述初始融合对象所包括的两个实体对象相交。

可选地,在本实施例中,可以但不限于采用判断两个实体对象中是否存储了相同坐标的方式对实体对象是否相交进行判断。比如:每个Entity对象都通过体素存储了一组世界坐标,若初始MergeData对象的两个Entity对象所存储的体素数据中,其中一个Entity对象中的体素所存储的坐标与另外一个Entity对象中体素所存储的坐标相同,则认为两个Entity对象相交了。

可选地,在本实施例中,在初始融合对象所包括的两个实体对象中的体素所存储的坐标中不包括相同坐标的情况下,确定初始融合对象所包括的两个实体对象不相交。可以将不包括相同坐标的情况作为确定两个实体对象不相交的方式,或者也可以采用其他方式确定两个实体对象不相交,在本实施例中不作限定。

作为一种可选的实施例,对所述第三列表中包括公共的实体对象的初始融合对象进行合并包括:

S61,从所述第三列表中获取包括公共的实体对象的两个初始融合对象;

S62,判断所述两个初始融合对象所对应的总包围体的体积是否落入所述目标阈值范围;

S63,在所述两个初始融合对象所对应的总包围体的体积落入所述目标阈值范围的情况下,将排序靠后的初始融合对象中包括的非公共实体对象添加到排序靠前的初始融合对象中,并将排序靠后的初始融合对象删除或者标记为用于指示对象无效的目标标签;

S64,在所述两个初始融合对象所对应的总包围体的体积未落入所述目标阈值范围的情况下,将排序靠后的初始融合对象中包括的公共实体对象删除。

可选地,在本实施例中,上述过程以深度优先的遍历方式遍历第三列表中的初始融合对象。也可以以广度优先的遍历方式遍历第三列表中的初始融合对象。

可选地,在本实施例中,对第三列表中的任意两个初始MergeData对象,如果包括公共的实体对象,如其中一个包括A,B两个Entity对象,一个包括B,C两个Entity对象,则需要对这两个初始MergeData对象进行合并。

可选地,在本实施例中,对于排序靠后的被融合的初始融合对象可以将其删除以表示其无效,或者标记目标标签来表示其无效。如果采用删除的方式表示对象无效,则可以认为在第七列表中的全部初始融合对象为有效的初始融合对象。如果采用标记目标标签的方式表示对象无效,则可以认为在第七列表中未标记目标标签的初始融合对象为有效的初始融合对象。

可选地,在本实施例中,上述目标标签可以但不限于为Unvalidated标签。标记为Unvalidated的初始融合对象即为已经合并到其他初始融合对象中的融合对象。

可选地,在本实施例中,上述两个合并过程的合并规则可以但不限于包括:规则一,将排序在后面的初始融合对象尽量向排序在前面的初始融合对象里进行合并。规则二,当列表中不再存在包括公共Entity对象的两个MergeData对象后,合并结束。

可选地,在本实施例中,合并时,将索引靠后的初始MergeData对象中的元素全部合并到索引靠前的初始MergeData对象中。如果合并后的初始MergeData对象满足分簇条件,则将被合并的初始MergeData对象标记为Unvalidated,如果合并后的初始MergeData对象不满足分簇条件,则将公共的Entity对象从索引靠后的初始MergeData对象中删除。如第一个初始MergeData对象包括A,B两个Entity对象,第二个初始MergeData对象包括B,C两个Entity对象,则将C合并进第一个初始MergeData对象,得到包括A,B,C三个Entity对象的初始MergeData对象。

如果C合并进第一个初始MergeData对象后,A,B,C三个Entity对象所构成的包围体超过了分簇对包围体的体积限制,则不能将C合并进第一个初始MergeData对象,此时将B元素从第二个初始MergeData对象中删除,第二个初始MergeData对象变为只包括C一个Entity对象的初始MergeData对象。

如果C合并进第一个初始MergeData对象后,A,B,C三个Entity对象所构成的包围体未超过分簇对包围体的体积限制,则可以将C合并进第一个初始MergeData对象,此时将第二个初始MergeData对象标记为Unvalidated。

可选地,在本实施例中,对第六列表中包括公共的实体对象的初始融合对象进行合并,直至不存在包括公共的实体对象的初始融合对象,得到第七列表的过程与上述对第三列表进行合并的过程类似,在此不再赘述。

作为一种可选的实施例,从所述候选融合对象中筛选满足目标条件的融合对象作为所述目标融合对象包括:

S71,确定每个所述候选融合对象是否满足所述目标条件;

S72,将不满足所述目标条件的融合对象从所述候选融合对象中剔除得到所述目标融合对象;

其中,所述目标条件包括以下至少之一:

融合对象中每个实体对象的体素数量大于目标体素数量;

融合对象中包括的实体对象的数量大于目标实体对象数量;

融合对象中包括的实体对象之间的体素距离小于目标距离。

可选地,在本实施例中,可以将体素数量的限制、实体对象的数量的限制、体素距离的限制中的一个或者多个限制条件作为目标条件来筛选目标融合对象。

可选地,在本实施例中,以体素距离的限制为例,体素距离指通过体素估算的两个物体之间的距离。假设有两个虚拟对象,其对应的两组体素数据分别为A和B,比较A中每个体素和B中每个体素之间的距离,在所有距离中最近的那个,可以将其视为两个物体间的体素距离。假设在分簇结束后,簇内的任意两个虚拟对象的体素距离都大于一个阈值,则这个结果不满足分簇条件,则可以直接将这个分簇从分簇结果中剔除。

可选地,在本实施例中,还可以对每一个候选融合对象内实体对象的数量设定一个阈值,在最后筛选候选融合对象时,将达不到阈值的候选融合对象剔除。

在步骤S208提供的技术方案中,根据所述目标融合对象生成分簇结果包括:

S81,为每一个目标融合对象生成一个初始分簇对象;

S82,将所述每一个目标融合对象中包括的实体对象保存到所述一个初始分簇对象,得到目标分簇对象;

S83,将所述目标分簇对象添加到分簇列表中得到所述分簇结果。

可选地,在本实施例中,分簇对象可以但不限于为Cluster对象,得到目标融合对象后,对每个目标融合对象生成一个Cluster对象,并将目标融合对象中的实体对象保存到Cluster对象中,将所有生成的Cluster对象保存到ClusterList列表中,此ClusterList列表即为自动分簇的结果。

在一个可选的实施方式中,提供了一种生成分簇的过程,图5是根据本申请可选的实施方式的一种生成分簇过程的示意图,如图5所示,对每一个初始MergeData对象进行相交判断,判断过程可以为:判断每个初始MergeData对象包括的两个Entity对象的体素是否包括相同坐标,如果是则将该初始MergeData对象加入ContactList中,如果否则将该初始MergeData对象加入NoContactList中。上述相交判断的过程循环结束后,对得到的两组List中的初始融合对象根据体素数量进行从大到小的排序。排序后,对ContactList中的元素进行深度优先的合并,合并过程不考虑NoContactList。对合并后的结果,考虑NoContactList中的元素再进行一次深度优先的合并。对合并后的List进行筛选,将满足元素个数限制的MergeData对象转化为Cluster对象,所有Cluster对象所组成的List即为分簇结果。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台电子设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

根据本申请实施例的另一个方面,还提供了一种用于实施上述虚拟对象的分簇方法的虚拟对象的分簇装置。图6是根据本申请实施例的一种可选的虚拟对象的分簇装置的示意图,如图6所示,该装置可以包括:

体素化模块62,用于将当前场景中的待分簇的虚拟对象体素化,得到每个所述待分簇的虚拟对象对应的实体对象;

合并模块64,用于对所述实体对象进行合并,得到初始融合对象,其中,每个所述初始融合对象中包括的实体对象合并后的包围体的体积落入目标阈值范围;

分簇模块66,用于根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到目标融合对象,其中,所述目标融合对象中包括的多个实体对象所对应的包围体的体积落入所述目标阈值范围;根据所述目标融合对象生成分簇结果。

需要说明的是,该实施例中的体素化模块62可以用于执行本申请实施例中的步骤S202,该实施例中的合并模块64可以用于执行本申请实施例中的步骤S204,该实施例中的分簇模块66可以用于执行本申请实施例中的步骤S206和步骤S208。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。

通过上述模块,对当前场景中的待分簇的虚拟对象进行体素化处理得到实体对象,对实体对象进行合并得到满足分簇条件的初始融合对象,再对初始融合对象进行分簇,得到目标融合对象作为最终的分簇结果,对虚拟对象进行体素化处理之后,体素能更精准的反映出网格的体积,使得得到的对象的包围体更加符合模型的真实形状,达到了降低包围体和显示的虚拟对象网格形状之间误差的目的,从而实现了提高对虚拟对象进行分簇的准确性的技术效果,进而解决了对虚拟对象进行分簇的准确性较低的技术问题。

作为一种可选的实施例,所述体素化模块包括:

获取单元,用于从所述当前场景所包括的虚拟对象中获取允许分簇的虚拟对象作为所述待分簇的虚拟对象;

体素化单元,用于将所述待分簇的虚拟对象体素化,得到所述待分簇的虚拟对象的体素数据;

第一生成单元,用于生成所述待分簇的虚拟对象对应的初始实体对象;

第一保存单元,用于将所述待分簇的虚拟对象的体素数据保存到所述初始实体对象中,得到所述待分簇的虚拟对象对应的实体对象。

作为一种可选的实施例,所述合并模块包括:

判断单元,用于遍历所有的所述实体对象,判断任意两个实体对象合并后的包围体的体积是否落入所述目标阈值范围;

创建单元,用于为合并后的包围体的体积落入所述目标阈值范围的每一对实体对象创建一个融合对象;

第二保存单元,用于将所述每一对实体对象保存到所述一个融合对象中,得到所述初始融合对象。

作为一种可选的实施例,所述分簇模块包括:

第一合并单元,用于根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到候选融合对象,其中,所述候选融合对象互相不包括公共的实体对象且每个所述候选融合对象所对应的包围体的体积落入所述目标阈值范围;

筛选单元,用于从所述候选融合对象中筛选满足目标条件的融合对象作为所述目标融合对象。

作为一种可选的实施例,所述第一合并单元用于:

根据所述初始融合对象的体素数据判断所述初始融合对象所包括的两个实体对象是否相交;

将实体对象相交的初始融合对象添加到第一列表中,并将实体对象不相交的初始融合对象添加到第二列表中;

分别按照初始融合对象的体素数量从大到小对所述第一列表和所述第二列表进行排序,得到所述第一列表对应的第三列表和所述第二列表对应的第四列表;

对所述第三列表中包括公共的实体对象的初始融合对象进行合并,直至不存在包括公共的实体对象的初始融合对象,得到第五列表,其中,所述第五列表中包括的初始融合对象所对应的包围体的体积落入所述目标阈值范围;

将所述第四列表加入到所述第五列表之后,得到第六列表;

对所述第六列表中包括公共的实体对象的初始融合对象进行合并,直至不存在包括公共的实体对象的初始融合对象,得到第七列表,其中,所述第七列表中包括的初始融合对象所对应的包围体的体积落入所述目标阈值范围;

将所述第七列表中有效的且所包括的实体对象数量大于1的初始融合对象确定为所述候选融合对象。

作为一种可选的实施例,所述第一合并单元用于:

判断所述初始融合对象所包括的两个实体对象中的体素所存储的坐标中是否包括相同坐标;

在所述初始融合对象所包括的两个实体对象中的体素所存储的坐标中包括相同坐标的情况下,确定所述初始融合对象所包括的两个实体对象相交。

作为一种可选的实施例,所述第一合并单元用于:

从所述第三列表中获取包括公共的实体对象的两个初始融合对象;

判断所述两个初始融合对象所对应的总包围体的体积是否落入所述目标阈值范围;

在所述两个初始融合对象所对应的总包围体的体积落入所述目标阈值范围的情况下,将排序靠后的初始融合对象中包括的非公共实体对象添加到排序靠前的初始融合对象中,并将排序靠后的初始融合对象删除或者标记为用于指示对象无效的目标标签;

在所述两个初始融合对象所对应的总包围体的体积未落入所述目标阈值范围的情况下,将排序靠后的初始融合对象中包括的公共实体对象删除。

作为一种可选的实施例,所述筛选单元用于:

确定每个所述候选融合对象是否满足所述目标条件;

将不满足所述目标条件的融合对象从所述候选融合对象中剔除得到所述目标融合对象;

其中,所述目标条件包括以下至少之一:

融合对象中每个实体对象的体素数量大于目标体素数量;

融合对象中包括的实体对象的数量大于目标实体对象数量;

融合对象中包括的实体对象之间的体素距离小于目标距离。

作为一种可选的实施例,所述分簇模块包括:

第二生成单元,用于为每一个目标融合对象生成一个初始分簇对象;

第三保存单元,用于将所述每一个目标融合对象中包括的实体对象保存到所述一个初始分簇对象,得到目标分簇对象;

添加单元,用于将所述目标分簇对象添加到分簇列表中得到所述分簇结果。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

根据本申请实施例的另一个方面,还提供了一种用于实施上述虚拟对象的分簇方法的电子装置。

图7是根据本申请实施例的一种电子装置的结构框图,如图7所示,该电子装置可以包括:一个或多个(图中仅示出一个)处理器701、存储器703、以及传输装置705,如图7所示,该电子装置还可以包括输入输出设备707。

其中,存储器703可用于存储软件程序以及模块,如本申请实施例中的虚拟对象的分簇方法和装置对应的程序指令/模块,处理器701通过运行存储在存储器703内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的虚拟对象的分簇方法。存储器703可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器703可进一步包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至电子装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

上述的传输装置705用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置705包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置705为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。

其中,具体地,存储器703用于存储应用程序。

处理器701可以通过传输装置705调用存储器703存储的应用程序,以执行下述步骤:

将当前场景中的待分簇的虚拟对象体素化,得到每个所述待分簇的虚拟对象对应的实体对象;

对所述实体对象进行合并,得到初始融合对象,其中,每个所述初始融合对象中包括的实体对象合并后的包围体的体积落入目标阈值范围;

根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到目标融合对象,其中,所述目标融合对象中包括的多个实体对象所对应的包围体的体积落入所述目标阈值范围;

根据所述目标融合对象生成分簇结果。

采用本申请实施例,提供了一种虚拟对象的分簇的方案。对当前场景中的待分簇的虚拟对象进行体素化处理得到实体对象,对实体对象进行合并得到满足分簇条件的初始融合对象,再对初始融合对象进行合并,得到目标融合对象,根据目标融合对象生成分簇结果,对虚拟对象进行体素化处理之后,体素能更精准的反映出网格的体积,使得得到的对象的包围体更加符合模型的真实形状,达到了降低包围体和显示的虚拟对象网格形状之间误差的目的,从而实现了提高对虚拟对象进行分簇的准确性的技术效果,进而解决了对虚拟对象进行分簇的准确性较低的技术问题。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图7所示的结构仅为示意,电子装置可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等电子设备。图7其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图7中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图7所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令电子设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。

本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行虚拟对象的分簇方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

将当前场景中的待分簇的虚拟对象体素化,得到每个所述待分簇的虚拟对象对应的实体对象;

对所述实体对象进行合并,得到初始融合对象,其中,每个所述初始融合对象中包括的实体对象合并后的包围体的体积落入目标阈值范围;

根据所述初始融合对象的体素数据对所述初始融合对象进行合并,得到目标融合对象,其中,所述目标融合对象中包括的多个实体对象所对应的包围体的体积落入所述目标阈值范围;

根据所述目标融合对象生成分簇结果。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 一种虚拟对象的分簇方法、装置、存储介质和电子装置
  • 一种虚拟对象的分簇方法、装置、存储介质和电子装置
技术分类

06120113103470