CN113713381B - 对象管理方法、装置、设备、存储介质及系统 - Google Patents
对象管理方法、装置、设备、存储介质及系统 Download PDFInfo
- Publication number
- CN113713381B CN113713381B CN202111057914.8A CN202111057914A CN113713381B CN 113713381 B CN113713381 B CN 113713381B CN 202111057914 A CN202111057914 A CN 202111057914A CN 113713381 B CN113713381 B CN 113713381B
- Authority
- CN
- China
- Prior art keywords
- node
- sub
- objects
- view
- field
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 177
- 238000003860 storage Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 claims abstract description 37
- 230000000007 visual effect Effects 0.000 claims description 65
- 230000008569 process Effects 0.000 claims description 3
- 239000010410 layer Substances 0.000 description 60
- 238000010586 diagram Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 3
- 238000012216 screening Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000002346 layers by function Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005520 cutting process 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
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/53—Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game
- A63F13/537—Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen
- A63F13/5372—Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen for tagging characters, objects or locations in the game scene, e.g. displaying a circle under the character controlled by the player
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/25—Determination of region of interest [ROI] or a volume of interest [VOI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/761—Proximity, similarity or dissimilarity measures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Optics & Photonics (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种对象管理方法、装置、设备、存储介质及系统,属于计算机和互联网技术领域。所述方法包括:获取场景中增加的第一对象的位置信息;基于第一对象的位置信息,从场景对应的对象管理树中确定第一节点;若第一节点对应的区域中增加第一对象后,第一节点对应的区域中包含的对象数量大于或等于上限值,则根据第一节点对应的区域中包含的各个对象的位置信息,将第一节点对应的区域划分为n个子区域,n为大于1的整数;其中,各个子区域中包含的对象数量相同或接近;在对象管理树中添加n‑1个节点。本申请不仅可以避免过快地增长节点数,减少内存占用,还可以直接将某一区域管理的对象数量进行n等分,提高对象管理效率。
Description
技术领域
本申请实施例涉及计算机和互联网技术领域,特别涉及一种对象管理方法、装置、设备、存储介质及系统。
背景技术
在诸如游戏应用程序中,由于场景中存在大量的对象,因此需要对场景中的对象进行有效管理,便于视野对象的选择以及相关数据的获取。
在相关技术中,提供了一种利用八叉树对场景中对象进行管理的方案。八叉树中的一个节点对应于场景中的一个区域。当某一节点对应的区域满足分裂条件时,将该节点对应的区域直接分裂为8个大小相同的子区域,并在八叉树中添加该节点的8个子节点,该8个子节点和8个子区域一一对应,每个子节点管理父节点的1/8的区域和数据。
然而,在这种操作下节点数增长过快,占用内存较多。
发明内容
本申请实施例提供了一种对象管理方法、装置、设备、存储介质及系统。所述技术方案如下:
根据本申请实施例的一个方面,提供了一种对象管理方法,所述方法包括:
获取场景中增加的第一对象的位置信息;
基于所述第一对象的位置信息,从所述场景对应的对象管理树中确定第一节点;其中,所述对象管理树包括多个节点,每一个节点对应于所述场景中的一个区域,不同节点对应的区域互不重叠,所述第一节点是指所述第一对象的位置信息所属区域对应的节点;
若所述第一节点对应的区域中增加所述第一对象后,所述第一节点对应的区域中包含的对象数量大于或等于上限值,则根据所述第一节点对应的区域中包含的各个对象的位置信息,将所述第一节点对应的区域划分为n个子区域,n为大于1的整数;其中,各个所述子区域中包含的对象数量相同或接近;
在所述对象管理树中配置与所述n个子区域一一对应的n个节点。
根据本申请实施例的一个方面,提供了一种对象管理装置,所述装置包括:
位置获取模块,用于获取场景中增加的第一对象的位置信息;
节点确定模块,用于基于所述第一对象的位置信息,从所述场景对应的对象管理树中确定第一节点;其中,所述对象管理树包括多个节点,每一个节点对应于所述场景中的一个区域,不同节点对应的区域互不重叠,所述第一节点是指所述第一对象的位置信息所属区域对应的节点;
区域划分模块,用于若所述第一节点对应的区域中增加所述第一对象后,所述第一节点对应的区域中包含的对象数量大于或等于上限值,则根据所述第一节点对应的区域中包含的各个对象的位置信息,将所述第一节点对应的区域划分为n个子区域,n为大于1的整数;其中,各个所述子区域中包含的对象数量相同或接近;
节点添加模块,用于在所述对象管理树中配置与所述n个子区域一一对应的n个节点。
根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述对象管理方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述对象管理方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中,处理器从所述计算机可读存储介质读取并执行所述计算机指令,以实现上述对象管理方法。
根据本申请实施例的一个方面,提供了一种对象管理系统,所述系统包括:对象管理层和AOI(Area Of Interest,兴趣区域)视野层;
所述AOI视野层,用于向所述对象管理层发送场景中的目标对象的视野范围数据,所述目标对象的视野范围数据用于指示所述目标对象的视野范围;
所述对象管理层,用于根据所述目标对象的视野范围数据,确定所述目标对象的视野范围;基于所述场景对应的对象管理树,确定位于所述目标对象的视野范围内的对象集合,所述对象集合中包含处于所述目标对象的视野范围内的至少一个对象,其中,所述对象管理树包括多个节点,每一个节点对应于所述场景中的一个区域,不同节点对应的区域互不重叠,且不同节点对应的区域中包含的对象数量相同或接近;向所述AOI视野层发送对象集合数据,所述对象集合数据用于指示所述目标对象的视野范围内的对象集合;
所述AOI视野层,用于根据所述对象集合数据,确定所述目标对象的视野范围内的对象集合。
本申请实施例提供的技术方案可以带来如下有益效果:
当场景中某一区域内的对象数量过多,需要分裂时,根据该区域内包含的各个对象的分布位置,将该区域划分为多个子区域,且各个子区域中包含的对象数量尽可能地均等,也即各个子区域的空间大小并不一样,但是管理的对象数量是均匀的,这样不仅可以避免过快地增长节点数,减少内存占用,还可以直接将某一区域管理的对象数量进行n等分,提高对象管理效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的方案实施环境的示意图;
图2是本申请一个实施例提供的对象管理方法的流程图;
图3是本申请一个实施例提供的区域划分的示意图;
图4是本申请另一个实施例提供的区域划分的示意图;
图5是本申请另一个实施例提供的区域划分的示意图;
图6是本申请另一个实施例提供的区域划分的示意图;
图7是本申请另一个实施例提供的对象管理方法的流程图;
图8是本申请一个实施例提供的区域合并的示意图;
图9是本申请另一个实施例提供的区域合并的示意图;
图10是本申请另一个实施例提供的区域合并的示意图;
图11是本申请另一个对象管理方法的流程图;
图12是本申请一个实施例提供的视野范围变化的示意图;
图13是本申请一个实施例提供的视野划分的示意图;
图14是本申请一个实施例提供的对象管理装置的框图;
图15是本申请另一个实施例提供的对象管理装置的框图;
图16是本申请一个实施例提供的对象管理系统的框图;
图17是本申请一个实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了本申请一个实施例提供的方案实施环境的示意图。该方案实施环境可以包括:终端10和服务器20。
终端10可以是诸如手机、平板电脑、PC(Personal Computer,个人计算机)、可穿戴设备、VR(Virtual Reality,虚拟现实)设备和AR(Augmented Reality,增强现实)设备等电子设备,本申请对此不作限定。终端10中可以安装运行有目标应用程序的客户端。例如,该目标应用程序可以是游戏应用程序、三维地图程序、军事仿真程序、社交类应用程序、互动娱乐类应用程序等,本申请对此不作限定。
服务器20可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。服务器20可以是上述目标应用程序的后台服务器,用于为目标应用程序的客户端提供后台服务。
终端10和服务器20之间可以通过网络进行通信。
在一些实施例中,上述目标应用程序可以提供场景,且该场景中存在对象,对象可以在场景中进行活动,如移动或执行各种其他操作。
以游戏应用程序为例,上述场景可以称为虚拟场景,上述对象也可以称为虚拟对象。
虚拟场景是目标应用程序(如游戏应用程序)的客户端在终端上运行时显示(或提供)的场景,该虚拟场景是指营造出的供虚拟对象进行活动(如游戏竞技)的场景,如虚拟房屋、虚拟岛屿、虚拟地图等。该虚拟场景可以是对真实世界的仿真场景,也可以是半仿真半虚构的场景,还可以是纯虚构的场景。虚拟场景可以是二维虚拟场景,也可以是2.5维虚拟场景,或者是三维虚拟场景,本申请实施例对此不作限定。目标应用程序的客户端在终端上运行时,不同的时间段可以显示(或提供)不同的虚拟场景。
虚拟对象是指在虚拟场景中活动的虚拟角色。以目标应用程序为游戏应用程序为例,虚拟对象可以是用户控制的虚拟对象,也可以是游戏应用程序本身控制的虚拟对象,如通过AI(Artificial Intelligence,人工智能)控制的虚拟对象。虚拟对象可以是人物形态,可以是动物、卡通或者其它形态,本申请实施例对此不作限定。虚拟对象可以三维形式展示,也可以二维形式展示,本申请实施例对此不作限定。可选地,当虚拟场景为三维虚拟场景时,虚拟对象是基于动画骨骼技术创建的三维立体模型。每个虚拟对象在三维虚拟场景中具有自身的形状和体积,占据三维虚拟场景中的一部分空间。
典型地,在大世界游戏中,虚拟场景的空间范围较大,该虚拟场景中可以容纳大量的虚拟对象,如几十、几百、甚至上千的虚拟对象。
另外,本申请实施例提供的对象管理方法,各步骤的执行主体可以是图1所示的方案实施环境中的服务器20,也可以是终端10(如目标应用程序的客户端)。在下文方法实施例中,为了便于说明,仅以各步骤执行主体是服务器20为例,但对此不构成限定。
请参考图2,其示出了本申请一个实施例提供的对象管理方法的流程图。该方法可以包括如下几个步骤(210~240):
步骤210,获取场景中增加的第一对象的位置信息。
场景可以是2D场景,也可以是3D场景。场景中的对象可以按需进行增加或者减少。以游戏应用程序为例,场景中的对象可以包括玩家控制的虚拟对象、某个或某些玩家可见的NPC(Non-player Character,非玩家角色)对象、所有玩家可见的公共NPC对象等。随着玩家的登录和NPC对象的刷新,游戏应用程序的场景中的对象会相应增加。
第一对象可以是场景中增加的任意一个对象,该第一对象的位置信息用于指示第一对象在场景中的位置,例如该位置信息可以采用坐标表示。如果是2D场景,位置信息可以采用二维坐标表示;如果是3D场景,位置信息可以采用三维坐标表示。
步骤220,基于第一对象的位置信息,从场景对应的对象管理树中确定第一节点。
在本申请实施例中,对象管理树包括多个节点,每一个节点对应于场景中的一个区域,不同节点对应的区域互不重叠。
第一节点是指第一对象的位置信息所属区域对应的节点。例如,从对象管理树包含的各个节点分别对应的区域中,找到第一对象的位置信息所属的区域,该找到的区域所对应的节点即为第一节点。
步骤230,若第一节点对应的区域中增加第一对象后,第一节点对应的区域中包含的对象数量大于或等于上限值,则根据第一节点对应的区域中包含的各个对象的位置信息,将第一节点对应的区域划分为n个子区域,n为大于1的整数;其中,各个子区域中包含的对象数量相同或接近。
上限值是区域中包含的对象数量的最大值,当区域中包含的对象数量大于或等于该上限值时,对该区域进行划分,得到多个子区域,每个子区域中的对象数量不大于或小于该上限值。
可选地,对象管理树中所有节点对应的区域中包含的对象数量的上限值是相同的。例如,对象管理树中所有节点对应的区域中包含的对象数量的上限值均为5。
可选地,对象管理树中存在至少两个节点对应的区域中包含的对象数量的上限值是不同的。例如,某一个节点对应的区域中包含的对象数量的上限值是5,另一个节点对应的区域中包含的对象数量的上限值是8。
在一些实施例中,为了防止对象管理树的树高过大而导致该对象管理树过于复杂,在前几层可以采用较小的对象数量的上限值,在后几层采用较大的对象数量的上限值,以此来减少树高。进一步的,可以在前几层采用较小的对象数量的上限值,在最底下一层不设置对象数量的上限值,以此将树高控制在一个设定范围之内。
可选地,还可以设置区域中包含的对象数量的下限值,下限值是区域中包含的对象数量的最小值,通过设置下限值能够避免区域进行不必要的分割,控制场景内的区域总数不至于过大。另外,对象管理树中所有节点对应的区域中包含的对象数量的下限值是相同的,或者对象管理树中存在至少两个节点对应的区域中包含的对象数量的下限值是不同的,这可以按需进行设定,本申请对此不作限定。
在第一节点对应的区域中包含的对象数量大于或等于上限值的情况下,将该第一节点对应的区域划分成n个子区域。n可以是预先设定的固定值,例如n=2,或者n=3等,本申请对此不作限定。n也可以是动态确定的数值,例如根据需要分割的区域中包含的对象数量来确定n的数值,如n与需要分割的区域中包含的对象数量呈正相关关系,需要分割的区域中包含的对象数量越多,n相应也就越大。在这种情况下,可以通过预先设定需要分割的区域中包含的对象数量与n之间的对应关系或者换算公式,来根据需要分割的区域中包含的对象数量,确定n的值。
在一些实施例中,步骤230可以包括如下几个子步骤:
1.根据第一节点对应的区域中包含的各个对象的位置信息,确定第一节点对应的区域中包含的各个对象在k个空间维度上的距离跨度,k等于2或3;
当k等于2时,场景是二维平面,以X轴和Y轴来表示该二维平面的2个空间维度。
当k等于3时,场景是三维空间,以X轴、Y轴和Z轴来表示该三维空间的3个空间维度。
对于k个空间维度中的任意一个空间维度,获取第一节点对应的区域中包含的各个对象在该空间维度上的坐标,选择在该空间维度上的坐标的最大值和最小值,该最大值和最小值之间的差值,即为该空间维度上的距离跨度。对于每一个空间维度,采用同样的方法,计算得到第一节点对应的区域中包含的各个对象在k个空间维度上分别对应的距离跨度。
2.从k个空间维度中,选择距离跨度最大的目标空间维度;
在得到第一节点对应的区域中包含的各个对象在k个空间维度上分别对应的距离跨度之后,便可从中找到距离跨度最大的空间维度,作为目标空间维度。
3.以目标空间维度为划分对象,将第一节点对应的区域划分为n个子区域。
以场景是二维平面为例,假设从X轴和Y轴这2个空间维度中,确定目标空间维度是X轴,则在X轴上对第一节点对应的区域进行划分,得到n个子区域。
以场景是三维空间为例,假设从X轴、Y轴和Z轴这3个空间维度中,确定目标空间维度是Y轴,则在Y轴上对第一节点对应的区域进行划分,得到n个子区域。
在一些实施例中,该步骤3可以进一步包括如下几个子步骤:
3-1.从第一节点对应的区域中包含的各个对象中,确定在目标空间维度上距离最远的第一对象和第二对象。
根据上述得到的距离跨度最大的目标空间维度,确定在该目标空间维度上距离最远的两个对象,分别为第一对象和第二对象。
3-2.将第一对象和第二对象在目标空间维度上的两个投影点之间的线段进行n等分,得到n-1个分割点。
根据得到的第一对象和第二对象在该目标空间维度上的坐标,将第一对象和第二对象在该目标空间维度上的两个投影点之间的线段进行n等份切割,得到n-1个分割点。
3-3.基于n-1个分割点将第一节点对应的区域划分为n个子区域。
如果场景是二维平面,在得到目标空间维度上的n-1个分割点之后,生成经过上述n-1个分割点,且垂直于目标空间维度的n-1条垂线,通过该n-1条垂线将第一节点对应的区域划分为n个子区域。
如果场景是三维空间,在得到目标空间维度上的n-1个分割点之后,生成经过上述n-1个分割点,且垂直于目标空间维度的n-1个垂面,通过该n-1个垂面将第一节点对应的区域划分为n个子区域。
在一些实施例中,如图3所示,图3是对节点1对应的区域进行第一次划分时的示意图,将节点1对应的区域划分为两个子区域,由于图3中各个对象的X轴坐标相近,而各个对象的Y轴坐标更为分散,也即各个对象在Y轴上的距离跨度大于在X轴上的距离跨度,因此选择Y轴作为目标空间维度,对Y轴做垂线进行区域分割,根据图中距离最远的两个对象的Y轴坐标的中位数做Y轴的垂线,将节点1对应的区域划分为两个子区域,其中,上半部分的子区域中包含3个对象,下半部分的子区域中包含4个对象,满足各个子区域中包含的对象数量相同或接近的划分要求。
在上述实施例中,提供了一种选择距离跨度最大的目标空间维度作为划分对象,对区域进行分割的方式,这种方式可以使得分割得到的各个子区域的大小尽可能地均衡,避免出现一个子区域过大而另一个子区域过小的情况。当然,在一些其他实施例中,也可以从k个空间维度中按序轮流选择作为划分对象的目标空间维度,或者随机选择作为划分对象的目标空间维度,本申请对此不作限定。
在一些实施例中,若第一节点对应的区域中增加第一对象后,第一节点对应的区域中包含的对象数量大于或等于上限值,则判断该第一节点对应的区域尺寸是否大于或等于设定尺寸;如果该第一节点对应的区域尺寸大于或等于设定尺寸,则根据第一节点对应的区域中包含的各个对象的位置信息,将第一节点对应的区域划分为n个子区域,n为大于1的整数;如果该第一节点对应的区域尺寸小于设定尺寸,则不再对该第一节点对应的区域进行划分,从而避免对象管理树的树高过大。
步骤240,在对象管理树中配置与n个子区域一一对应的n个节点。
在将第一节点对应的区域划分为n个子区域之后,需要在对象管理树中配置与该n个子区域一一对应的n个节点。
下面,对配置该n个节点的方式进行介绍说明。在一些实施例中,步骤240可以包括如下几个子步骤:
1.获取第一节点的父节点的子节点数量。
第一节点的父节点除了包括第一节点这一子节点之外,还可能包括其他子节点。因此,第一节点的父节点的子节点数量,可能等于1,也可能大于1。
另外,设置对象管理树中每一个节点所能拥有子节点数量的上限值。各个节点所能拥有子节点数量的上限值,可以相同,也可以不同,本申请对此不作限定。为了便于对象管理树的维护和管理,可以设置对象管理树中每一个节点所能拥有子节点数量的上限值相同,例如该上限值均为M,M是大于1的整数。例如,M=8,此时可以将对象管理树称为八叉树。又例如,M=4,此时可以将对象管理树称为四叉树。在本申请实施例中,对M的取值不作限定,其可以根据实际需求进行灵活设定,如M=4、5、6、7或8,等等。
2.在子节点数量满足第一条件的情况下,在对象管理树中添加第一节点的n-1个兄弟节点,将第一节点和该n-1个兄弟节点配置为与n个子区域一一对应。
第一条件是指子节点数量加上n-1之后,小于或等于上限值M。如果子节点数量满足该第一条件,则在对象管理树中添加n-1个节点,且第一节点和该添加的n-1个节点互为兄弟节点。
在一些实施例中,如图4所示,左图示出了节点1对应的区域,该节点1的各个子节点分别对应的区域,以及各个区域中包含的对象。其中,各个区域中包含的对象数量的上限值为5。节点1-2对应于区域1-2(左图中粗线条线框40所示),该区域1-2中包含的对象数量是5,在该区域1-2中添加一个对象之后,该区域1-2中包含的对象数量为6个,超过了上限值5,则对区域1-2进行划分,将区域1-2划分为两个子区域,如图中所示的子区域41和子区域42,其中,子区域41和子区域42中都含有3个对象,数量均衡且低于上限值5。
另外,假设节点1-2的父节点(也即节点1)所能够拥有的子节点数量的上限值为8个。此时,节点1的子节点数量为7个,加上1后也仍未超过上限值8,则在对象管理树中添加一个节点1-2的兄弟节点,图4中以节点1-8所示,在该对象管理树更新之后,节点1-2对应于子区域41,节点1-8对应于子区域42。
3.在子节点数量满足第二条件的情况下,在对象管理树中添加第一节点的n个子节点,将该n个子节点配置为与n个子区域一一对应。
第二条件是指子节点数量等于上限值M。如果子节点数量满足该第二条件,则在对象管理树中添加n个节点,且该添加的n个节点均为第一节点的子节点。
在一些实施例中,如图5所示,左图示出了节点1对应的区域,该节点1的各个子节点分别对应的区域,以及各个区域中包含的对象。其中,各个区域中包含的对象数量的上限值为5。节点1-2对应于区域1-2(左图中粗线条线框50所示),该区域1-2中包含的对象数量是5,在该区域1-2中添加一个对象之后,该区域1-2中包含的对象数量为6个,超过了上限值5,则对区域1-2进行划分,将区域1-2划分为两个子区域,如图中所示的子区域51和子区域52,其中,子区域51和子区域52中都含有3个对象,数量均衡且低于上限值5。
另外,假设节点1-2的父节点(也即节点1)所能够拥有的子节点数量的上限值为8个。此时,节点1的子节点数量为8个,已经达到该上限值8,则在对象管理树中添加节点1-2的两个子节点,图5中以节点A和节点B所示,在该对象管理树更新之后,节点A对应于子区域51,节点B对应于子区域52。
如果将第一节点对应的区域划分为2个子区域,也即n等于2,那么仅可能存在上述第一条件和第二条件两种情况。
如果将第一节点对应的区域划分为3个或以上的子区域,也即n大于或等于3,那么除了可能存在上述第一条件和第二条件两种情况,还可能存在如下第三条件的情况。
可选地,在子节点数量满足第三条件的情况下,在对象管理树中添加第一节点的n1个兄弟节点,以及在对象管理树中添加第一节点的n2个子节点,将该n1个兄弟节点和n2个子节点配置为与n个子区域一一对应,其中,n1+n2等于n。
第三条件是指子节点数量小于上限值M,但该子节点数量加上n-1之后大于上限值M。如果子节点数量满足该第三条件,则在对象管理树中添加n个节点,其中n1个节点为第一节点的兄弟节点,n2个节点为第一节点的子节点,n1+n2等于n。
在一些实施例中,如图6所示,左图示出了节点1对应的区域,该节点1的各个子节点分别对应的区域,以及各个区域中包含的对象。其中,各个区域中包含的对象数量的上限值为5。节点1-2对应于区域1-2(左图中粗线条线框60所示),该区域1-2中包含的对象数量是5,在该区域1-2中添加一个对象之后,该区域1-2中包含的对象数量为6个,超过了上限值5,则对区域1-2进行划分,将区域1-2划分为三个子区域,如图中所示的子区域61、子区域62和子区域63,其中,子区域61、子区域62和子区域63中都含有2个对象,数量均衡且低于上限值5。
另外,假设节点1-2的父节点(也即节点1)所能够拥有的子节点数量的上限值为8个。此时,节点1的子节点数量为7个,没有达到该上限值8,但加上2个节点的话就会大于该上限值8,则在对象管理树中添加一个节点1-2的兄弟节点,图6中以节点1-8所示,并在该对象管理树中添加节点1-2的两个子节点,图6中以节点A和节点B所示,在该对象管理树更新之后,节点1-8对应于子区域61、节点A对应于子区域62,节点B对应于子区域63。
本申请实施例提供的技术方案,当场景中某一区域内的对象数量过多,需要分裂时,根据该区域内包含的各个对象的分布位置,将该区域划分为多个子区域,且各个子区域中包含的对象数量尽可能地均等,也即各个子区域的空间大小并不一样,但是管理的对象数量是均匀的,这样不仅可以避免过快地增长节点数,减少内存占用,还可以直接将某一区域管理的对象数量进行n等分,提高对象管理效率。
另外,通过选择距离跨度最大的目标空间维度作为划分对象,对区域进行分割,这种方式可以使得分割得到的各个子区域的尺寸尽可能地均衡,避免出现一个子区域过大而另一个子区域过小的情况。
另外,在往对象管理树中添加节点时,通过条件判定,优先添加兄弟节点,其次再添加子节点,这种区域按需分割,节点按需增加的方式,能够避免树高增长过快,降低对象管理树的复杂度。
请参考图7,其示出了本申请另一个实施例提供的对象管理方法的流程图。该方法可以包括如下几个步骤(710~750):
步骤710,获取场景中减少的第二对象的位置信息。
第二对象可以是场景中减少的任意一个对象,该第二对象的位置信息用于指示第二对象在场景中的位置,例如该位置信息可以采用坐标表示。如果是2D场景,位置信息可以采用二维坐标表示;如果是3D场景,位置信息可以采用三维坐标表示。
步骤720,基于第二对象的位置信息,从对象管理树中确定第二节点。
有关场景对应的对象管理树的介绍说明,可参见上文实施例,此处不再赘述。
第二节点是指第二对象的位置信息所属区域对应的节点。例如,从对象管理树包含的各个节点分别对应的区域中,找到第二对象的位置信息所属的区域,该找到的区域所对应的节点即为第二节点。
步骤730,若第二节点对应的区域中减少第二对象后,第二节点对应的区域中包含的对象数量小于或等于下限值,则从对象管理树中确定与第二节点合并的第三节点。
下限值是区域中包含的对象数量的最小值,当区域中包含的对象数量小于或等于该下限值时,将该区域与其他区域进行合并,使得合并后的区域中包含的对象数量不小于或大于该下限值。
可选地,对象管理树中所有节点对应的区域中包含的对象数量的下限值是相同的。例如,对象管理树中所有节点对应的区域中包含的对象数量的下限值均为2。
可选地,对象管理树中存在至少两个节点对应的区域中包含的对象数量的下限值是不同的。例如,某一个节点对应的区域中包含的对象数量的下限值是2,另一个节点对应的区域中包含的对象数量的下限值是3。
在第二节点对应的区域中减少第二对象后,第二节点对应的区域中包含的对象数量小于或等于下限值的情况下,查找对象管理树中是否存在与第二节点满足合并条件的第三节点。第三节点的数量可能是一个,也有可能是多个。
上述合并条件包括:第二节点对应的区域和第三节点对应的区域相邻。对于2D场景,第二节点对应的区域和第三节点对应的区域相邻,是指第二节点对应的区域和第三节点对应的区域存在重合的边。对于3D场景,第二节点对应的区域和第三节点对应的区域相邻,是指第二节点对应的区域和第三节点对应的区域存在重合的平面。
可选地,上述合并条件还包括:第二节点对应的区域和第三节点对应的区域的合并区域是一个规则的区域。对于2D场景,第二节点对应的区域和第三节点对应的区域的合并区域是一个规则的区域,是指第二节点对应的区域和第三节点对应的区域的合并区域是一个矩形,即长方形或正方形。对于3D场景,第二节点对应的区域和第三节点对应的区域相邻,是指第二节点对应的区域和第三节点对应的区域的合并区域是一个长方体或正方体。
步骤740,将第三节点对应的区域,更新为第三节点对应的原始区域和第二节点对应的区域的合并区域。
在找到满足合并条件的第三节点之后,将第二节点对应的区域合并至第三节点对应的区域中。经过合并之后,第三节点对应的区域将比其原始区域增大。
步骤740可以包括如下两种情况:
情况1:在第三节点的数量为一个的情况下,将第三节点对应的区域,更新为第三节点对应的原始区域和第二节点对应的完整区域的合并区域;
如图8所示,左图示出了节点1对应的区域,该节点1的各个子节点分别对应的区域,以及各个区域中包含的对象。其中,各个区域中包含的对象数量的下限值为2。节点1-8对应于区域1-8(图中以区域81表示),该区域1-8中包含的对象数量为1个,小于下限值2,则对区域1-8进行合并。节点1-2对应的区域1-2(图中以区域82表示)满足合并条件,将区域1-8和区域1-2进行合并,形成一个合并区域80(图中以粗线条线框所示)。经过合并之后,节点1-2对应的区域从原先的区域82变为合并区域80。
情况2:在第三节点的数量为k(k为大于1的整数)个的情况下,将第二节点对应的区域划分为k个子区域,k个第三节点与k个子区域一一匹配;对于k个第三节点中的每一个第三节点,将第三节点对应的区域,更新为第三节点对应的原始区域和k个子区域中与第三节点匹配的子区域的合并区域。
如图9所示,左图示出了节点1对应的区域,该节点1的各个子节点分别对应的区域,以及各个区域中包含的对象。其中,各个区域中包含的对象数量的下限值为2。节点1-8对应于区域1-8(图中以区域91表示),该区域1-8中包含的对象数量为1个,小于下限值2,则对区域1-8进行合并。节点1-6和节点1-7对应的区域满足合并条件,将区域1-8划分为2个子区域,如右图所示的区域A和区域B,其中,区域A和区域1-6进行合并,形成一个合并区域92(图中以粗线条线框所示),区域B和区域1-7进行合并,形成另一个合并区域93(图中以粗线条线框所示)。可选地,在一些其他示例中,区域1-8也可以与区域1-2和区域1-9进行合并。
步骤750,从对象管理树中删除第二节点。
第二节点对应的区域和第三节点对应的区域进行合并后,将第二节点对应的区域分配给第三节点,第二节点不再拥有对应的区域,从对象管理树中删除第二节点。如图8所示,节点1-8对应的区域和节点1-2对应的区域合并之后,在对象管理树中删除节点1-8。
可选地,若第三节点的父节点有且仅有一个子节点,则从对象管理树中删除第三节点的父节点,并将第三节点作为其祖父节点的子节点。如图10所示,节点1-2原先包含两个子节点,分别为节点A和节点B,由于节点B对应的区域中包含的对象数量为1个,小于下限值2,则将该节点B对应的区域和节点A对应的区域进行合并,得到合并区域100(图中以粗线条线框所示)。经过合并之后,节点A对应的区域从原先的区域A变为合并区域100,节点B从对象管理树中删除。在删除节点B之后,节点A的父节点(也即节点1-2)有且仅有一个子节点(也即节点A),则从对象管理树中删除该节点1-2,并将节点A作为其祖父节点(也即节点1)的子节点。通过上述方式,能够减少多余的节点,降低树高,简化对象管理树的结构,避免空间管理资源的浪费。
本申请实施例提供的技术方案,当场景中某一区域内的对象数量较少时,将该区域与其他区域进行合并,从而简化对象管理树的结构,且避免空间管理资源的浪费。
请参考图11,其示出了本申请另一个实施例提供的对象管理方法的流程图。该方法可以包括如下几个步骤(1110~1180):
步骤1110,获取场景中的目标对象的视野范围。
目标对象的视野范围是指该目标对象在场景中能够观察到的区域,该区域中的画面需要在控制该目标对象的客户端中进行显示。在本申请实施例中,对目标对象的视野范围的形状不作限定。示例性地,对于2D场景,该目标对象的视野范围可以是一个扇形区域,该扇形区域的圆心位置可以位于目标对象所在位置处,且该扇形区域位于目标对象的正前方。对于3D场景,该目标对象的视野范围可以是一个圆锥形区域,该圆锥形区域的顶点位置可以位于目标对象所在位置处,且该圆锥形区域位于目标对象的正前方。
当然,在一些其他实施例中,目标对象的视野范围也可以是圆形(或球形)、矩形(或立方体)等其他形状,这可以结合实际需求进行灵活定制,本申请对此不作限定。
步骤1120,基于对象管理树,确定位于视野范围内的对象集合,对象集合中包含处于视野范围内的至少一个对象。
由于场景对应的对象管理树中,记录着场景中各个对象的属性信息,如位置、状态等属性,因此基于该对象管理树,可以查找得到位于视野范围内的对象集合。
例如,首先根据对象管理树中各个节点对应的区域,选择对应的区域与目标对象的视野范围存在交集的至少一个目标节点,然后获取目标节点对应的区域中包含的各个对象的位置信息,分别判断每一个对象的位置信息是否属于目标对象的视野范围,将属于目标对象的视野范围内的对象选取出来,得到该视野范围内的对象集合。
在一些实施例中,服务器在确定位于目标对象的视野范围内的对象集合之后,获取该对象集合中包含的各个对象的属性信息,然后将该对象集合中包含的各个对象的属性信息发送给目标对象所对应的客户端,以使得客户端能够基于上述属性信息将对象集合进行显示。
在本申请实施例中,视野范围也可以称为AOI视野。随着目标对象在场景中的移动、转向等操作,该目标对象的视野范围也会随之发生改变,相应地,该目标对象的视野范围内的对象集合也会发生改变。示例性地,如图12所示,在上图中,目标对象121的视野范围内能够看见5只宠物,分别记为宠物122、宠物123、宠物124、宠物125和宠物126,随着目标对象121的移动或者宠物的移动,有些物品可能会离开目标对象121的视野范围,也有些物品可能会进入目标对象121的视野范围。例如,在图12的下图中,宠物122离开了目标对象121的视野范围,宝箱127进入到目标对象121的视野范围。服务器会定期对目标对象的视野范围进行更新,然后将最新的视野范围内的对象集合的相关数据同步给客户端进行显示。
在一些实施例中,服务器在确定位于目标对象的视野范围内的对象集合之后,还可以执行如下步骤1130~1140。
步骤1130,将视野范围划分为多个子视野范围;其中,不同的子视野范围和目标对象之间的距离不同。
根据距离目标对象的远近,将目标对象的视野范围划分成多个子视野范围。多个子视野范围的大小可以是相同的,也可以是不同的,多个子视野范围的总大小为目标对象的视野范围的大小。
在一些实施例中,如图13所示,在第三人称游戏中,目标对象的视野范围是半径为AB的圆,如图,将目标对象的视野范围划分成3个子视野范围,根据子视野范围和目标对象之间的距离,将视野范围划分成内层、中层和外层。
在一些实施例中,如图13所示,在第一人称游戏中,目标对象的视野范围是半径为AB的扇形BAC,如图,将目标对象的视野范围划分成3个子视野范围,根据子视野范围和目标对象之间的距离,将视野范围划分成内层、中层和外层。
其中,内层对应的子视野范围距离目标对象最近,外层对应的子视野范围距离目标对象最远,中层对应的子视野范围与目标对象之间的距离介于内层和外层之间。
步骤1140,根据对象集合中的各个对象分别所属的子视野范围,确定各个对象分别对应的刷新频率;其中,对象对应的刷新频率,与对象所属的子视野范围和目标对象之间的距离呈负相关关系。
设置各个子视野范围中对象的刷新频率,其中,对象的刷新频率是指对象的实时信息(如位置、动作等信息)的更新频率,如每秒刷新次数。对于控制目标对象的用户来说,通常其关注的重点是距离目标对象较近的一些其他对象,而距离目标对象较远的一些其他对象并不是关注重点,因此通过根据子视野范围与目标对象之间的距离设置刷新频率,子视野范围与目标对象之间的距离越近,刷新频率越高,保证这些用户重点关注的对象能够被以较高质量显示,子视野范围与目标对象之间的距离越远,刷新频率越低,这些用户非重点关注的对象可以以较低质量显示,从而有助于节省服务器和客户端的处理资源。
此外,在一些其他实施例中,也可以根据各个子视野范围的优先级,确定子视野范围中包含的对象的刷新频率。例如,优先级越高,刷新频率越高;反之,优先级越低,刷新频率越低。该子视野范围的优先级可以和子视野范围与目标对象之间的距离有关,也可以和子视野范围的关注度有关。在一些实施例中,子视野范围的优先级可以动态调整。例如,以射击游戏为例,在常规情况下,子视野范围的优先级由距离决定,距离目标对象越近的子视野范围,其优先级越高,刷新频率越高;在目标对象使用狙击枪开镜瞄准时,子视野范围的优先级由关注度决定,瞄准位置所属的子视野范围关注度高,该子视野范围的优先级也相应提高,刷新频率也相应提高。
可选地,本申请实施例提供的方法,还可以包括如下步骤1150~1170。
步骤1150,对于多个子视野范围中的第一子视野范围,若第一子视野范围内的对象数量大于第一子视野范围对应的额定最大数量,则获取第一子视野范围内的各个对象分别对应的属性信息,属性信息用于表征对象与目标对象之间的关系。
第一子视野范围可以是上述多个子视野范围中的任意一个子视野范围。第一子视野范围对应的额定最大数量,是指该第一子视野范围内包含的对象数量的额定最大值。对于不同的子视野范围,其对应的额定最大数量可以相同,也可以不同,本申请对此不作限定。
示例性地,假设第一子视野范围对应的额定最大数量是25,而该第一子视野范围内的对象数量的实际值是30,超过了额定最大数量25,则需要从中选择一部分对象进行剔除。在本申请实施例中,依据对象的属性信息来确定显示和剔除的对象。其中,对象的属性信息包括但不限于以下至少之一:与目标对象是否为好友、队友或敌人,与目标对象之间的距离、与目标对象之间的亲密度、与目标对象之间是否存在互动等等,本申请对此不作限定。
步骤1160,根据第一子视野范围内的各个对象分别对应的属性信息,确定第一子视野范围内的各个对象分别对应的权重。
对于第一子视野范围内的每一个对象,根据该对象的属性信息,确定出该对象对应的权重。其中,权重用于表征该对象的选择优先级。例如,如果某一对象的权重越高,则表示该对象越应该被保留进行显示;如果某一对象的权重越低,则表示该对象越应该被剔除。
另外,在本申请实施例中,对根据属性信息计算权重的方式不作限定,例如可以通过设定公式、算法或者神经网络模型进行计算。
步骤1170,从第一子视野范围内的各个对象中,选择权重符合条件的对象作为第一子视野范围内的显示对象,显示对象是指在目标对象的视野范围内进行显示的对象。
例如,假设第一子视野范围对应的额定最大数量为Nmax,从第一子视野范围内的各个对象中,选择权重最大的Nmax个对象作为第一子视野范围内的显示对象。
可选地,第一子视野范围内的各个对象中,除上述被选择作为显示对象之外的其他多余对象,可以从该第一子视野范围内剔除,如在目标对象的视野范围内不显示这些多余对象。
可选地,本申请实施例提供的方法,还可以包括如下步骤1108。
步骤1180,对于多个子视野范围中的第二子视野范围,若第二子视野范围内的对象数量小于第二子视野范围对应的额定最大数量,则将第一子视野范围内的多余对象,分配给第二子视野范围。
其中,多余对象是指第一子视野范围内权重不符合条件的对象,多余对象按照第二子视野范围对应的刷新频率进行显示。可选的,多余对象也可以按照第一子视野范围对应的刷新频率进行显示。
示例性地,假设第二子视野范围对应的额定最大数量为20,第二子视野范围内的对象数量的实际值为10,那么第二子视野范围内存在10个多余的名额,如果第一子视野范围内存在5个多余对象,那么可以将这5个多余对象分配给第二子视野范围,这5个多余对象按照第二子视野范围对应的刷新频率进行显示。采用这种方式,相比于直接剔除多余对象,可以有效利用其他子视野范围内的多余名额,避免资源浪费,保证视野范围内尽可能多的对象被显示。
另外,假设第二子视野范围内的多余名额是a,a为正整数,第一子视野范围内的多余对象的数量是b,b为正整数,如果a大于或等于b,则可以直接将该b个多余对象全部分配给第二子视野范围;如果a小于b,则可以从该b个多余对象中选择a个多余对象分配给第二子视野范围。此处选择的方式可以按照对象对应的权重选择,如选择权重最大的a个多余对象,也可以随机选择,本申请对此不作限定。
另外,也有可能将一个子视野范围内的多余对象,分配至多个不同的子视野范围中;也有可能一个子视野范围中,被分配来自多个不同的子视野范围的多余对象。
另外,如果有多个子视野范围内存在多余对象,可以根据各个子视野范围的优先级,优先选择优先级高的子视野范围中的多余对象,分配至其他有多余名额的子视野范围中。其中,子视野范围的优先级可以和子视野范围与目标对象之间的距离有关,也可以和子视野范围的关注度有关,具体可参见上文介绍说明,此处不再赘述。
本申请实施例提供的技术方案,通过对对象的视野范围进行划分,将不同的子视野范围设置不同的刷新频率,使对象的视野范围管理更加合理,通过降低外层或低优先级的子视野范围内对象的刷新频率,能够在保证用户重点关注对象的显示质量的前提下,尽可能地减轻服务器和客户端的负担。
另外,视野范围中的对象进行权值的计算后,优先显示权值高的对象,在减轻服务器和客户端负担的同时,将视野范围中重要的对象进行显示,使视野范围中对象的显示更为合理。
另外,在本申请实施例中,将视野更新和对象管理完全解耦,使得视野定制变得非常方便和简单。比如,目标对象的视野范围的形状可以灵活定制和调整,目标对象的视野范围的大小也可以灵活定制和调整。以游戏为例,如果目标对象使用了某个道具或者功能,视野范围增加,那么仅需更新该视野范围,然后依据该更新后的视野范围从对象管理树中查找获取视野范围内的对象集合就行,也即视野的更新并不会对对象管理树的对象管理产生影响,且视野更新后仍然可以高效准确地确定出视野内的对象集合。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图14,其示出了本申请一个实施例提供的对象管理装置的框图。该装置具有实现上述对象管理方法的功能,该功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置140可以包括:位置获取模块141、节点确定模块142、区域划分模块143和节点配置模块144。
位置获取模块141,用于获取场景中增加的第一对象的位置信息。
节点确定模块142,用于基于第一对象的位置信息,从场景对应的对象管理树中确定第一节点;其中,对象管理树包括多个节点,每一个节点对应于场景中的一个区域,不同节点对应的区域互不重叠,第一节点是指第一对象的位置信息所属区域对应的节点。
区域划分模块143,用于若第一节点对应的区域中增加第一对象后,第一节点对应的区域中包含的对象数量大于或等于上限值,则根据第一节点对应的区域中包含的各个对象的位置信息,将第一节点对应的区域划分为n个子区域,n为大于1的整数;其中,各个子区域中包含的对象数量相同或接近。
节点配置模块144,用于在所述对象管理树中配置与所述n个子区域一一对应的n个节点。
在一些实施例中,如图15所示,所述区域划分模块143包括:跨度确定单元1431、维度选择单元1432和区域划分单元1433。
跨度确定单元1431,用于根据第一节点对应的区域中包含的各个对象的位置信息,确定第一节点对应的区域中包含的各个对象在k个空间维度上的距离跨度,k等于2或3。
维度选择单元1432,用于从k个空间维度中,选择距离跨度最大的目标空间维度。
区域划分单元1433,用于以目标空间维度为划分对象,将第一节点对应的区域划分为n个子区域。
在一些实施例中,所述区域划分单元1433,用于从第一节点对应的区域中包含的各个对象中,确定在目标空间维度上距离最远的第一对象和第二对象;将第一对象和第二对象在目标空间维度上的两个投影点之间的线段进行n等分,得到n-1个分割点;基于n-1个分割点将第一节点对应的区域划分为n个子区域。
在一些实施例中,所述节点配置模块144,用于获取第一节点的父节点的子节点数量;在所述子节点数量满足第一条件的情况下,在所述对象管理树中添加所述第一节点的n-1个兄弟节点,将所述第一节点和所述n-1个兄弟节点配置为与所述n个子区域一一对应;在所述子节点数量满足第二条件的情况下,在所述对象管理树中添加所述第一节点的n个子节点,将所述n个子节点配置为与所述n个子区域一一对应。
在一些实施例中,所述节点配置模块144,还用于在所述子节点数量满足第三条件的情况下,在所述对象管理树中添加所述第一节点的n1个兄弟节点,以及在对象管理树中添加所述第一节点的n2个子节点,将所述n1个兄弟节点和所述n2个子节点配置为与所述n个子区域一一对应,其中,n1+n2等于n。
在一些实施例中,如图15所示,所述装置140还包括:节点选择模块145、区域合并模块146和节点删除模块147。
位置获取模块141,还用于获取场景中减少的第二对象的位置信息。
节点确定模块142,还用于基于第二对象的位置信息,从对象管理树中确定第二节点,第二节点是指第二对象的位置信息所属区域对应的节点。
节点选择模块145,用于若第二节点对应的区域中减少第二对象后,第二节点对应的区域中包含的对象数量小于或等于下限值,则从对象管理树中确定与第二节点合并的第三节点。
区域合并模块146,用于将第三节点对应的区域,更新为第三节点对应的原始区域和第二节点对应的区域的合并区域。
节点删除模块147,用于从对象管理树中删除第二节点。
在一些实施例中,所述区域合并模块146,用于:
在第三节点的数量为一个的情况下,将第三节点对应的区域,更新为第三节点对应的原始区域和第二节点对应的完整区域的合并区域。
或者,
在第三节点的数量为k个的情况下,将第二节点对应的区域划分为k个子区域,k个第三节点与k个子区域一一匹配;对于k个第三节点中的每一个第三节点,将第三节点对应的区域,更新为第三节点对应的原始区域和k个子区域中与第三节点匹配的子区域的合并区域,k为大于1的整数。
在一些实施例中,所述节点删除模块147,还用于若第三节点的父节点有且仅有一个子节点,则从对象管理树中删除第三节点的父节点,并将第三节点作为其祖父节点的子节点。
在一些实施例中,如图15所示,所述装置140还包括:视野获取模块148、对象确定模块149、视野划分模块150和频率确定模块151。
视野获取模块148,用于获取场景中的目标对象的视野范围。
对象确定模块149,用于基于对象管理树,确定位于视野范围内的对象集合,对象集合中包含处于视野范围内的至少一个对象。
视野划分模块150,用于将视野范围划分为多个子视野范围;其中,不同的子视野范围和目标对象之间的距离不同。
频率确定模块151,用于根据对象集合中的各个对象分别所属的子视野范围,确定各个对象分别对应的刷新频率;其中,对象对应的刷新频率,与对象所属的子视野范围和目标对象之间的距离呈负相关关系。
在一些实施例中,如图15所示,所述装置140还包括:属性获取模块152、权重确定模块153和对象选择模块154。
属性获取模块152,用于对于多个子视野范围中的第一子视野范围,若第一子视野范围内的对象数量大于第一子视野范围对应的额定最大数量,则获取第一子视野范围内的各个对象分别对应的属性信息,属性信息用于表征对象与目标对象之间的关系。
权重确定模块153,用于根据第一子视野范围内的各个对象分别对应的属性信息,确定第一子视野范围内的各个对象分别对应的权重。
对象选择模块154,用于从第一子视野范围内的各个对象中,选择权重符合条件的对象作为第一子视野范围内的显示对象,显示对象是指在目标对象的视野范围内进行显示的对象。
在一些实施例中,如图15所示,所述装置140还包括:对象分配模块155。
对象分配模块155,用于对于多个子视野范围中的第二子视野范围,若第二子视野范围内的对象数量小于第二子视野范围对应的额定最大数量,则将第一子视野范围内的多余对象,分配给第二子视野范围。其中,多余对象是指第一子视野范围内权重不符合条件的对象,多余对象按照第二子视野范围对应的刷新频率进行显示。
本申请实施例提供的技术方案,当场景中某一区域内的对象数量过多,需要分裂时,根据该区域内包含的各个对象的分布位置,将该区域划分为多个子区域,且各个子区域中包含的对象数量尽可能地均等,也即各个子区域的空间大小并不一样,但是管理的对象数量是均匀的,这样不仅可以避免过快地增长节点数,减少内存占用,还可以直接将某一区域管理的对象数量进行n等分,提高对象管理效率。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内容结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在一些实施例中,如图16所示,本申请提供了一种对象管理系统,该系统包括:对象管理层161和AOI视野层162。
AOI视野层162,用于向对象管理层161发送场景中的目标对象的视野范围数据,目标对象的视野范围数据用于指示目标对象的视野范围。
对象管理层161,用于根据目标对象的视野范围数据,确定目标对象的视野范围;基于场景对应的对象管理树,确定位于目标对象的视野范围内的对象集合,对象集合中包含处于目标对象的视野范围内的至少一个对象,其中,对象管理树包括多个节点,每一个节点对应于场景中的一个区域,不同节点对应的区域互不重叠,且不同节点对应的区域中包含的对象数量相同或接近;向AOI视野层162发送对象集合数据,对象集合数据用于指示目标对象的视野范围内的对象集合。
AOI视野层162,用于根据对象集合数据,确定目标对象的视野范围内的对象集合。
在本申请实施例中,对象管理层161和AOI视野层162可以看作是两个互相独立的功能模块。其中,对象管理层161主要负责采用对象管理树对场景中的对象进行管理,AOI视野层162主要负责获取视野范围内的对象,并向客户端提供该视野范围内的对象的相关数据。对象管理层161可以向AOI视野层162提供接口,AOI视野层162需要获取某一目标对象的视野范围内的对象集合数据时,调用该接口,向对象管理层161发送目标对象的视野范围数据,对象管理层161会获取并向AOI视野层162反馈目标对象的视野范围内的对象集合数据。
在一些实施例中,AOI视野层162,还用于:
将目标对象的视野范围划分为多个子视野范围;其中,不同的子视野范围和目标对象之间的距离不同;
根据对象集合中的各个对象分别所属的子视野范围,确定各个对象分别对应的刷新频率;其中,对象对应的刷新频率,与对象所属的子视野范围和目标对象之间的距离呈负相关关系。
在一些实施例中,AOI视野层162,还用于:
对于多个子视野范围中的第一子视野范围,若第一子视野范围内的对象数量大于第一子视野范围对应的额定最大数量,则获取第一子视野范围内的各个对象分别对应的属性信息,属性信息用于表征对象与目标对象之间的关系;
根据第一子视野范围内的各个对象分别对应的属性信息,确定第一子视野范围内的各个对象分别对应的权重;
从第一子视野范围内的各个对象中,选择权重符合条件的对象作为第一子视野范围内的显示对象,显示对象是指在目标对象的视野范围内进行显示的对象。
在一些实施例中,对象管理层161,还用于:
获取场景中增加的第一对象的位置信息;
基于第一对象的位置信息,从对象管理树中确定第一节点;其中,第一节点是指第一对象的位置信息所属区域对应的节点;
若第一节点对应的区域中增加第一对象后,第一节点对应的区域中包含的对象数量大于或等于上限值,则根据第一节点对应的区域中包含的各个对象的位置信息,将第一节点对应的区域划分为n个子区域,n为大于1的整数;其中,各个子区域中包含的对象数量相同或接近;
在所述对象管理树中配置与所述n个子区域一一对应的n个节点。
在一些实施例中,对象管理层161,还用于:
获取场景中减少的第二对象的位置信息;
基于第二对象的位置信息,从对象管理树中确定第二节点,第二节点是指第二对象的位置信息所属区域对应的节点;
若第二节点对应的区域中减少第二对象后,第二节点对应的区域中包含的对象数量小于或等于下限值,则从对象管理树中确定与第二节点合并的第三节点;
将第三节点对应的区域,更新为第三节点对应的原始区域和第二节点对应的区域的合并区域;
从对象管理树中删除第二节点;
在一些实施例中,如图16所示,AOI视野层162可以包括多级环AOI层1621、AOI权值筛选层1622和AOI对象集合层1623。其中,多级环AOI层1621主要负责与对象管理层161对接,从对象管理层161获取视野范围内的对象集合并对该视野范围进行子视野范围划分。例如,多级环AOI层1621用于从对象管理层161获取目标对象的视野范围内的对象集合数据,根据该对象集合数据,确定目标对象的视野范围内的对象集合。进一步地,多级环AOI层1621还用于将目标对象的视野范围划分为多个子视野范围;根据对象集合中的各个对象分别所属的子视野范围,确定各个对象分别对应的刷新频率。AOI权值筛选层1622主要负责对象的权重计算和筛选。例如,AOI权值筛选层1622用于获取第一子视野范围内的各个对象分别对应的属性信息,根据第一子视野范围内的各个对象分别对应的属性信息,确定第一子视野范围内的各个对象分别对应的权重,从第一子视野范围内的各个对象中,选择权重符合条件的对象作为第一子视野范围内的显示对象。AOI对象集合层1623主要负责和客户端对接,将最终确定的对象集合数据提供给客户端。当然,上述关于AOI视野层162的功能层级的划分仅是示例性的,该层级划分可以灵活设定,本申请对此不作限定。
另外,对于该系统实施例中未详细说明的细节,可参考上文方法实施例。
本申请实施例提供的技术方案,通过在系统层级将视野更新和对象管理解耦,AOI视野层负责视野更新,对象管理层负责对象管理,这两个功能层互相独立,这两个功能层可以单独使用,也可以组合使用,系统抽象性高,可移植性强。
请参考图17,其示出了本申请一个实施例提供的计算机设备的结构示意图。该计算机设备可以是任何具备数据计算、处理和存储功能的电子设备,如上文介绍的终端或服务器,用于实施上述实施例中提供的对象管理方法。具体来讲:
该计算机设备1700包括处理单元(如CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)和FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)等)1701、包括RAM(Random-Access Memory,随机存储器)1702和ROM(Read-Only Memory,只读存储器)1703的系统存储器1704,以及连接系统存储器1704和中央处理单元1701的系统总线1705。该计算机设备1700还包括帮助服务器内的各个器件之间传输信息的基本输入/输出系统(Input Output System,I/O系统)1706,和用于存储操作系统1713、应用程序1714和其他程序模块1715的大容量存储设备1707。
该基本输入/输出系统1706包括有用于显示信息的显示器1708和用于用户输入信息的诸如鼠标、键盘之类的输入设备1709。其中,该显示器1708和输入设备1709都通过连接到系统总线1705的输入输出控制器1710连接到中央处理单元1701。该基本输入/输出系统1706还可以包括输入输出控制器1710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1710还提供输出到显示屏、打印机或其他类型的输出设备。
该大容量存储设备1707通过连接到系统总线1705的大容量存储控制器(未示出)连接到中央处理单元1701。该大容量存储设备1707及其相关联的计算机可读介质为计算机设备1700提供非易失性存储。也就是说,该大容量存储设备1707可以包括诸如硬盘或者CD-ROM(Compact Disc Read-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
不失一般性,该计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦写可编程只读存储器)、闪存或其他固态存储其技术,CD-ROM、DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知该计算机存储介质不局限于上述几种。上述的系统存储器1704和大容量存储设备1707可以统称为存储器。
根据本申请实施例,该计算机设备1700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1700可以通过连接在该系统总线1705上的网络接口单元1711连接到网络1712,或者说,也可以使用网络接口单元1711来连接到其他类型的网络或远程计算机系统(未示出)。
存储器还包括至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至少一段程序、代码集或指令集存储于存储器中,且经配置以由一个或者一个以上处理器执行,以实现上述对象管理方法。
在示例性实施例中,还提供了一种计算机可读存储介质,存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集在被计算机设备的处理器执行时实现上述对象管理方法。
可选地,该计算机可读存储介质可以包括:ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存储器)、SSD(Solid State Drives,固态硬盘)或光盘等。其中,随机存取记忆体可以包括ReRAM(Resistance Random Access Memory,电阻式随机存取记忆体)和DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,计算机程序产品或计算机程序包括计算机指令,计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质中读取计算机指令,处理器执行计算机指令,使得计算机设备执行上述对象管理方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种对象管理方法,其特征在于,所述方法包括:
获取场景中增加的第一对象的位置信息;
基于所述第一对象的位置信息,从所述场景对应的对象管理树中确定第一节点;其中,所述对象管理树包括多个节点,每一个节点对应于所述场景中的一个区域,不同节点对应的区域互不重叠,所述第一节点是指所述第一对象的位置信息所属区域对应的节点;
若所述第一节点对应的区域中增加所述第一对象后,所述第一节点对应的区域中包含的对象数量大于或等于上限值,则根据所述第一节点对应的区域中包含的各个对象的位置信息,确定所述第一节点对应的区域中包含的各个对象在k个空间维度上的距离跨度,k等于2或3;从所述k个空间维度中,选择所述距离跨度最大的目标空间维度;从所述第一节点对应的区域中包含的各个对象中,确定在所述目标空间维度上距离最远的第一对象和第二对象;将所述第一对象和所述第二对象在所述目标空间维度上的两个投影点之间的线段进行n等分,得到n-1个分割点,n为大于1的整数;基于所述n-1个分割点将所述第一节点对应的区域划分为n个子区域;其中,各个所述子区域中包含的对象数量相同或接近;
在所述对象管理树中配置与所述n个子区域一一对应的n个节点。
2.根据权利要求1所述的方法,其特征在于,所述在所述对象管理树中配置与所述n个子区域一一对应的n个节点,包括:
获取所述第一节点的父节点的子节点数量;
在所述子节点数量满足第一条件的情况下,在所述对象管理树中添加所述第一节点的n-1个兄弟节点,将所述第一节点和所述n-1个兄弟节点配置为与所述n个子区域一一对应;
在所述子节点数量满足第二条件的情况下,在所述对象管理树中添加所述第一节点的n个子节点,将所述n个子节点配置为与所述n个子区域一一对应。
3.根据权利要求2所述的方法,其特征在于,所述获取所述第一节点的父节点的子节点数量之后,还包括:
在所述子节点数量满足第三条件的情况下,在所述对象管理树中添加所述第一节点的n1个兄弟节点,以及在对象管理树中添加所述第一节点的n2个子节点,将所述n1个兄弟节点和所述n2个子节点配置为与所述n个子区域一一对应,其中,n1+n2等于n。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述场景中减少的第二对象的位置信息;
基于所述第二对象的位置信息,从所述对象管理树中确定第二节点,所述第二节点是指所述第二对象的位置信息所属区域对应的节点;
若所述第二节点对应的区域中减少所述第二对象后,所述第二节点对应的区域中包含的对象数量小于或等于下限值,则从所述对象管理树中确定与所述第二节点合并的第三节点;
将所述第三节点对应的区域,更新为所述第三节点对应的原始区域和所述第二节点对应的区域的合并区域;
从所述对象管理树中删除所述第二节点。
5.根据权利要求4所述的方法,其特征在于,所述将所述第三节点对应的区域,更新为所述第三节点对应的原始区域和所述第二节点对应的区域的合并区域,包括:
在所述第三节点的数量为一个的情况下,将所述第三节点对应的区域,更新为所述第三节点对应的原始区域和所述第二节点对应的完整区域的合并区域;
或者,
在所述第三节点的数量为k个的情况下,将所述第二节点对应的区域划分为k个子区域,所述k个第三节点与所述k个子区域一一匹配;对于所述k个第三节点中的每一个第三节点,将所述第三节点对应的区域,更新为所述第三节点对应的原始区域和所述k个子区域中与所述第三节点匹配的子区域的合并区域,k为大于1的整数。
6.根据权利要求4所述的方法,其特征在于,所述在所述对象管理树中删除所述第二节点之后,所述方法还包括:
若所述第三节点的父节点有且仅有一个子节点,则从所述对象管理树中删除所述第三节点的父节点,并将所述第三节点作为其祖父节点的子节点。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
获取所述场景中的目标对象的视野范围;
基于所述对象管理树,确定位于所述视野范围内的对象集合,所述对象集合中包含处于所述视野范围内的至少一个对象;
将所述视野范围划分为多个子视野范围;其中,不同的子视野范围和所述目标对象之间的距离不同;
根据所述对象集合中的各个对象分别所属的子视野范围,确定所述各个对象分别对应的刷新频率;其中,所述对象对应的刷新频率,与所述对象所属的子视野范围和所述目标对象之间的距离呈负相关关系。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
对于所述多个子视野范围中的第一子视野范围,若所述第一子视野范围内的对象数量大于所述第一子视野范围对应的额定最大数量,则获取所述第一子视野范围内的各个对象分别对应的属性信息,所述属性信息用于表征所述对象与所述目标对象之间的关系;
根据所述第一子视野范围内的各个对象分别对应的属性信息,确定所述第一子视野范围内的各个对象分别对应的权重;
从所述第一子视野范围内的各个对象中,选择所述权重符合条件的对象作为所述第一子视野范围内的显示对象,所述显示对象是指在所述目标对象的视野范围内进行显示的对象。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
对于所述多个子视野范围中的第二子视野范围,若所述第二子视野范围内的对象数量小于所述第二子视野范围对应的额定最大数量,则将所述第一子视野范围内的多余对象,分配给所述第二子视野范围;
其中,所述多余对象是指所述第一子视野范围内所述权重不符合所述条件的对象,所述多余对象按照所述第二子视野范围对应的刷新频率进行显示。
10.一种对象管理装置,其特征在于,所述装置包括:
位置获取模块,用于获取场景中增加的第一对象的位置信息;
节点确定模块,用于基于所述第一对象的位置信息,从所述场景对应的对象管理树中确定第一节点;其中,所述对象管理树包括多个节点,每一个节点对应于所述场景中的一个区域,不同节点对应的区域互不重叠,所述第一节点是指所述第一对象的位置信息所属区域对应的节点;
区域划分模块,用于若所述第一节点对应的区域中增加所述第一对象后,所述第一节点对应的区域中包含的对象数量大于或等于上限值,则根据所述第一节点对应的区域中包含的各个对象的位置信息,确定所述第一节点对应的区域中包含的各个对象在k个空间维度上的距离跨度,k等于2或3;从所述k个空间维度中,选择所述距离跨度最大的目标空间维度;从所述第一节点对应的区域中包含的各个对象中,确定在所述目标空间维度上距离最远的第一对象和第二对象;将所述第一对象和所述第二对象在所述目标空间维度上的两个投影点之间的线段进行n等分,得到n-1个分割点,n为大于1的整数;基于所述n-1个分割点将所述第一节点对应的区域划分为n个子区域;其中,各个所述子区域中包含的对象数量相同或接近;
节点配置模块,用于在所述对象管理树中配置与所述n个子区域一一对应的n个节点。
11.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一段程序,所述至少一段程序由所述处理器加载并执行以实现如权利要求1至9任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一段程序,所述至少一段程序由处理器加载并执行以实现如权利要求1至9任一项所述的方法。
13.一种对象管理系统,其特征在于,所述系统包括:对象管理层和兴趣区域AOI视野层;
所述AOI视野层,用于向所述对象管理层发送场景中的目标对象的视野范围数据,所述目标对象的视野范围数据用于指示所述目标对象的视野范围;
所述对象管理层,用于根据所述目标对象的视野范围数据,确定所述目标对象的视野范围;基于所述场景对应的对象管理树,确定位于所述目标对象的视野范围内的对象集合,所述对象集合中包含处于所述目标对象的视野范围内的至少一个对象,其中,所述对象管理树包括多个节点,每一个节点对应于所述场景中的一个区域,不同节点对应的区域互不重叠,且不同节点对应的区域中包含的对象数量相同或接近;向所述AOI视野层发送对象集合数据,所述对象集合数据用于指示所述目标对象的视野范围内的对象集合;
所述AOI视野层,用于根据所述对象集合数据,确定所述目标对象的视野范围内的对象集合;
所述对象管理层,还用于获取所述场景中增加的第一对象的位置信息;基于所述第一对象的位置信息,从所述场景对应的对象管理树中确定第一节点,所述第一节点是指所述第一对象的位置信息所属区域对应的节点;若所述第一节点对应的区域中增加所述第一对象后,所述第一节点对应的区域中包含的对象数量大于或等于上限值,则根据所述第一节点对应的区域中包含的各个对象的位置信息,确定所述第一节点对应的区域中包含的各个对象在k个空间维度上的距离跨度,k等于2或3;从所述k个空间维度中,选择所述距离跨度最大的目标空间维度;从所述第一节点对应的区域中包含的各个对象中,确定在所述目标空间维度上距离最远的第一对象和第二对象;将所述第一对象和所述第二对象在所述目标空间维度上的两个投影点之间的线段进行n等分,得到n-1个分割点,n为大于1的整数;基于所述n-1个分割点将所述第一节点对应的区域划分为n个子区域;在所述对象管理树中配置与所述n个子区域一一对应的n个节点。
14.根据权利要求13所述的系统,其特征在于,所述AOI视野层,还用于:
将所述目标对象的视野范围划分为多个子视野范围;其中,不同的子视野范围和所述目标对象之间的距离不同;
根据所述对象集合中的各个对象分别所属的子视野范围,确定所述各个对象分别对应的刷新频率;其中,所述对象对应的刷新频率,与所述对象所属的子视野范围和所述目标对象之间的距离呈负相关关系。
15.根据权利要求14所述的系统,其特征在于,所述AOI视野层,还用于:
对于所述多个子视野范围中的第一子视野范围,若所述第一子视野范围内的对象数量大于所述第一子视野范围对应的额定最大数量,则获取所述第一子视野范围内的各个对象分别对应的属性信息,所述属性信息用于表征所述对象与所述目标对象之间的关系;
根据所述第一子视野范围内的各个对象分别对应的属性信息,确定所述第一子视野范围内的各个对象分别对应的权重;
从所述第一子视野范围内的各个对象中,选择所述权重符合条件的对象作为所述第一子视野范围内的显示对象,所述显示对象是指在所述目标对象的视野范围内进行显示的对象。
16.根据权利要求13至15任一项所述的系统,其特征在于,所述对象管理层,还用于:
获取所述场景中减少的第二对象的位置信息;
基于所述第二对象的位置信息,从所述对象管理树中确定第二节点,所述第二节点是指所述第二对象的位置信息所属区域对应的节点;
若所述第二节点对应的区域中减少所述第二对象后,所述第二节点对应的区域中包含的对象数量小于或等于下限值,则从所述对象管理树中确定与所述第二节点合并的第三节点;
将所述第三节点对应的区域,更新为所述第三节点对应的原始区域和所述第二节点对应的区域的合并区域;
从所述对象管理树中删除所述第二节点。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111057914.8A CN113713381B (zh) | 2021-09-09 | 2021-09-09 | 对象管理方法、装置、设备、存储介质及系统 |
KR1020237033809A KR20230150876A (ko) | 2021-09-09 | 2022-08-10 | 객체 관리 방법, 장치 및 시스템, 및 디바이스 및 저장 매체 |
PCT/CN2022/111471 WO2023035840A1 (zh) | 2021-09-09 | 2022-08-10 | 对象管理方法、装置、设备、存储介质及系统 |
EP22866314.2A EP4302847A1 (en) | 2021-09-09 | 2022-08-10 | Object management method, apparatus and system, and device and storage medium |
JP2023549040A JP2024507183A (ja) | 2021-09-09 | 2022-08-10 | オブジェクト管理方法、オブジェクト管理装置、コンピュータ機器、コンピュータプログラム、及びオブジェクト管理システム |
US18/316,063 US20230281251A1 (en) | 2021-09-09 | 2023-05-11 | Object management method and apparatus, device, storage medium, and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111057914.8A CN113713381B (zh) | 2021-09-09 | 2021-09-09 | 对象管理方法、装置、设备、存储介质及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113713381A CN113713381A (zh) | 2021-11-30 |
CN113713381B true CN113713381B (zh) | 2023-06-20 |
Family
ID=78683002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111057914.8A Active CN113713381B (zh) | 2021-09-09 | 2021-09-09 | 对象管理方法、装置、设备、存储介质及系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230281251A1 (zh) |
EP (1) | EP4302847A1 (zh) |
JP (1) | JP2024507183A (zh) |
KR (1) | KR20230150876A (zh) |
CN (1) | CN113713381B (zh) |
WO (1) | WO2023035840A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113713381B (zh) * | 2021-09-09 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 对象管理方法、装置、设备、存储介质及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693363A (zh) * | 2012-05-10 | 2012-09-26 | 北京像素软件科技股份有限公司 | 一种网络游戏中基于四叉树的场景管理方法 |
CN104616345A (zh) * | 2014-12-12 | 2015-05-13 | 浙江大学 | 一种基于八叉树森林压缩的三维体素存取方法 |
WO2015093073A1 (ja) * | 2013-12-18 | 2015-06-25 | 株式会社ソニー・コンピュータエンタテインメント | シミュレーション装置 |
CN109086389A (zh) * | 2018-07-26 | 2018-12-25 | 国信优易数据有限公司 | 一种信息查询方法、推送方法、装置及电子设备 |
CA3034068A1 (en) * | 2018-03-22 | 2019-09-22 | Jean-Christophe Baillie | Dynamic display of objects within a virtual world by octree-based partitioning and publish/subscribe communication |
CN110347925A (zh) * | 2019-07-12 | 2019-10-18 | 腾讯科技(深圳)有限公司 | 信息处理方法及计算机可读存储介质 |
CN110716766A (zh) * | 2019-10-17 | 2020-01-21 | 网易(杭州)网络有限公司 | 游戏场景加载方法、装置、计算机可读介质及电子设备 |
CN111291085A (zh) * | 2020-01-15 | 2020-06-16 | 中国人民解放军国防科技大学 | 层次化兴趣匹配方法、装置、计算机设备和存储介质 |
CN111790151A (zh) * | 2020-06-28 | 2020-10-20 | 上海米哈游天命科技有限公司 | 一种场景中物体加载方法、装置、存储介质及电子设备 |
CN111798558A (zh) * | 2020-06-02 | 2020-10-20 | 完美世界(北京)软件科技发展有限公司 | 数据处理方法及装置 |
CN112669458A (zh) * | 2020-12-25 | 2021-04-16 | 戴姆勒股份公司 | 基于激光点云进行地面滤波的方法、设备和程序载体 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8400447B1 (en) * | 2008-02-15 | 2013-03-19 | Adobe Systems Incorporated | Space partitioning trees using planes selected from a discrete set of orientations |
CN111467806B (zh) * | 2020-05-15 | 2023-04-07 | 网易(杭州)网络有限公司 | 游戏场景中资源生成方法、装置、介质及电子设备 |
CN113713381B (zh) * | 2021-09-09 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 对象管理方法、装置、设备、存储介质及系统 |
-
2021
- 2021-09-09 CN CN202111057914.8A patent/CN113713381B/zh active Active
-
2022
- 2022-08-10 EP EP22866314.2A patent/EP4302847A1/en active Pending
- 2022-08-10 JP JP2023549040A patent/JP2024507183A/ja active Pending
- 2022-08-10 WO PCT/CN2022/111471 patent/WO2023035840A1/zh active Application Filing
- 2022-08-10 KR KR1020237033809A patent/KR20230150876A/ko active Search and Examination
-
2023
- 2023-05-11 US US18/316,063 patent/US20230281251A1/en active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693363A (zh) * | 2012-05-10 | 2012-09-26 | 北京像素软件科技股份有限公司 | 一种网络游戏中基于四叉树的场景管理方法 |
WO2015093073A1 (ja) * | 2013-12-18 | 2015-06-25 | 株式会社ソニー・コンピュータエンタテインメント | シミュレーション装置 |
CN104616345A (zh) * | 2014-12-12 | 2015-05-13 | 浙江大学 | 一种基于八叉树森林压缩的三维体素存取方法 |
CA3034068A1 (en) * | 2018-03-22 | 2019-09-22 | Jean-Christophe Baillie | Dynamic display of objects within a virtual world by octree-based partitioning and publish/subscribe communication |
CN109086389A (zh) * | 2018-07-26 | 2018-12-25 | 国信优易数据有限公司 | 一种信息查询方法、推送方法、装置及电子设备 |
CN110347925A (zh) * | 2019-07-12 | 2019-10-18 | 腾讯科技(深圳)有限公司 | 信息处理方法及计算机可读存储介质 |
CN110716766A (zh) * | 2019-10-17 | 2020-01-21 | 网易(杭州)网络有限公司 | 游戏场景加载方法、装置、计算机可读介质及电子设备 |
CN111291085A (zh) * | 2020-01-15 | 2020-06-16 | 中国人民解放军国防科技大学 | 层次化兴趣匹配方法、装置、计算机设备和存储介质 |
CN111798558A (zh) * | 2020-06-02 | 2020-10-20 | 完美世界(北京)软件科技发展有限公司 | 数据处理方法及装置 |
CN111790151A (zh) * | 2020-06-28 | 2020-10-20 | 上海米哈游天命科技有限公司 | 一种场景中物体加载方法、装置、存储介质及电子设备 |
CN112669458A (zh) * | 2020-12-25 | 2021-04-16 | 戴姆勒股份公司 | 基于激光点云进行地面滤波的方法、设备和程序载体 |
Also Published As
Publication number | Publication date |
---|---|
US20230281251A1 (en) | 2023-09-07 |
EP4302847A1 (en) | 2024-01-10 |
WO2023035840A1 (zh) | 2023-03-16 |
KR20230150876A (ko) | 2023-10-31 |
CN113713381A (zh) | 2021-11-30 |
JP2024507183A (ja) | 2024-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103093499B (zh) | 一种适用于网络传输的城市三维模型数据组织方法 | |
JP6026169B2 (ja) | プログラム、記録媒体、情報処理装置及び制御方法 | |
US20170287205A1 (en) | Three-dimensional modelling with improved virtual reality experience | |
KR100452089B1 (ko) | 게임 화면을 갱신하기 위한 오브젝트를 로딩하는 이미지리소스 로딩 시스템 및 이미지 리소스 로딩 방법 | |
US10521520B2 (en) | Highly scalable cluster engine for hosting simulations of objects interacting within a space | |
US9724610B2 (en) | Creation and prioritization of multiple virtual universe teleports in response to an event | |
US11416553B2 (en) | Spatial indexing | |
KR20210086977A (ko) | 가상 또는 실제 세계의 다차원 3d 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱 | |
CN110935169B (zh) | 虚拟对象的控制方法、信息显示方法、装置、设备及介质 | |
CN102255930A (zh) | 用于提供虚拟世界的场景数据的方法和系统 | |
CN114943810B (zh) | 基于osgb的倾斜摄影切片的优化方法、终端、装置和介质 | |
KR102656970B1 (ko) | 가상 객체 선택 방법 및 장치, 디바이스, 및 저장 매체 | |
CN110478898B (zh) | 游戏中虚拟场景的配置方法及装置、存储介质及电子设备 | |
CN113713381B (zh) | 对象管理方法、装置、设备、存储介质及系统 | |
US10719985B2 (en) | Model object building method, server, and system | |
CN114463473A (zh) | 图像渲染的处理方法和装置、存储介质及电子设备 | |
US10565785B2 (en) | Dynamic display of objects within a virtual world by octree-based partitioning and publish/subscribe communication | |
CN112685429B (zh) | 树状结构模型生成及加载方法、装置、存储介质及设备 | |
EP3948539A1 (en) | Low-latency, distributed application for interactive worlds | |
CN114549761A (zh) | 基于分布式存储的实景三维模型分层渲染优化方法及系统、存储介质 | |
Luo et al. | Research of model scheduling strategy in large Web3D scene based on XML | |
US20240212284A1 (en) | Generation of a surface mesh from a voxel model of a three-dimensional environment | |
Diaconu | Scalability for virtual worlds | |
US20230149813A1 (en) | Computer-Implemented Methods for Generating Level of Detail Assets for Dynamic Rendering During a Videogame Session | |
KR20240012464A (ko) | 3차원 환경의 복셀 모델로부터의 표면 메시의 생성 |
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 |