CN113791914B - 对象处理方法、装置、计算机设备、存储介质及产品 - Google Patents
对象处理方法、装置、计算机设备、存储介质及产品 Download PDFInfo
- Publication number
- CN113791914B CN113791914B CN202111359438.5A CN202111359438A CN113791914B CN 113791914 B CN113791914 B CN 113791914B CN 202111359438 A CN202111359438 A CN 202111359438A CN 113791914 B CN113791914 B CN 113791914B
- Authority
- CN
- China
- Prior art keywords
- resource
- resource objects
- area
- added
- target container
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 171
- 238000000034 method Methods 0.000 claims abstract description 123
- 230000001186 cumulative effect Effects 0.000 claims abstract description 32
- 230000008569 process Effects 0.000 claims description 64
- 238000004422 calculation algorithm Methods 0.000 claims description 40
- 230000005484 gravity Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 10
- 238000000638 solvent extraction Methods 0.000 claims description 10
- 230000002068 genetic effect Effects 0.000 claims description 7
- 230000001960 triggered effect Effects 0.000 claims description 5
- 238000007792 addition Methods 0.000 description 73
- 238000010586 diagram Methods 0.000 description 25
- 238000012856 packing Methods 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 12
- 238000013507 mapping Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000010339 dilation Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000000740 bleeding effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000001788 irregular Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 210000000349 chromosome Anatomy 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000008303 genetic mechanism Effects 0.000 description 1
- 210000001624 hip Anatomy 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种对象处理方法、装置、计算机设备、存储介质及产品,其中方法包括:获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数;根据N的取值及每个资源对象的面积,对N个资源对象进行分组处理,得到分组处理结果,分组处理结果包括至少两个对象分组及每个对象分组的累计面积;任一对象分组的累积面积是任一对象分组中所有资源对象的面积之和;基于分组处理结果将目标容器划分为至少两个区域,一个对象分组与一个区域相对应;按照对象分组与区域之间的对应关系,在目标容器中添加N个资源对象,可有效提升将资源对象添加到相应容器的效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种对象处理方法、装置、计算机设备、存储介质及产品。
背景技术
随着计算机技术的不断深入发展,采用特定技术进行问题的自动化求解可有效提升效率。而当前在基于计算机技术来实现装箱问题的自动化求解时,采用的方法是将待添加的资源对象按照某种规则放置到容器中,并在每次放置之后进行容器的可放置区域更新,直至容器中被填满资源对象。为了提升当前的添加速度,通常需要涉及对计算机设备硬件资源的充分和高效利用,而如何基于计算机设备已有的硬件资源,对资源对象的装箱效率进行有效提升则成为了当前的研究热点。
发明内容
本发明实施例提供了一种对象处理方法、装置、计算机设备、存储介质及产品,可有效提升将资源对象添加到相应容器的效率。
一方面,本发明实施例提供了一种对象处理方法,包括:
获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数;
根据N的取值及每个资源对象的面积,对所述N个资源对象进行分组处理,得到分组处理结果,所述分组处理结果包括至少两个对象分组及每个对象分组的累计面积;其中,任一对象分组的累积面积是所述任一对象分组中所有资源对象的面积之和;
基于所述分组处理结果将所述目标容器划分为至少两个区域,其中,一个对象分组与一个区域相对应;
按照所述对象分组与所述区域之间的对应关系,在所述目标容器中添加所述N个资源对象。
再一方面,本发明实施例提供了一种对象处理装置,包括:
获取单元,用于获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数;
处理单元,用于根据N的取值及每个资源对象的面积,对所述N个资源对象进行分组处理,得到分组处理结果,所述分组处理结果包括至少两个对象分组及每个对象分组的累计面积;其中,任一对象分组的累积面积是所述任一对象分组中所有资源对象的面积之和;
所述处理单元,还用于基于所述分组处理结果将所述目标容器划分为至少两个区域,其中,一个对象分组与一个区域相对应;
添加单元,用于按照所述对象分组与所述区域之间的对应关系,在所述目标容器中添加所述N个资源对象。
再一方面,本发明实施例提供了一种计算机设备,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储支持计算机设备执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如下步骤:
获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数;
根据N的取值及每个资源对象的面积,对所述N个资源对象进行分组处理,得到分组处理结果,所述分组处理结果包括至少两个对象分组及每个对象分组的累计面积;其中,任一对象分组的累积面积是所述任一对象分组中所有资源对象的面积之和;
基于所述分组处理结果将所述目标容器划分为至少两个区域,其中,一个对象分组与一个区域相对应;
按照所述对象分组与所述区域之间的对应关系,在所述目标容器中添加所述N个资源对象。
再一方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序指令,所述程序指令被处理器执行时,所述程序指令被处理器执行时,用于执行如第一方面所述的对象处理方法。
在本申请实施例中,计算机设备可在获取到待添加到目标容器中的大于阈值的资源对象后,先将获取到的多个资源对象进行分组处理,以将该多个资源对象划分到多个不同的对象分组中,而在该计算机设备对多个资源对象进行分组处理时,可基于各对象分组的累计面积相近的原则进行分组处理,从而可有效避免将对应面积较大的资源对象划分到同一对象分组中,进而有利于后续将各对象分组中的资源对象顺利地添加到目标容器中。此外,该计算机设备还可基于针对资源对象的分组处理结果,对目标容器进行区域划分,以得到分别和每个对象分组相对应的区域,进而计算机设备可按照各对象分组与区域之间的对应关系,将获取到的多个资源对象添加到相应的区域中。而基于计算机设备对资源对象的分组处理和目标容器的划分,计算机设备后续在将获取到的较大数量的资源对象添加到目标容器时,可采取将各对象分组添加到相应区域的方式,使得计算机设备可在保证对目标容器的一定的填充率的基础上,有效提升计算机设备对资源对象的添加效率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1a是本发明实施例提供的一种资源对象的示意图;
图1b是本发明实施例提供的一种将资源对象添加到目标容器的示意图;
图2是本发明实施例提供的一种对象处理方法的示意流程图;
图3是本发明实施例提供的另一种将资源对象添加到目标容器的示意图;
图4是本发明实施例提供的另一种对象处理方法的示意流程图;
图5是本发明实施例提供的一种将狭长的多边形添加到目标容器的示意图;
图6是本发明实施例提供的一种将资源对象添加到目标容器的流程图;
图7a是本发明实施例提供的一种确定资源对象的重心的示意图;
图7b是本发明实施例提供的一种确定资源对象的添加可行区域的示意图;
图7c是本发明实施例提供的另一种确定资源对象的添加可行区域的示意图;
图7d是本发明实施例提供的一种删除内凹顶点的示意图;
图7e是本发明实施例提供的一种将外凸线段调整为顶点的示意图;
图8是本发明实施例提供的一种对资源对象进行快速舍入后的示意图;
图9是本发明实施例提供的一种对象处理装置的示意性框图;
图10是本发明实施例提供的一种计算机设备的示意性框图。
具体实施方式
本申请实施例提出了一种对象处理方法,计算机设备可在将较大规模的资源对象添加到目标容器时,分别对大规模的资源对象和目标容器进行分组处理,得到多个对象分组,以及与各对象分组对应的区域,那么进一步地,该计算机设备将大规模的资源对象添加到目标容器的过程即可转换成将各对象分组中的资源对象添加到对应区域的过程,从而可有效提升将大规模资源对象添加到目标容器中的效率。在一个实施例中,资源对象为多边形的二维物体(简称多边形),在本申请实施例中所指的资源对象特指封闭多边形,但该封闭多边形可以是带孔洞的多边形,可如图1a中由101标记的多边形所示,另外,该资源对象也可以是不带孔洞的多边形,可如图1a中由102标记的多边形所示。而目标容器可用于承载资源对象,其中,该资源对象例如可以是游戏制作行业中的UV岛,其中,UV岛的本质即为上述的多边形。当资源对象被添加到目标容器后,可在该目标容器中进行存储,其中,该目标容器和资源对象均是指形状为多边形的二维物体,而形状为多边形的资源对象可以是对虚拟对象的三维模型进行二维展开后得到,其中,该形状为多边形的资源对象具体可如对三维模型进行展开并分块后得到的三角形或者四边形等多边形,另外,该形状为多边形的资源对象也可以是对实际对象进行展开及分块处理后得到。而该形状为多边形的目标容器是指用于承载并存储资源对象的二维物体对应的多边形,如该目标容器可以是对由三维模型展开得到的二维多边形进行承载存储的纹理图片对应的多边形,或者,该目标容器也可以是对实际的分块对象对应多边形进行承载的多边形,在本申请实施例中,对得到形状为多边形的资源对象和目标容器的方式不做限定。
在一个实施例中,该虚拟对象可以是游戏场景中的虚拟对象,如游戏场景中的虚拟人物,虚拟动物,以及虚拟植物等,而显示在游戏场景中的虚拟对象是通过纹理映射技术(Texture Mapping)对该虚拟对象的三维模型进行纹理贴图后得到的,从而可提升显示在游戏画面中的虚拟对象的真实性和生动性。其中,纹理是指可以承载任何信息的图片,UV映射(一种坐标映射方法)是指附加在三维模型顶点上的UV坐标值,表示在纹理上采样像素的位置,纹理和UV映射合并在一起称为纹理映射。而计算机设备对三维模型进行的纹理贴图处理主要涉及面片分割,UV岛生成(即资源对象生成)和装箱(即将资源对象添加到目标容器)三个步骤,在具体实现中,该计算机设备在得到虚拟对象的三维模型后,可先对该三维模型的表面进行分割,得到多个面片(Surface Patch),其中,对三维模型的表面分割得到的面片是指由该三维模型体表面连接在一起的区域,那么可以理解,该计算机设备对三维模型的表面进行分割所得到的面片也是三维的。通过上述对三维模型的分割过程,该计算机设备可得到该三维模型对应的多个面片,进一步地,该计算机设备可分别计算每个面片对应的二维UV岛,从而实现将每个面片展平到二维平面中,可以理解,该计算机设备得到的面片对应的二维UV岛即为二维多边形,也就是该计算机设备所获取到的待添加到目标容器的资源对象,而该目标容器则是指纹理图片对应的多边形,那么,该计算机设备在得到每个面片对应的二维UV岛后,则可将得到的UV岛紧密地添加(即装箱)到该纹理图片上,从而实现为该虚拟对象的三维模型添加相应的纹理信息,以使得计算机设备在对虚拟对象的三维模型进行显示时更具真实性。
其中,在计算机设备将得到的UV岛紧密地添加到该纹理图片时,为了有效提升添加效率,该计算机设备可通过上述的先对得到的多个UV岛进行分组,得到多个对象分组,然后对作为目标容器的纹理图片进行区域划分,从而可将每个对象分组中的UV岛添加到该纹理图片的相应区域中。另外,该虚拟对象也可以是社交场景下显示在社交界面中的虚拟人物等,那么在计算机设备将虚拟人物显示在社交界面中时,也可采用上述的通过对该虚拟人物的三维模型进行分割,二维展平转换和装箱处理来实现,而同样的,在装箱过程中,可通过对二维展平转换得到的资源对象分组和作为目标容器的纹理图片的区域划分,来对资源对象的装箱过程进行加速。在一个实施例中,本申请实施例还可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景,该计算机设备可以是终端设备,也可以是服务器,而在该计算机设备为终端设备时,该终端设备可以包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等。
在一个实施例中,将资源对象添加到目标容器的过程也是针对该资源对象的装箱过程,其中,装箱过程(或称为装箱问题(Packing Problem))是指将一组规则或者不规则的二维或者三维物体,按照某种规则排列在一个给定的规则或者不规则容器中,从而达到特定的目的,而本申请实施例聚焦于将二维不规则多边形装箱在一个二维容器中,也即是说,在本申请实施例中提及的资源对象和目标容器均是二维的,且针对该资源对象和目标容器的处理过程也是二维的处理过程,具体可如图1b所示,图1b中由10标记的虚线框中的任一多边形为一个资源对象,由11标记的七边形则为目标容器。在一个实施例中,如果该资源对象和目标容器是三维物体时,那么该计算机设备则可基于三维物体与二维物体之间的转换关系(如投影关系等),将三维的资源对象或目标容器进行二维映射处理后,再采用本申请实施例所提出的对象处理方法进行装箱处理。需要说明的是,本申请实施例所提出的对象处理方法主要是对大规模的资源对象进行处理的,大规模是指需要添加到目标容器中的资源对象的数量,一般认为该资源对象的数量大于阈值时为大规模,而该阈值可以是100个或者200个等,该阈值可以是计算机设备预设的,或者人为设定的,且该阈值是支持进行调整的,可以理解,通过对不同阈值的设定,使得计算机设备触发进行资源对象的分组和目标容器的分组的条件不同,那么,为了尽可能地鼓励超大规模的分区执行,可放松对该阈值的设定。
在一个实施例中,如果计算机设备获取到的资源对象的规模较小(即资源对象总数较少,例如资源对象的总数小于阈值),该计算机设备可不对该较小规模的资源对象及目标容器进行划分,那么,该计算机设备在将规模较小的资源对象添加到目标容器时,可在确定各资源对象的添加顺序后,依次取出一个资源对象添加到目标容器中,并在该目标容器每次添加了资源对象后,对该目标容器的剩余可进行资源对象放置的区域进行更新,进而再取出另一个资源对象基于该剩余的区域进行添加,如此迭代直至将较小规模的资源对象全部添加到目标容器中。在一个实施例中,计算机设备在将资源对象添加到目标容器时,可能存在无法将全部的资源对象均成功添加到该目标容器中的情况,那么,该计算机设备在这种情况下可在这种情况下停止进行资源对象的添加,或者,该计算机设备也可先对资源对象进行重新划分后再进行后续的添加过程,如该计算机设备可在存在无法被添加到目标容器的资源对象时,先重新将目标形状的资源对象划分为多个资源对象,然后再基于重新划分得到的资源对象进行添加,其中,目标形状的资源对象是指长度远大于宽度或宽度远大于长度的多边形,如狭长型多边形,而远大于是指相差比例较大,如呈现5倍或10倍等的情况可视为远大于。
在一个实施例中,计算机设备分别对大规模的资源对象和目标容器进行划分,并得到多个对象分组及对应进行添加的区域后,该计算机设备在将各对象分组中包括的资源对象添加到相应的区域中时,可采用串行添加的方式,即该计算机设备可从得到的多个对象分组中,每次选取出一个对象分组进行资源对象的添加,并在将选取出一个对象分组中的资源对象添加到对应的区域后,再选取出另一个对象分组进行资源对象的添加,直至对每个对象分组中的资源对象均执行了上述的添加过程后,该计算机设备可确定完成对大规模的资源对象的串行添加过程。或者,在另一种实施方式中,该计算机设备也可在得到多个对象分组及对应的区域后,采用并行添加的方式将各对象分组中的资源对象添加到相应区域中,在具体实现中,该计算机设备在采用并行添加的方式进行资源对象的添加时,可将各个对象分组中的资源对象并发地添加到目标容器的相应区域中。经实践表明,在计算机设备对大规模的资源对象和目标容器进行划分后,无论采取上述的串行添加方式或并行添加方式执行资源对象的添加过程,都能保证计算机设备在进行资源对象添加时对目标容器的填充率,并同时实现对添加过程进行加速,使计算机设备可实现在保证填充率的基础上取得较为不错的加速效果,因此,计算机设备采用先对资源对象和目标容器进行划分,再将资源对象添加到目标容器中的方法,可有效提升将资源对象添加到目标容器过程中的效率。
请参见图2,是本申请实施例提出的一种对象处理方法的示意流程图,如图2所示,该方法可包括:
S201,获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数。
S202,根据N的取值及每个资源对象的面积,对N个资源对象进行分组处理,得到分组处理结果,分组处理结果包括至少两个对象分组及每个对象分组的累计面积;其中,任一对象分组的累积面积是任一对象分组中所有资源对象的面积之和。
在步骤S201和步骤S202中,在待添加(或待装箱)的资源对象规模过大的情况下,如果由计算机设备对较大规模的资源对象进行装箱,将导致计算机设备执行装箱时的运行效率低下,而由于在资源对象的数量非常大(即超过阈值,该阈值例如可以是100个或者200个等)的情况下,该计算机设备将资源对象添加到目标容器后的装箱结果的填充率往往也非常高,所以,为了提升计算机设备对大规模的资源对象进行装箱的效率,即使稍微牺牲一下目标容器的填充率也是能达到不错的装箱结果的。因此,为了有效提升将较多数量(即较大规模)的资源对象添加到目标容器中的效率,该计算机设备可先对资源对象进行合理分组,同时对装箱区域(即目标容器)进行相应划分,然后,该计算机设备则可将对资源对象进行分组后得到的对象分组添加到相应的装箱区域中,从而可提升计算机设备将资源对象添加到目标容器的效率。
由于计算机设备获取的资源对象不仅数量众多,而且大小不一,形状各异,那么,为了保证该计算机设备在将资源对象添加到目标容器后,针对该目标容器的填充率高,以及为了保证计算机设备在将资源对象添加到目标容器后,资源对象在目标容器中的整体分布的均匀性,该计算机设备在对资源对象进行分组处理时,可基于如下的原则①和原则②进行分组:
①尽量把面积较大的资源对象分到不同的对象分组内,从而减轻每个对象分组的装箱压力,因为一般而言,在对象分组中存在多个面积较大的资源对象时,不利于将该对象分组中的资源对象添加到相应的区域中;
②尽量让各个对象分组的累计面积(即各对象分组包括的所有资源对象的面积之和)接近,从而使得针对目标容器的空间划分比较均匀,并且可保证计算机设备在将每个对象分组中的资源对象添加到相应区域的耗时也保持大体的一致性。
基于计算机设备对获取到的N个资源对象进行分组处理时所采用的上述原则①和原则②,该计算机设备在采用上述的对象分组原则对获取到的N个资源对象进行分组处理后,可使得到的各对象分组中的任意两个对象分组的累计面积之间的差值小于面积差阈值,也即是说,基于上述的对象分组原则划分得到的各对象分组的累计面积是相近的。在一个实施例中,任一资源对象的面积是指该资源对象对应的多边形的面积,而在该多边形包括孔洞的情况下,资源对象的面积为多边形的面积减去孔洞的面积。另外,如果计算机设备无法基于资源对象的累计面积对资源对象进行完全均分,那么,该计算机设备在对目标容器进行划分时,则可基于对资源对象分组得到的各对象分组的累计面积进行等比例划分,从而使对目标容器划分得到的各区域与对应的资源分组的扩展因子尽量的接近,可有效保证后续在将资源对象添加到相应区域时的合理性。
S203,基于分组处理结果将目标容器划分为至少两个区域,其中,一个对象分组与一个区域相对应。
S204,按照对象分组与区域之间的对应关系,在目标容器中添加N个资源对象。
在步骤S203和步骤S204中,基于计算机设备对资源对象的分组过程,该计算机设备在对目标容器进行划分时,可参考计算机设备对资源对象的分组处理结果来对目标容器进行划分,在具体实现中,计算机设备在参考资源对象的分组处理结果来对目标容器进行划分时,可先按照该目标容器的长宽比确定针对该目标容器的划分策略,如确定的划分策略是水平划分的策略或垂直划分的策略。在确定划分策略后,该计算机设备可基于对资源对象进行分组后得到的各对象分组的累计面积之间的面积比例来确定最终的划分位置,进一步地,该计算机设备则可结合确定的划分策略和划分位置来对目标容器进行划分。举例来说,计算机设备可在该目标容器的长度大于宽度时,确定采用垂直划分的策略,否则采用水平划分的策略。假设计算机设备确定出的划分策略是水平划分的策略,那么,如果基于计算机设备对资源对象进行对象分组处理得到的分组处理结果,使得一个对象分组的累计面积占全部资源对象的累计面积的60%,另一个对象分组的累计面积占全部资源对象的累计面积的40%,则该计算机设备在对目标容器进行水平划分的时候,也将使水平划分得到的左侧区域占目标容器的总面积的60%,右侧区域占该目标容器的总面积的40%,并使占总面积60%的区域与累计面积占全部资源对象的60%的对象分组相对应,而占总面积40%的区域则与累计面积占全部资源对象的40%的对象分组相对应。这样一方面可以尽量保证对目标容器划分得到的各区域不过于狭长,另一方面也可以尽量保证资源对象在不同区域内分布的均匀性。
基于计算机设备对多个资源对象的分组处理结果及对目标容器划分得到的多个区域,由于一个对象分组是与目标容器的一个区域相对应的,那么计算机设备后续在进行资源对象的添加时,也是将一个对象分组中的资源对象添加到目标容器相应的区域中的,也即是说,计算机设备将获取到的N个资源对象添加到目标容器的过程,也是根据对象分组与区域之间的对应关系,将各对象分组中的资源对象添加到该目标容器相应区域的过程。经实践表明,计算机设备基于对象分组与区域之间的对应关系对N个资源对象进行装箱可取得不错的加速效果,其中,若待添加到目标容器的资源对象的数量为801个(即N的取值为801个),在不采用分组策略的情况下,计算机设备将这801个资源对象添加到目标容器的运行时间为965s,填充率为99%,在不采用分组策略的情况下将这801个资源对象添加到目标容器的结果可如图3中由30标记的示意图所示,而在采用分组策略之后,该计算机设备即使是将多个对象分组串行地添加到对应的区域中,其运行时间也降低为93s,填充率为96%,由此可见,在采用分组策略之后,由于目标容器的不同区域之间存在的空隙,将导致针对目标容器的填充率有所下降,但仍然是符合对目标容器的填充需求的,而另外,采用分组策略之后的运行时间相比于未采用分组策略的情况则下降到原先的10%,由此可见,基于计算机设备对资源对象的分组及对目标容器的区域划分处理,可在保证针对目标容器的一定的填充率的基础上,有效降低对资源对象的填充时间。
采用分组策略之后,计算机设备将801个资源对象添加到目标容器后的结果可如图3中由31标记的示意图所示,可如图3中由31标记的示意图所示的,在采用分组策略之后,计算机设备可将这801个资源对象划分到4个对象分组中,并对应将目标容器划分为4个区域,其中,将目标容器划分成4个区域的方式,可以使图3中由31标记示意图中的虚线所示,计算机设备基于对资源对象的分组和目标容器的区域划分,则可将每个对象分组中的资源对象添加到相应的区域中。而计算机设备在完成对资源对象进行分组,并完成对目标容器的划分后,由于现在的计算机设备基本都配置了多核计算资源,所以对分组后的资源对象进行并行化的装箱就成为了进一步提升计算机设备的资源使用效率,及针对资源对象的装箱速度的有效途径,也即是说,计算机设备可基于多核计算资源,并根据对象分组与区域之间的对应关系,采用并行添加的处理流程对资源对象进行装箱,以进一步提升该计算机设备将资源对象添加到目标容器的效率。
在一个实施例中,计算机设备在采用并行添加的处理流程将各对象分组中的资源对象添加到相应区域时,可基于计算机设备的操作系统提供的并行化机制来确定并行添加所采取的具体方式。其中,若计算机设备中的操作系统是Linux操作系统(一种操作系统),Linux操作系统提供了多进程和多线程两种并行化机制,其中,多进程并行机制是指:计算机设备在将任一对象分组添加到对应区域时,操作系统将独立创建一个进程来执行,且用于将不同对象分组中的资源对象添加到相应区域的进程之间不可以进行数据共享;另外,多线程的并行机制是指:计算机设备在将任一对象分组添加到对应区域时,是通过创建一个对应的线程来执行的,而分别执行将不同对象分组中的资源对象添加到相应区域的线程同属于一个进程。由于计算机设备在采用多进程机制作为并行化的处理机制时,将创建多个独立的进程来执行对各对象分组的资源对象的添加过程,而在采用多线程机制作为并行化的处理机制时,则只需创建一个进程,并由创建的一个进程生成的多个线程来执行对各对象分组的资源对象的添加过程,而由于各进程之间是不可进行数据共享的,而同属于一个进程的各线程之间则可以共享数据,所以,该计算机设备在选择多进程作为并行化机制或采用多线程的并行化机制时,可结合在并行化过程中进行数据共享的重要程度,以及计算机设备的处理资源在进行线程和进程创建的创建能力来确定。
另外,Linux操作系统还提供了管道、临时文件、普通文件等多种数据交换方式,其中,管道数据交换方式是指:在Linux系统中,采用管道(PIPE)来实现子进程和父进程之间的数据通信;临时文件数据交换方式是指:在Linux系统中,采用临时文件来实现子进程和父进程之间的数据通信,其中,在Linux系统中还定义了用于处理临时文件的mkstemp函数(一种临时文件处理函数)和tmpfile函数(另一种临时文件处理函数);普通文件数据交换方式是指:采用工程师自定义的文件来实现子进程和父进程之间的数据通信,其中,工程师可以自定义文件格式以及读写方式,因此,该计算机设备在确定具体采用的并行化机制时,还可结合计算机设备中的操作系统所提供的数据交换方式来确定。其中,基于操作系统提供的并行化机制和数据交换方式,并综合本申请实施例应用场景的具体需求,计算机设备在采用并行添加的处理流程将各对象分组中的资源对象添加到相应区域时,可采用四种不同的并行添加的处理流程,而这四种并行添加的处理流程,及计算机设备在采用每种并行添加的处理流程时的优势及劣势具体可如表1所示:
表1
其中,递归分组是指:在得到当前输入空间(其中,空间用于进行资源对象的装箱处理)时,首先判断是否需要对该当前输入空间进行分组,如果不需要,则该计算机设备将在该当前输入空间中直接尝试装箱,并返回装箱结果;如果需要,则将当前输入空间分为两个子空间,然后采用同样的方式来分别处理两个子空间。预先分组是指:首先对整个空间进行完全划分,形成多个最终子空间,然后采用串行或者并行的方式,来对每个子空间进行装箱,最后返回结果。如上述的表1所示,该计算机设备在采用方案1对各对象分组中的资源对象进行并行添加的处理流程时,该计算机设备在得到当前输入空间后,由于资源对象被划分成了多个对象分组,因此,该计算机设备可先将当前输入空间划分为两个子空间,然后采用同样的方式,直至将当前输入空间划分为多个子空间,一个子空间用于对一个对象分组中的资源对象进行装箱处理。进一步地,在将当前输入空间划分为多个子空间后,该计算机设备将针对每个子空间创建一个进程来处理与该子空间对应的对象分组的装箱问题,其中,基于对每个子空间的递归分组的方式,如果某个子空间被分组后第一子空间和第二子空间,那么,计算机设备在该某个子空间中创建的进程为父进程,在该第一子空间和第二子空间中创建的进程为该父进程的子进程,另外,由于每个子空间的进程在对相应子空间中的资源对象装箱完毕后,将生成对应的中间文件,以对相应子空间中的资源对象的装箱位置进行记录,那么计算机设备可通过管道来实现父进程对子进程中的中间文件的读取,得到最终的结果文件。该计算机设备在采用方案2、方案3或方案4对各对象分组中的资源对象进行并行添加的处理流程时,则可同理处理。
在一个实施例中,该计算机设备可基于设备的实际能力和需求,从表1所示的四种并行流程中确定出将各对象分组中的资源对象添加到相应区域时所采取的具体流程,即计算机设备也可采用如表1中的方案1~4中的任意一种策略执行对各对象分组中的资源对象的并行添加的处理流程。而基于表1所示的不同并行添加的处理流程的优劣对比,在一般情况下,该计算机设备可采用表1中的方案4来实现将各对象分组中的资源对象并行化地添加到相应的区域中。
在本申请实施例中,计算机设备可在获取到待添加到目标容器中的大于阈值的资源对象后,先将获取到的多个资源对象进行分组处理,以将该多个资源对象划分到多个不同的对象分组中,而在该计算机设备对多个资源对象进行分组处理时,可基于各对象分组的累计面积相近的原则进行分组处理,从而可有效避免将对应面积较大的资源对象划分到同一对象分组中,进而有利于后续将各对象分组中的资源对象顺利地添加到目标容器中。此外,该计算机设备还可基于针对资源对象的分组处理结果,对目标容器进行区域划分,以得到分别和每个对象分组相对应的区域,进而计算机设备可按照各对象分组与区域之间的对应关系,将获取到的多个资源对象添加到相应的区域中。而基于计算机设备对资源对象的分组处理和目标容器的划分,计算机设备后续在将获取到的较大数量的资源对象添加到目标容器时,可采取将各对象分组添加到相应区域的方式,使得计算机设备可在保证对目标容器的一定的填充率的基础上,有效提升针对资源对象的添加效率。
下面,结合图4对上述图2所示的实施例中提及的针对资源对象的分组处理过程,对目标容器进行划分处理的过程,以及基于各对象分组与区域之间的对应关系进行资源对象的添加的过程进行详细说明。该方法可包括:
S401,获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数。
S402,根据N的取值及每个资源对象的面积,对N个资源对象进行分组处理,得到分组处理结果,分组处理结果包括至少两个对象分组及每个对象分组的累计面积;其中,任一对象分组的累积面积是任一对象分组中所有资源对象的面积之和。
在步骤S401和步骤S402中,计算机设备获取到N个资源对象后,如果N的取值大于等于阈值,则可认为该计算机设备所获取到的资源对象的数量较大,进而可对获取到的资源对象进行分组处理,其中,该阈值可能为100个或者200个等,由于N的取值用于描述N个资源对象所属的目标规模范围,其中,一个规模范围与一个分组数量相关联,因此,该计算机设备在根据N的取值及每个资源对象的面积对N个资源对象进行分组处理时,可先获取与目标规模范围关联的目标分组数量M,目标分组数量M为对N个资源对象进行分组处理后包括的至少两个对象分组的总数;进一步地,该计算机设备可根据每个资源对象的面积,将N个资源对象划分到M个对象分组中,并在每个对象分组中,对包括的所有资源对象的面积进行求和处理,得到每个对象分组的累计面积;其中,一个对象分组至少包括一个资源对象,M为大于等于2且小于等于N的整数。在一个实施例中,计算机设备在根据每个资源对象的面积将N个资源对象划分到M个对象分组中时,该计算机设备可对N个资源对象按照面积的大小顺序进行降序排列,并确定M个对象分组中的任一对象分组已包括的资源对象的参考累计面积,从而使得该计算机设备可根据降序排列依次选取出一个资源对象,并结合参考累计面积确定被选取出的资源对象被划分到的对象分组,以将N个资源对象划分到M个对象分组中。
在M的取值为2时,计算机设备可将获取到的N个资源对象进行分组处理,并得到对应的两个对象分组(其中,该两个对象分组可以分别记为第一对象分组和第二对象分组),那么,该计算机设备在将获取得到的N个资源对象划分到两个对象分组时,可执行如下步骤(1)~(3):
(1)将待分组的资源对象按照面积进行降序排列;
(2)设置两个对象分组,分别包括第一对象分组A和第二对象分组B,并分别记录它们当前已包含的资源对象的累计面积,假设第一对象分组的累计面积记SA,第二对象分组的累计面积记为SB;
(3)对于排序之后的任一资源对象,如果当前SA<SB,则将其分入第一对象分组A,否则将其分入第二对象分组B,然后分别更新SA和SB。
S403,基于分组处理结果将目标容器划分为至少两个区域,其中,一个对象分组与一个区域相对应。
该计算机设备在基于该分组处理结果将目标容器划分为至少两个区域时,可先从分组处理结果中获取每个对象分组的累计面积,并根据每个对象分组的累计面积,确定各对象分组的累计面积之间的面积比例,然后可获取针对目标容器的划分策略,并根据划分策略及面积比例确定对目标容器进行划分处理时的划分位置,其中,划分得到的至少两个区域之间的区域面积比例与各对象分组的累计面积之间的比例相同。而计算机设备在确定针对目标容器的划分策略时,可先获取目标容器的长宽比,并在在长宽比大于1时,则采用垂直划分策略,否则采用水平划分策略;其中,水平划分策略是指将目标容器划分为上下关系的至少两个区域,垂直划分策略则是指将目标容器划分为左右关系的至少两个区域。在其他实现方式中,该水平划分策略也可以是指将目标容器划分为左右关系的至少两个区域,而该垂直划分策略也可以是指将目标容器划分为上下关系的至少两个区域,在本申请实施例中,对划分策略是指示的具体划分方式不做限定。
在计算机设备根据确定的划分策略和划分位置将目标容器划分为至少两个区域后,将使划分得到的一个区域与等比例的一个对象分组相对应。需要说明的是,计算机设备在对目标区域进行划分时,也可采用上述的水平划分和垂直划分相结合的方式进行,即该计算机设备可基于对资源对象进行分组后得到的各对象分组中所包括的资源对象的面积分布情况,对目标容器采用垂直划分和水平划分结合的方式将目标容器划分为多个区域,以使划分得到的区域和待添加的资源对象的匹配度高,从而可有效提升后续在将任一对象分组中的资源对象添加到相应区域时的效率。
计算机设备在对资源对象进行分组处理得到多个对象分组,并在将目标容器划分为多个区域后,该计算机设备可采用串行添加的方式,依次将各分组中的资源对象添加到相应的区域中,其中,计算机设备在采用串行添加的方式进行资源对象添加时,该计算机设备可从分组得到的多个对象分组中,每次选取出一个对象分组,并将选取出的对象分组中的资源对象添加到相应区域中,然后,再选取另一个对象分组,并对选取出的另一个对象分组中的资源对象进行添加,如此循环上述步骤,直至每个对象分组被选取出并执行资源对象的添加过程为止。在一个实施例中,为了进一步提升进行资源对象添加的效率,该计算机设备也可采用并行添加的方式将各对象分组中的资源对象添加到相应区域,其中,计算机设备在采用并行添加的方式对各对象分组的资源对象进行添加时,将通过创建多个子进程(或进程),并通过调用每个子进程对一个对象分组中的资源对象进行添加,从而实现将划分得到的多个对象分组中的资源对象添加到相应区域中。而计算机设备在采用并行方式添加各对象分组中的资源对象到相应区域时,需要先确定各对象分组中的资源对象是否能被完全添加到对应的区域中,其中,该计算机设备在确定各对象分组中的资源对象可被完全添加到相应区域时,则可采用并行添加的方式将每个对象分组中的资源对象添加到相应的区域中。
在一个实施例中,如果计算机设备分组得到的多个对象分组中,存在一个对象分组所包括的资源对象不能被完全添加到对应的区域中,则该计算机设备可取消对N个资源对象执行的分组处理及对目标容器进行的区域划分,并采用自动添加算法将N个资源对象添加到目标容器中,直至触发添加停止条件。也即是说,计算机设备在确定对资源对象进行分组处理后得到的多个对象分组中,如果存在某个对象分组中的资源对象无法被添加到相应的区域,则将采取不分组策略将获取的N个资源对象,按照确定出的被添加到目标容器的先后顺序,依次将这N个资源对象添加到目标容器中,直至触发添加停止条件。其中,添加停止条件是指:若还存在一个或多个资源对象未被添加,任一个未被添加的资源对象在不遮挡该目标容器中已添加的资源对象的情况下,均无法被添加到该目标容器中剩余进行资源对象添加的区域中。
也就是说,如果计算机设备确定某个对象分组中的资源对象存在无法被完全添加到相应区域的情况,则可结束对目标容器的递归划分过程,直接将获取到的资源对象依次进行装箱处理,以保证资源对象尽可能多地被添加到目标容器中,提升计算机设备针对资源对象的装箱效果。但是在某些情况下,一些无法被完全添加到相应区域的对象分组的出现,可能是由于该对象分组中存在目标形状的资源对象(如狭长的多边形)的情况造成的,基于此,该计算机设备在确定存在无法被完全添加到相应区域的对象分组后,可先判断获取的N个资源对象中是否存在目标形状的资源对象,并在确定存在目标形状的资源对象时,先尝试对该目标形状的资源对象进行适当切分,从而可对切分处理后的资源对象(或多边形)进行后续的资源对象的分组处理。在一个实施例中,如果切分之后所有多边形都可以被添加到相应的区域中,该计算机设备就可以进一步对目标容器进行递归划分,也就可以避免由于个别多边形的形状而影响针对目标容器的划分结果,从而提升分组并行化的加速效果。而如果计算机设备对目标形状的资源对象切分失败,或者切分后该对象分组仍存在无法被添加到相应区域中的资源对象,则可采取上述的不分组策略直接将获取的资源对象添加到目标容器中。
其中,对目标容器进行递归划分的过程是指,该计算机设备在将目标容器划分得到多个区域时,可先将得到的各对象分组划分为两个组别,从而可基于每个组别中包括的资源对象的累计面积,将目标容器先划分为两个参考区域,且划分的一个参考区域与一个组别的对象分组相对应,然后,该计算机设备可在确定对应组别的对象分组中的资源对象能被完全添加到相应的参考区域后,该计算机设备可进一步基于每个参考区域对应的各对象分组的累计面积之间的比例,对得到的参考区域进行划分,从而将该目标容器划分为多个区域。其中,在存在目标形状的资源对象的情况下,该计算机设备在对目标形状的资源对象进行划分前将多个资源对象添加到目标容器可如图5中50标记的示意图所示,而在对目标形状的资源对象进行划分后,将多个资源对象添加到目标容器则可得到如图5中由51标记的示意图。
S404,根据任一区域的区域面积及与任一区域对应的对象分组的累计面积,确定任一对象分组中的所有资源对象是否能完全添加到对应的区域中。
S405,若是,则采用自动添加算法并行地将每个对象分组所包括的资源对象添加到对应的区域中。
在步骤S404和步骤S405中,计算机设备若确定对资源对象进行分组处理后得到的各对象分组均可被完全添加到相应区域中,该计算机设备可并行地将每个对象分组所包括的资源对象添加到对应的区域中。在一个实施例中,计算机设备在确定各对象分组中的资源对象是否能被完全添加到相应的区域时,可通过该对象分组中包括的资源对象的累计面积与相应区域的区域面积来确定,其中,当对象分组的累计面积小于等于该区域面积时,该计算机设备可认为该对象分组中的资源对象能被完全添加到相应区域中。此外,由于各资源对象在添加到目标容器时,是可以进行缩放后再添加的,因此,当该计算机设备确定各对象分组中的资源对象是否能被完全添加到相应的区域时,可先对各对象分组中各资源对象进行一定比例的缩放,并计算缩放后的各资源对象的累计面积,进而,该计算机设备可在缩放后的资源对象的累计面积小于相应区域的区域面积时,确定能将对象分组中的资源对象完全添加到相应区域中。其中,该计算机设备确定的针对资源对象的缩放比例可以是60%或者70%,可以理解,基于对资源对象进行缩放后再添加到目标容器中的方式,使得计算机设备获取的各对象分组中的资源对象在一般情况(即不包括目标形状的资源对象的情况等)下是可以被全部放到相应的区域中的。
计算机设备在确定各对象分组所包括的资源对象可被添加到相应的区域后,如果计算机设备确定采用上述表1中的方案4的并行添加流程对各对象分组进行添加处理,该计算机设备需要创建新的子进程,那么,该就算计设备则可通过在新的子进程中执行对各区域的装箱处理,来实现针对各对象分组的并行化添加流程。下面,结合图6对计算机设备将获取的资源对象并行地添加到相应区域的过程进行综合说明:
1)获取资源对象,并判断获取的资源对象的规模(即判断获取的资源对象的数量N的取值是否大于阈值,可假设为100个等)),如果超过阈值,则转而执行步骤2)进行执行,否则执行步骤3);
2)采用自动添加算法对获取的资源对象直接添加到目标容器中,并将添加结果写入添加结果文件中,算法结束;
3)采用上述的分组策略将获取的资源对象划分为多个对象分组,并将目标容器划分为与各对象分组对应的区域;
4)判断每个对象分组中的资源对象是否都可以被完全添加到相应区域中,若否,则转而执行步骤2),若是,则执行步骤5);
5)创建多个子进程,并在每个子进程中递归调用自动添加算法将相应的对象分组添加到对应的区域中,其中,一个子进程用于将一对象分组所包括的资源对象添加到对应的一个区域中;
6)在全部子进程运行结束后,调用父进程读取每个子进程生成的中间文件,及对中间文件进行合并,从而生成将N个资源对象添加到目标容器的添加结果文件,在生成该添加结果文件并删除中间文件后结束流程。
在一个实施例中,自动添加算法是一种基于NFP(NoFitPolygon)和最低重心原则的自动装箱算法,其中,NFP 是指一种添加可行区域,即是指一个多边形沿着另一多边形的内壁进行滑动时,其边界上的某个参考点的轨迹所形成的多边形,NFP定义了将一个多边形(即上述的资源对象)添加到另一多边形所定义的区域内(即目标容器)时,该一个多边形的参考点被放置的可行区域。下面,结合图7a对该自动添加算法的整体框架进行描述:
1)基于遗传算法(Genetic Algorithm)确定出任一对象分组所包括的各资源对象的添加顺序;
其中,遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,该算法通过数学的方式,利用计算机仿真运算,将问题的求解过程转换成类似生物进化中的染色体基因的交叉、变异等过程。在求解较为复杂的组合优化问题时,相对一些常规的优化算法,通常能够较快地获得较好的优化结果,在本申请实施例中,计算机设备可获取得到针对任一对象分组中各资源对象的多个添加顺序,从而可通过遗传算法对获取的多个添加顺序进行优劣淘汰计算,确定出针对该资源对象进行添加的最佳顺序。
2)基于添加顺序依次选取出一个资源对象作为待添加对象(如图7a中由70标记的多边形),并确定将待添加对象添加到对应区域时的至少一个候选角度;
3)确定任一候选角度对应的添加可行区域(如图7a中由701标记的多边形区域),该添加可行区域用于指示采用任一候选角度将待添加对象添加到对应区域后,该待添加对象对应的重心;
4)将待添加对象添加到对应添加区域中重心最低的位置处,并更新对应区域中支持进行资源对象添加的剩余区域,直至将任一对象分组所包括的全部资源对象添加到对应区域中。
在一个实施例中,由于每个待添加对象对应的候选角度有多个,而该待添加对象在不同的候选角度下,对应的添加可行区域(即NFP)是不同的,其中,基于待添加对象的不同候选角度所确定出的不同NFP可如图7a的右图中的多个点线多边形区域所示,基于不同候选郊区确定的多个不同NFP,该计算机设备可确定出重心最低的位置,从而可将待添加的对象添加到选取出的最低重心位置处,其中,该计算机设备选取出的重心最低位置可以是如图7a中由702标记的位置。
在一个实施例中,该计算机设备可采用闵可夫斯基和(MinkowskiSum)的计算公式确定NFP(即添加可行区域),在具体实现中,该计算机设备可将待添加对象沿对应区域的区域边界(该区域边界例如可以是如图7b中由A标记的边界)进行滑动,得到待添加对象的边界滑动轨迹,得到的边界滑动轨迹如图7b中由71标记的虚线框区域;然后该计算机设备可将待添加对象的参考点基于参考原点进行镜像对称处理,得到待添加对象的镜像对象,其中,该待添加对象例如可以是如图7b中由用B表示的三角形,那么,该待添加对象的镜像对象则是在如图7b中由-B表示的三角形;进而计算机设备可根据边界滑动轨迹,计算镜像对象与区域的闵可夫斯基和,并基于闵可夫斯基和确定待添加对象的添加可行区域。其中,该计算机设备计算镜像对象与区域之间的闵可夫斯基和即是计算A与-B的闵可夫斯基和,其中,计算A与-B闵可夫斯基和的计算公式如下:
基于计算得到的NFP,该计算机设备可在资源对象的参考点处于边界滑动轨迹内(如图7c的左图所示)时,说明参考点位于添加可行区域内;而如果参考点处于边界滑动轨迹外(如图7c的右图所)示,说明参考点位于添加可行区域外;其中,当参考点位于添加可行区域内时,该计算机设备确定能将选取的对象添加到对应的位置上,当参考点位于添加可行区域外时,该计算机设备确定不能将选取的对象添加到对应的位置上。
在一个实施例中,由于计算机设备计算NFP的时间正比于资源对象对应的多边形及目标容器对应多边形的顶点个数,且由于多边形的形状在装箱过程中也扮演着关键角色,其中,形状越简单的多边形,计算机设备计算NFP的速度越快,且装箱速度也越快,可以理解,计算机设备在进行资源对象的添加时,不仅和获取到的多边形的数量相关,且和多边形的形状也紧密相关,因此,该计算机设备可通过采用近似多边形来代替原始多边形的方式来提升对闵可夫斯基和的计算速度,也就是说,计算机设备可在基于闵可夫斯基和确定待添加对象的添加可行区域的过程中,对待添加对象进行简化处理,并采用简化后的待添加对象计算闵可夫斯基和,从而提升对NFP的计算速度。在一个实施例中,由于装箱结果中不允许多边形之间存在交叠(不过可以存在微小间隙),所以计算机设备在采用近似多边形替代原始多边形进行闵科夫斯基和计算时,所使用的近似多边形不能比原始多边形的面积更小,那么,该计算机设备可采用面积非递减的带孔多边形简化算法,对待添加对象进行简化处理。其中,该计算机设备所采用简化算法的基本思想包括如下的一个或多个:
1)将待添加对象对应的多边形的内凹顶点(Concave Vertex)删除。
2)将待添加对象对应的多边形的外凸线段(Convex Segment)简化为一个顶点。
3)对于孔洞上的内凹顶点或者外凸线段,也进行类似处理。
其中,内凹顶点是指对于多边形上的相邻线段(p,q)和(q,r),如果顶点(p,q,r)形成了右转关系(right turn),则定义q为内凹顶点,如图7d中由703标记的顶点则为内凹顶点,删除该内凹顶点后的多边形则如图7d中由72标记的多边形所示。而对于多边形上的相邻线段(p,q),(q,r)和(r,s),如果(p,q,r)和(q,r,s)均形成了左转关系(left turn),那么定义线段(q,r)为外凸线段,如图7e所示的梯形中的两条腰则为外凸线段,那么,将外凸线段简化为一个顶点后的多边形则可如图7e中由73标记的多边形所示。
在一个实施例中,由于计算机设备在并行处理的过程中,每个子进程均会与父进程之间进行数据交换,且每个子进程在将一个对象分组所包括的资源对象添加到对应的一个区域后均会生成相应的中间文件,其中,中间文件用于记录一个对象分组所包括的各资源对象在区域中的添加位置,因此,为了避免计算机设备在将资源对象添加到目标容器结束之后遗留大量的中间文件,以及为了节省该计算机设备的计算资源,该计算机设备可在获取到每个子进程在采用自动添加算法将一个对象分组所包括的资源对象添加到对应的一个区域生成的中间文件后,并在确定将目标容器中添加N个对象结束时,在父进程中对中间文件进行合并处理,并基于对中间文件的合并处理生成针对N个资源对象的添加结果文件,以及将中间文件删除。基于计算机设备对中间文件的删除,使得计算机设备可在将获取的N个资源对象添加到目标容器后,仅留下一个记录最终装箱结果的添加结果文件,那么用户也就只需要读取最终的添加结果文件即可获得针对多个资源对象的装箱结果,另外,基于计算机设备对中间文件的删除,还可实现对计算机设备相关资源的释放,从而可有效减缓计算机设备的压力,进而可保证计算机设备后续的计算需求。
基于上述提及的分组和并行化手段,计算机设备可有效节省将较大规模的资源对象添加到目标容器的时间,也就可使计算机设备有效提升针对资源对象的装箱效率。但是,为了进一步加速计算机设备将各对象分组中的资源对象添加到相应区域的并行化效率,从而整体提高计算机设备的并行化处理效率,该计算机设备可采用快速舍入(SnapRounding,SR)技巧对各对象分组中的资源对象(即各资源对象对应的多边形坐标)进行预处理。在计算机设备采用快速舍入技巧对多边形坐标进行预处理时,为了保证快速舍入后的资源对象在被添加到目标容器的相应区域后不与其他的资源对象产生交叠,需要保证得到的新的资源对象的面积是不小于原资源对象面积的。为此,在使用快速舍入前,该计算机设备可先对原资源对象进行像素外扩处理,得到每个资源对象的近似对象,具体地,该计算机设备可通过在一个出血值的基础上额外加半个像素距离的方式,实现对原资源对象的像素外扩处理,如图8所示,若该计算机设备进行像素外扩处理之前的资源对象如图8中由80标记的多边形所示,那么,该计算机设备在进行外扩处理之后得到的资源对象则可如图8中由81标记的多边形所示。计算机设备在采用像素外扩处理得到原资源对象的近似对象后,则可进一步进行快速舍入得到有限精度的目标资源对象,而在得到目标资源对象后,该计算机设备则可对得到的目标资源对象进行对象分组。经实践表明,在采用上述的快速舍入算法对各资源对象进行预处理后,计算机设备将处理后得到的目标资源对象添加到相应区域的整体运行时间,相比于预处理前的整体运行时间减少了20%。其中,出血值是指两个不同的资源对象之间的间隔,一般每128个像素取一个像素出血值,例如256x256分辨率通常采用2个像素值作为出血值,而快速舍入是一种将线段的任意精度排列转换为固定精度表示的方法,在鲁棒几何计算的研究中,它可以归类为一种有限精度逼近技术。
计算机设备通过在2UV项目的Nest工具(一种装箱工具)中采用上述的分组并行化策略,可得到计算机设备对规模较大的资源对象进行装箱的效率,具体可如表2所示:
表2
如表2所示,规模越大的资源对象,计算机设备采用上述的分组并行化策略后进行装箱的加速效果越明显,平均而言,当资源对象的数量超过1000时,如果计算机设备采用分组并行化策略,那么,该计算机设备对资源对象进行装箱的运行时间往往可以降低到原来的20%以下。另外,通过对几个典型的其他分组装箱和并行化方法的耗时对比可发现,计算机设备在获取到较大规模的资源对象后,无论是采用分组策略,还是在分组策略基础上进行并行化策略,都可以大大提升计算机设备对获取到的资源对象的装箱效率,而这种效率的提升在资源对象数量越多的情况下的提升效果则更为明显。
在本申请实施例中,计算机设备在获取到待添加到目标容器的较大规模的资源对象后,可先将获取到的资源对象划分到多个对象分组中,然后在基于对资源对象进行分组处理的结果,将该目标容器进行对应划分,使一个对象分组与目标容器的一个区域相对应,进而可在后续将各对象分组中的资源对象按照该对应关系并行的执行方式,将各对象分组中的资源对象添加到相应区域中,从而完成将获取到的较大规模的资源对象添加到目标容器中。而基于计算机设备在将各对象分组中的资源对象添加到相应区域时所采取的并行化处理方式,不仅可以大大降低每个区域中装箱算法的递归深度,从而提升单区域的运行效率,而且可以充分利用现代计算机中的多核硬件资源,利用并行化的优势进一步降低大规模装箱问题的总体求解时间,从而快速且高效地将大规模的资源对象添加到目标容器。
基于上述对象处理方法实施例的描述,本发明实施例还提出了一种对象处理装置,该对象处理装置可以是运行于上述计算机设备中的一个计算机程序(包括程序代码)。该对象处理装置可用于执行如图2和图4所述的对象处理方法,请参见图9,该对象处理装置包括:获取单元901,处理单元902和添加单元903。
获取单元901,用于获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数;
处理单元902,用于根据N的取值及每个资源对象的面积,对所述N个资源对象进行分组处理,得到分组处理结果,所述分组处理结果包括至少两个对象分组及每个对象分组的累计面积;其中,任一对象分组的累积面积是所述任一对象分组中所有资源对象的面积之和;
所述处理单元902,还用于基于所述分组处理结果将所述目标容器划分为至少两个区域,其中,一个对象分组与一个区域相对应;
添加单元903,用于按照所述对象分组与所述区域之间的对应关系,在所述目标容器中添加所述N个资源对象。
在一个实施例中,N的取值用于描述所述N个资源对象所属的目标规模范围,其中,一个规模范围与一个分组数量相关联;所述处理单元902,具体用于:
获取与所述目标规模范围关联的目标分组数量M,所述目标分组数量M为对所述N个资源对象进行分组处理后包括的至少两个对象分组的总数;
根据每个资源对象的面积,将所述N个资源对象划分到M个对象分组中,并在每个对象分组中,对包括的所有资源对象的面积进行求和处理,得到每个对象分组的累计面积;其中,一个对象分组至少包括一个资源对象,M为大于等于2且小于等于N的整数。
在一个实施例中,所述处理单元902,具体用于:
对所述N个资源对象按照面积的大小顺序进行降序排列,并确定M个对象分组中的任一对象分组已包括的资源对象的参考累计面积;
根据所述降序排列依次选取出一个资源对象,并结合所述参考累计面积确定被选取出的资源对象被划分到的对象分组,以将所述N个资源对象划分到M个对象分组中。
在一个实施例中,当所述M的取值为2时,将所述N个资源对象划分到第一对象分组和第二对象分组中;所述处理单元902,具体用于:
若所述第一对象分组已包括的资源对象的参考累计面积,小于所述第二对象分组中已包括的资源对象的参考累计面积,则确定将被选取出的资源对象划分到所述第一对象分组中;
否则,将所述被选取出的资源对象划分到所述第二对象分组中。
在一个实施例中,所述处理单元902,具体用于:
从所述分组处理结果中获取每个对象分组的累计面积,并根据所述每个对象分组的累计面积,确定各对象分组的累计面积之间的面积比例;
获取针对所述目标容器的划分策略,并根据所述划分策略及所述面积比例确定对所述目标容器进行划分处理时的划分位置,其中,划分得到的至少两个区域之间的区域面积比例与所述面积比例相同;
根据确定的划分策略和所述划分位置将所述目标容器划分为至少两个区域。
在一个实施例中,所述处理单元902,具体用于:
获取所述目标容器的长宽比;
在所述长宽比大于1时,则采用垂直划分策略,否则采用水平划分策略;
其中,所述水平划分策略是指将所述目标容器划分为上下关系的至少两个区域,所述垂直划分策略则是指将所述目标容器划分为左右关系的至少两个区域。
在一个实施例中,所述添加单元903,具体用于:
根据任一区域的区域面积及与所述任一区域对应的对象分组的累计面积,确定任一对象分组中的所有资源对象是否能完全添加到对应的区域中;
若是,则采用自动添加算法并行地将每个对象分组所包括的资源对象添加到对应的区域中。
在一个实施例中,所述添加单元903,具体用于:
创建多个子进程,其中,一个子进程用于将一对象分组所包括的资源对象添加到对应的一个区域中;
在每个子进程中,分别同时采用自动添加算法将一个对象分组所包括的资源对象添加到对应的一个区域中。
在一个实施例中,所述获取单元901,还用于获取每个子进程在采用所述自动添加算法将一个对象分组所包括的资源对象添加到对应的一个区域后,生成的中间文件;其中,所述中间文件用于记录所述一个对象分组所包括的各资源对象在对应的一个区域中的添加位置;
所述处理单元902,还用于在所述目标容器中添加所述N个资源对象结束后,在父进程中对所述中间文件进行合并处理,生成针对所述N个资源对象的添加结果文件,并删除所述中间文件。
在一个实施例中,所述处理单元902,还用于若存在一个对象分组所包括的资源对象不能添加到对应的区域中,则取消对所述N个资源对象执行的分组处理及对所述目标容器进行的区域划分;
所述处理单元902,还用于采用所述自动添加算法将所述N个资源对象添加到所述目标容器中,直至触发添加停止条件。
在一个实施例中,所述处理单元902,还用于若存在一个对象分组所包括的资源对象不能完全放入对应的区域中,则判断所述N个资源对象中是否包括目标形状的资源对象;
所述处理单元902,还用于若是,则将所述目标形状的资源对象进行切分处理,并对切分处理后的资源对象进行分组处理;
所述处理单元902,还用于若否,则触发执行取消对所述N个资源对象执行的分组处理及对所述目标容器进行的区域划分的步骤。
在一个实施例中,所述处理单元902,具体用于:
基于遗传算法确定出任一对象分组所包括的各资源对象的添加顺序,并基于所述添加顺序依次选取出一个资源对象作为待添加对象;
确定将所述待添加对象添加到对应区域时的至少一个候选角度,并根据所述待添加对象的添加可行区域确定采用任一候选角度将所述待添加对象添加到对应区域后的重心;
根据所述重心将所述待添加对象添加到对应区域中重心最低的位置处,并更新对应区域中支持进行资源对象添加的剩余区域,直至将所述任一对象分组所包括的全部资源对象添加到对应区域中。
在一个实施例中,所述处理单元902,还用于将所述待添加对象沿对应区域的区域边界进行滑动,得到所述待添加对象的边界滑动轨迹;
所述处理单元902,还用于对所述待添加对象的参考点基于参考原点进行镜像对称处理,得到所述待添加对象的镜像对象;
所述处理单元902,还用于根据所述边界滑动轨迹,计算所述镜像对象与所述区域的闵可夫斯基和,并基于所述闵可夫斯基和确定所述待添加对象的添加可行区域。
在一个实施例中,若所述参考点处于所述边界滑动轨迹内,则说明所述参考点位于所述添加可行区域内;
若所述参考点处于所述边界滑动轨迹外,则说明所述参考点位于所述添加可行区域外;
当所述参考点位于所述添加可行区域内时,允许将选取对象添加到对应的位置上,当所述参考点位于所述添加可行区域外时,不允许将所述选取对象添加到对应的位置上。
在一个实施例中,所述处理单元902,还用于在基于所述闵可夫斯基和确定所述待添加对象的添加可行区域的过程中,对所述待添加对象进行简化处理,并采用简化后的待添加对象计算所述闵可夫斯基和;
其中,所述简化处理包括以下至少一种:将所述待添加对象对应的多边形的内凹顶点删除,将所述待添加对象对应的多边形的外凸线段简化为一个顶点。
在一个实施例中,所述处理单元902,还用于采用快速舍入算法对所述N个资源对象中的任一资源对象进行像素外扩处理,得到每个资源对象的近似对象;
所述处理单元902,还用于采用每个资源对象的近似对象对所述N个资源对象进行分组处理。
在本申请实施例中,获取单元901可在获取到待添加到目标容器中的大于阈值的资源对象后,处理单元902先将获取到的多个资源对象进行分组处理,以将该多个资源对象划分到多个不同的对象分组中,而在该处理单元902对多个资源对象进行分组处理时,可基于各对象分组的累计面积相近的原则进行分组处理,从而可有效避免将对应面积较大的资源对象划分到同一对象分组中,进而有利于后续将各对象分组中的资源对象顺利地添加到目标容器中。此外,基于针对资源对象的分组处理结果,处理单元902还可对目标容器进行区域划分,以得到分别和每个对象分组相对应的区域,进而添加单元903可按照各对象分组与区域之间的对应关系,将获取到的多个资源对象添加到相应的区域中。而基于处理单元902对资源对象的分组处理和目标容器的划分,后续在将获取到的较大数量的资源对象添加到目标容器时,可采取将各对象分组添加到相应区域的方式,从而可在保证对目标容器的一定的填充率的基础上,有效提升计算机设备对资源对象的添加效率。
请参见图10,是本发明实施例提供的一种计算机设备的结构示意性框图。如图10所示的本实施例中的计算机设备可包括:一个或多个处理器101;一个或多个输入设备102,一个或多个输出设备103和存储器104。上述处理器101、输入设备102、输出设备103和存储器104通过总线105连接。存储器104用于存储计算机程序,所述计算机程序包括程序指令,处理器101 用于执行所述存储器104存储的程序指令。
所述存储器104可以包括易失性存储器(volatile memory),如随机存取存储器(random-access memory,RAM);存储器104也可以包括非易失性存储器(non-volatilememory),如快闪存储器(flash memory),固态硬盘(solid-state drive,SSD)等;存储器104还可以包括上述种类的存储器的组合。
所述处理器101可以是中央处理器(central processing unit,CPU)。所述处理器101还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)等。该PLD可以是现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)等。所述处理器101也可以为上述结构的组合。
本发明实施例中,所述存储器104用于存储计算机程序,所述计算机程序包括程序指令,处理器101用于执行存储器104存储的程序指令,用来实现上述如图2和图4中相应方法的步骤。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数;
根据N的取值及每个资源对象的面积,对所述N个资源对象进行分组处理,得到分组处理结果,所述分组处理结果包括至少两个对象分组及每个对象分组的累计面积;其中,任一对象分组的累积面积是所述任一对象分组中所有资源对象的面积之和;
基于所述分组处理结果将所述目标容器划分为至少两个区域,其中,一个对象分组与一个区域相对应;
按照所述对象分组与所述区域之间的对应关系,在所述目标容器中添加所述N个资源对象。
在一个实施例中,N的取值用于描述所述N个资源对象所属的目标规模范围,其中,一个规模范围与一个分组数量相关联;所述处理器101被配置调用所述程序指令,用于执行:
获取与所述目标规模范围关联的目标分组数量M,所述目标分组数量M为对所述N个资源对象进行分组处理后包括的至少两个对象分组的总数;
根据每个资源对象的面积,将所述N个资源对象划分到M个对象分组中,并在每个对象分组中,对包括的所有资源对象的面积进行求和处理,得到每个对象分组的累计面积;其中,一个对象分组至少包括一个资源对象,M为大于等于2且小于等于N的整数。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
对所述N个资源对象按照面积的大小顺序进行降序排列,并确定M个对象分组中的任一对象分组已包括的资源对象的参考累计面积;
根据所述降序排列依次选取出一个资源对象,并结合所述参考累计面积确定被选取出的资源对象被划分到的对象分组,以将所述N个资源对象划分到M个对象分组中。
在一个实施例中,当所述M的取值为2时,将所述N个资源对象划分到第一对象分组和第二对象分组中;所述处理器101被配置调用所述程序指令,用于执行:
若所述第一对象分组已包括的资源对象的参考累计面积,小于所述第二对象分组中已包括的资源对象的参考累计面积,则确定将被选取出的资源对象划分到所述第一对象分组中;
否则,将所述被选取出的资源对象划分到所述第二对象分组中。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
从所述分组处理结果中获取每个对象分组的累计面积,并根据所述每个对象分组的累计面积,确定各对象分组的累计面积之间的面积比例;
获取针对所述目标容器的划分策略,并根据所述划分策略及所述面积比例确定对所述目标容器进行划分处理时的划分位置,其中,划分得到的至少两个区域之间的区域面积比例与所述面积比例相同;
根据确定的划分策略和所述划分位置将所述目标容器划分为至少两个区域。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
获取所述目标容器的长宽比;
在所述长宽比大于1时,则采用垂直划分策略,否则采用水平划分策略;
其中,所述水平划分策略是指将所述目标容器划分为上下关系的至少两个区域,所述垂直划分策略则是指将所述目标容器划分为左右关系的至少两个区域。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
根据任一区域的区域面积及与所述任一区域对应的对象分组的累计面积,确定任一对象分组中的所有资源对象是否能完全添加到对应的区域中;
若是,则采用自动添加算法并行地将每个对象分组所包括的资源对象添加到对应的区域中。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
创建多个子进程,其中,一个子进程用于将一对象分组所包括的资源对象添加到对应的一个区域中;
在每个子进程中,分别同时采用自动添加算法将一个对象分组所包括的资源对象添加到对应的一个区域中。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
获取每个子进程在采用所述自动添加算法将一个对象分组所包括的资源对象添加到对应的一个区域后,生成的中间文件;其中,所述中间文件用于记录所述一个对象分组所包括的各资源对象在对应的一个区域中的添加位置;
在所述目标容器中添加所述N个资源对象结束后,在父进程中对所述中间文件进行合并处理,生成针对所述N个资源对象的添加结果文件,并删除所述中间文件。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
若存在一个对象分组所包括的资源对象不能添加到对应的区域中,则取消对所述N个资源对象执行的分组处理及对所述目标容器进行的区域划分;
采用所述自动添加算法将所述N个资源对象添加到所述目标容器中,直至触发添加停止条件。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
若存在一个对象分组所包括的资源对象不能完全放入对应的区域中,则判断所述N个资源对象中是否包括目标形状的资源对象;
若是,则将所述目标形状的资源对象进行切分处理,并对切分处理后的目标形状的资源对象进行分组处理;
若否,则触发执行取消对所述N个资源对象执行的分组处理及对所述目标容器进行的区域划分的步骤。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
基于遗传算法确定出任一对象分组所包括的各资源对象的添加顺序,并基于所述添加顺序依次选取出一个资源对象作为待添加对象;
确定将所述待添加对象添加到对应区域时的至少一个候选角度,并根据所述待添加对象的添加可行区域确定采用任一候选角度将所述待添加对象添加到对应区域后的重心;
根据所述重心将所述待添加对象添加到对应区域中重心最低的位置处,并更新对应区域中支持进行资源对象添加的剩余区域,直至将所述任一对象分组所包括的全部资源对象添加到对应区域中。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
将所述待添加对象沿对应区域的区域边界进行滑动,得到所述待添加对象的边界滑动轨迹;
对所述待添加对象的参考点基于参考原点进行镜像对称处理,得到所述待添加对象的镜像对象;
根据所述边界滑动轨迹,计算所述镜像对象与所述区域的闵可夫斯基和,并基于所述闵可夫斯基和确定所述待添加对象的添加可行区域。
在一个实施例中,若所述参考点处于所述边界滑动轨迹内,则说明所述参考点位于所述添加可行区域内;
若所述参考点处于所述边界滑动轨迹外,则说明所述参考点位于所述添加可行区域外;
当所述参考点位于所述添加可行区域内时,允许将选取对象添加到对应的位置上,当所述参考点位于所述添加可行区域外时,不允许将所述选取对象添加到对应的位置上。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
在基于所述闵可夫斯基和确定所述待添加对象的添加可行区域的过程中,对所述待添加对象进行简化处理,并采用简化后的待添加对象计算所述闵可夫斯基和;
其中,所述简化处理包括以下至少一种:将所述待添加对象对应的多边形的内凹顶点删除,将所述待添加对象对应的多边形的外凸线段简化为一个顶点。
在一个实施例中,所述处理器101被配置调用所述程序指令,用于执行:
采用快速舍入算法对所述N个资源对象中的任一资源对象进行像素外扩处理,得到每个资源对象的近似对象;
采用每个资源对象的近似对象对所述N个资源对象进行分组处理。
本发明实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述如图2或图4所示的方法实施例。其中,所述的计算机可读存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明的局部实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或局部流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (19)
1.一种对象处理方法,其特征在于,包括:
获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数;
根据N的取值及每个资源对象的面积,对所述N个资源对象进行分组处理,得到分组处理结果,所述分组处理结果包括至少两个对象分组及每个对象分组的累计面积;其中,任一对象分组的累积面积是所述任一对象分组中所有资源对象的面积之和;其中,得到的各对象分组中的任意两个对象分组的累计面积之间的差值小于面积差阈值;
基于所述分组处理结果将所述目标容器划分为至少两个区域,其中,一个对象分组与一个区域相对应;
按照所述对象分组与所述区域之间的对应关系,在所述目标容器中添加所述N个资源对象;每个对象分组所包括的资源对象被按照自动添加算法加入对应的区域中,且在采用所述自动添加算法将一个对象分组所包括的资源对象添加到对应的一个区域后,生成相应的中间文件,所述中间文件用于记录所述一个对象分组所包括的各资源对象在对应的一个区域中的添加位置;及,在所述目标容器中添加所述N个资源对象结束后,所述中间文件被进行合并处理,以生成针对所述N个资源对象的添加结果文件,且所述中间文件合并后被删除。
2.如权利要求1所述的方法,其特征在于,N的取值用于描述所述N个资源对象所属的目标规模范围,其中,一个规模范围与一个分组数量相关联;所述根据N的取值及每个资源对象的面积,对所述N个资源对象进行分组处理,得到分组处理结果,包括:
获取与所述目标规模范围关联的目标分组数量M,所述目标分组数量M为对所述N个资源对象进行分组处理后包括的至少两个对象分组的总数;
根据每个资源对象的面积,将所述N个资源对象划分到M个对象分组中,并在每个对象分组中,对包括的所有资源对象的面积进行求和处理,得到每个对象分组的累计面积;其中,一个对象分组至少包括一个资源对象,M为大于等于2且小于等于N的整数。
3.如权利要求2所述的方法,其特征在于,所述根据每个资源对象的面积,将所述N个资源对象划分到M个对象分组中,包括:
对所述N个资源对象按照面积的大小顺序进行降序排列,并确定M个对象分组中的任一对象分组已包括的资源对象的参考累计面积;
根据所述降序排列依次选取出一个资源对象,并结合所述参考累计面积确定被选取出的资源对象被划分到的对象分组,以将所述N个资源对象划分到M个对象分组中。
4.如权利要求3所述的方法,其特征在于,当M的取值为2时,将所述N个资源对象划分到第一对象分组和第二对象分组中;所述结合所述参考累计面积确定被选取出的资源对象被划分到的对象分组,包括:
若所述第一对象分组已包括的资源对象的参考累计面积,小于所述第二对象分组中已包括的资源对象的参考累计面积,则确定将被选取出的资源对象划分到所述第一对象分组中;
否则,将所述被选取出的资源对象划分到所述第二对象分组中。
5.如权利要求1所述的方法,其特征在于,所述基于所述分组处理结果将所述目标容器划分为至少两个区域,包括:
从所述分组处理结果中获取每个对象分组的累计面积,并根据所述每个对象分组的累计面积,确定各对象分组的累计面积之间的面积比例;
获取针对所述目标容器的划分策略,并根据所述划分策略及所述面积比例确定对所述目标容器进行划分处理时的划分位置,其中,划分得到的至少两个区域之间的区域面积比例与所述面积比例相同;
根据确定的划分策略和所述划分位置将所述目标容器划分为至少两个区域。
6.如权利要求5所述的方法,其特征在于,所述获取针对所述目标容器的划分策略,包括:
获取所述目标容器的长宽比;
在所述长宽比大于1时,则采用垂直划分策略,否则采用水平划分策略;
其中,所述水平划分策略是指将所述目标容器划分为上下关系的至少两个区域,所述垂直划分策略则是指将所述目标容器划分为左右关系的至少两个区域。
7.如权利要求1所述的方法,其特征在于,所述按照所述对象分组与所述区域之间的对应关系,在所述目标容器中添加所述N个资源对象,包括:
根据任一区域的区域面积及与所述任一区域对应的对象分组的累计面积,确定任一对象分组中的所有资源对象是否能完全添加到对应的区域中;
若是,则采用自动添加算法并行地将每个对象分组所包括的资源对象添加到对应的区域中。
8.如权利要求7所述的方法,其特征在于,所述采用自动添加算法并行地将每个对象分组所包括的资源对象添加到对应的区域中,包括:
创建多个子进程,其中,一个子进程用于将一对象分组所包括的资源对象添加到对应的一个区域中;
在每个子进程中,分别同时采用自动添加算法将一个对象分组所包括的资源对象添加到对应的一个区域中。
9.如权利要求7所述的方法,其特征在于,所述方法还包括:
若存在一个对象分组所包括的资源对象不能添加到对应的区域中,则取消对所述N个资源对象执行的分组处理及对所述目标容器进行的区域划分;
采用所述自动添加算法将所述N个资源对象添加到所述目标容器中,直至触发添加停止条件。
10.如权利要求7所述的方法,其特征在于,所述方法还包括:
若存在一个对象分组所包括的资源对象不能完全放入对应的区域中,则判断所述N个资源对象中是否包括目标形状的资源对象;
若是,则将所述目标形状的资源对象进行切分处理,并对切分处理后的资源对象进行分组处理;
若否,则触发执行取消对所述N个资源对象执行的分组处理及对所述目标容器进行的区域划分的步骤。
11.如权利要求8所述的方法,其特征在于,采用自动添加算法将任一对象分组所包括的资源对象添加到对应区域中的方式包括:
基于遗传算法确定出任一对象分组所包括的各资源对象的添加顺序,并基于所述添加顺序依次选取出一个资源对象作为待添加对象;
确定将所述待添加对象添加到对应区域时的至少一个候选角度,并根据所述待添加对象的添加可行区域确定采用任一候选角度将所述待添加对象添加到对应区域后的重心;
根据所述重心将所述待添加对象添加到对应区域中重心最低的位置处,并更新对应区域中支持进行资源对象添加的剩余区域,直至将所述任一对象分组所包括的全部资源对象添加到对应区域中。
12.如权利要求11所述的方法,其特征在于,所述方法还包括:
将所述待添加对象沿对应区域的区域边界进行滑动,得到所述待添加对象的边界滑动轨迹;
对所述待添加对象的参考点基于参考原点进行镜像对称处理,得到所述待添加对象的镜像对象;
根据所述边界滑动轨迹,计算所述镜像对象与所述区域的闵可夫斯基和,并基于所述闵可夫斯基和确定所述待添加对象的添加可行区域。
13.如权利要求12所述的方法,其特征在于,若所述参考点处于所述边界滑动轨迹内,则说明所述参考点位于所述添加可行区域内;
若所述参考点处于所述边界滑动轨迹外,则说明所述参考点位于所述添加可行区域外;
当所述参考点位于所述添加可行区域内时,允许将选取对象添加到对应的位置上,当所述参考点位于所述添加可行区域外时,不允许将所述选取对象添加到对应的位置上。
14.如权利要求12所述的方法,其特征在于,所述方法还包括:
在基于所述闵可夫斯基和确定所述待添加对象的添加可行区域的过程中,对所述待添加对象进行简化处理,并采用简化后的待添加对象计算所述闵可夫斯基和;
其中,所述简化处理包括以下至少一种:将所述待添加对象对应的多边形的内凹顶点删除,将所述待添加对象对应的多边形的外凸线段简化为一个顶点。
15.如权利要求1所述的方法,其特征在于,所述方法还包括:
采用快速舍入算法对所述N个资源对象中的任一资源对象进行像素外扩处理,得到每个资源对象的近似对象;
采用每个资源对象的近似对象对所述N个资源对象进行分组处理。
16.一种对象处理装置,其特征在于,包括:
获取单元,用于获取待添加到目标容器的N个资源对象,N为大于或等于阈值的整数;
处理单元,用于根据N的取值及每个资源对象的面积,对所述N个资源对象进行分组处理,得到分组处理结果,所述分组处理结果包括至少两个对象分组及每个对象分组的累计面积;其中,任一对象分组的累积面积是所述任一对象分组中所有资源对象的面积之和;其中,得到的各对象分组中的任意两个对象分组的累计面积之间的差值小于面积差阈值;
所述处理单元,还用于基于所述分组处理结果将所述目标容器划分为至少两个区域,其中,一个对象分组与一个区域相对应;
添加单元,用于按照所述对象分组与所述区域之间的对应关系,在所述目标容器中添加所述N个资源对象;每个对象分组所包括的资源对象被按照自动添加算法加入对应的区域中,且在采用所述自动添加算法将一个对象分组所包括的资源对象添加到对应的一个区域后,生成相应的中间文件,所述中间文件用于记录所述一个对象分组所包括的各资源对象在对应的一个区域中的添加位置;及,在所述目标容器中添加所述N个资源对象结束后,所述中间文件被进行合并处理,以生成针对所述N个资源对象的添加结果文件,且所述中间文件合并后被删除。
17.一种计算机设备,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、所述输入设备、所述输出设备和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1~15任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1~15任一项所述的方法。
19.一种计算机产品,其特征在于,所述计算机产品包括计算机指令,所述计算机指令在被处理器执行时用于实现如权利要求1~15任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111359438.5A CN113791914B (zh) | 2021-11-17 | 2021-11-17 | 对象处理方法、装置、计算机设备、存储介质及产品 |
PCT/CN2022/120055 WO2023087893A1 (zh) | 2021-11-17 | 2022-09-21 | 对象处理方法、装置、计算机设备、存储介质及程序产品 |
US18/325,992 US20230325244A1 (en) | 2021-11-17 | 2023-05-30 | Object processing method and apparatus, computer device, storage medium, and program product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111359438.5A CN113791914B (zh) | 2021-11-17 | 2021-11-17 | 对象处理方法、装置、计算机设备、存储介质及产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113791914A CN113791914A (zh) | 2021-12-14 |
CN113791914B true CN113791914B (zh) | 2022-03-11 |
Family
ID=78877291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111359438.5A Active CN113791914B (zh) | 2021-11-17 | 2021-11-17 | 对象处理方法、装置、计算机设备、存储介质及产品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230325244A1 (zh) |
CN (1) | CN113791914B (zh) |
WO (1) | WO2023087893A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791914B (zh) * | 2021-11-17 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 对象处理方法、装置、计算机设备、存储介质及产品 |
CN114255160B (zh) * | 2022-02-28 | 2022-06-14 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
CN114781014B (zh) * | 2022-06-17 | 2022-09-09 | 腾讯科技(深圳)有限公司 | 对象处理方法、装置、设备及计算机可读存储介质 |
CN115222806B (zh) * | 2022-09-20 | 2022-12-09 | 腾讯科技(深圳)有限公司 | 多边形处理方法、装置、设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108492342A (zh) * | 2018-03-22 | 2018-09-04 | 网易(杭州)网络有限公司 | 合并碎图的方法、装置、处理器、存储介质和终端 |
CN110136236A (zh) * | 2019-05-17 | 2019-08-16 | 腾讯科技(深圳)有限公司 | 三维角色的个性化脸部显示方法、装置、设备及存储介质 |
CN111986284A (zh) * | 2020-08-14 | 2020-11-24 | 中国人民解放军战略支援部队信息工程大学 | 一种图像的纹理合成方法及装置 |
CN112819939A (zh) * | 2021-03-08 | 2021-05-18 | 网易(杭州)网络有限公司 | 矫正uv坐标的方法、装置、设备和计算机可读存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9292933B2 (en) * | 2011-01-10 | 2016-03-22 | Anant Madabhushi | Method and apparatus for shape based deformable segmentation of multiple overlapping objects |
CN109271103A (zh) * | 2018-08-30 | 2019-01-25 | 杜广香 | 一种在大数据存储系统中进行数据混合存储的方法及系统 |
CN109919424B (zh) * | 2019-01-23 | 2021-11-30 | 杭州网易再顾科技有限公司 | 容器确定方法及装置、介质和计算设备 |
CN110033348A (zh) * | 2019-03-25 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 业务数据的存储、核对方法和装置 |
CN110097315B (zh) * | 2019-04-24 | 2021-06-25 | 阿里巴巴(中国)有限公司 | 容器确定方法、容器确定装置、介质和计算设备 |
CN113407108A (zh) * | 2020-03-16 | 2021-09-17 | 北京沃东天骏信息技术有限公司 | 一种数据存储方法和系统 |
CN111324424B (zh) * | 2020-04-15 | 2023-07-18 | 中国联合网络通信集团有限公司 | 一种虚拟机部署方法、装置、服务器及存储介质 |
CN111756833B (zh) * | 2020-06-22 | 2023-04-28 | 抖音视界有限公司 | 节点处理方法、装置、电子设备及计算机可读介质 |
CN112784002B (zh) * | 2021-02-07 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 一种虚拟场景生成方法、装置、设备和存储介质 |
CN113205568B (zh) * | 2021-04-30 | 2024-03-19 | 北京达佳互联信息技术有限公司 | 图像处理方法、装置、电子设备及存储介质 |
CN113468128B (zh) * | 2021-07-21 | 2023-02-17 | 上海浦东发展银行股份有限公司 | 一种数据处理的方法、装置、电子设备及存储介质 |
CN113791914B (zh) * | 2021-11-17 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 对象处理方法、装置、计算机设备、存储介质及产品 |
-
2021
- 2021-11-17 CN CN202111359438.5A patent/CN113791914B/zh active Active
-
2022
- 2022-09-21 WO PCT/CN2022/120055 patent/WO2023087893A1/zh unknown
-
2023
- 2023-05-30 US US18/325,992 patent/US20230325244A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108492342A (zh) * | 2018-03-22 | 2018-09-04 | 网易(杭州)网络有限公司 | 合并碎图的方法、装置、处理器、存储介质和终端 |
CN110136236A (zh) * | 2019-05-17 | 2019-08-16 | 腾讯科技(深圳)有限公司 | 三维角色的个性化脸部显示方法、装置、设备及存储介质 |
CN111986284A (zh) * | 2020-08-14 | 2020-11-24 | 中国人民解放军战略支援部队信息工程大学 | 一种图像的纹理合成方法及装置 |
CN112819939A (zh) * | 2021-03-08 | 2021-05-18 | 网易(杭州)网络有限公司 | 矫正uv坐标的方法、装置、设备和计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
A comprehensive and robust procedure for obtaining the nofit polygon using Minkowski sums;Julia A Bennell et.al;《ScienceDirect》;20060417;第267-281页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113791914A (zh) | 2021-12-14 |
WO2023087893A1 (zh) | 2023-05-25 |
US20230325244A1 (en) | 2023-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113791914B (zh) | 对象处理方法、装置、计算机设备、存储介质及产品 | |
Michael et al. | Real-time stereo vision: Optimizing semi-global matching | |
US20100141666A1 (en) | Method and Apparatus for Spatial Binning on a GPU and Global Path Planning to Avoid Spatially Binned Objects | |
CN109816669A (zh) | 一种识别电力设备缺陷的改进Mask R-CNN图像实例分割方法 | |
CN109448094B (zh) | 一种纹理图集调度方法 | |
CN110458933B (zh) | 追踪3d场景内的光线的方法、系统和计算机可读介质 | |
EP3333805B1 (en) | Removing or identifying overlapping fragments after z-culling | |
CN110990516A (zh) | 地图数据的处理方法、装置和服务器 | |
US20170116780A1 (en) | Method for rendering terrain | |
CN114255160B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN110368694A (zh) | 游戏场景的数据处理方法、装置、设备及可读存储介质 | |
CN110321996B (zh) | 一种基于卷积神经网络的图像处理的方法和装置 | |
US20190228574A1 (en) | Identifying primitives in input index stream | |
US20150254889A1 (en) | Method and System for a Separated Shadowing in Ray Tracing | |
CN115509764B (zh) | 一种实时渲染的多gpu并行调度方法、装置及存储器 | |
Pätzold et al. | Grid-free out-of-core voxelization to sparse voxel octrees on GPU | |
CN114494646A (zh) | 场景渲染方法、装置和电子设备 | |
KR101845174B1 (ko) | 슈퍼픽셀 생성 방법 및 장치 | |
US11100707B2 (en) | Computer graphics method for terrain rendering | |
CN111768353A (zh) | 一种三维模型的孔洞填补方法及装置 | |
KR20170114817A (ko) | 경로 렌더링을 수행하는 방법 및 장치 | |
CN114418829A (zh) | 静态场景遮挡处理方法、装置、电子设备及可读介质 | |
CN104239874A (zh) | 一种器官血管识别方法及装置 | |
Baby et al. | A parallel approach for region-growing segmentation | |
CN112837416A (zh) | 基于三角剖分的多边形渲染方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |