CN105512194A - 一种游戏场景的管理方法和装置 - Google Patents
一种游戏场景的管理方法和装置 Download PDFInfo
- Publication number
- CN105512194A CN105512194A CN201510837416.3A CN201510837416A CN105512194A CN 105512194 A CN105512194 A CN 105512194A CN 201510837416 A CN201510837416 A CN 201510837416A CN 105512194 A CN105512194 A CN 105512194A
- Authority
- CN
- China
- Prior art keywords
- cube
- hash table
- dividing
- game
- establishing
- 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.)
- Pending
Links
- 238000007726 management method Methods 0.000 title abstract description 19
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 230000003247 decreasing effect Effects 0.000 abstract 1
- 238000013507 mapping Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种游戏场景的管理方法和装置,该方法包括:将游戏场景划分为多个相同体积的正方体区域;建立哈希表存储所述正方体区域,其中,一个哈希表元素对应一个正方体区域;为所述哈希表中每个元素对应的正方体区域建立空间八叉树;基于所述哈希表和空间八叉树进行游戏对象所在位置的查找。利用该方法,解决了在游戏操作中不能有效查找游戏对象的存储位置,使玩家快速进行游戏对象的隐藏或显示操作的问题;提高了查找的精确度,降低了系统消耗,增强了游戏性,提升了用户体验。
Description
技术领域
本发明涉及计算机应用技术领域,具体涉及一种游戏场景的管理方法和装置。
背景技术
近年来,随着数字化技术的不断发展,场景管理在游戏中显得越来越重要。游戏中的场景管理器主要用于对游戏对象的管理,常规的场景管理一般包括对游戏对象的碰撞检测和场景渲染等,但随着游戏中游戏对象设置量的增大,在游戏过程中,玩家为了能更舒适的体验游戏,就想把游戏视野内一部分形成干扰的游戏对象隐藏掉或把需要的游戏对象显示出来。对于游戏对象的快速隐藏或显示,需要找到相关游戏对象存储位置才得以实现。因此需要一个方法在不遍历整个场景中所有对象的前提下,快速找到视野内所涉及对象的存储位置。
对于游戏场景的管理,申请号为201410844678.8的中国专利提出了一种基于散列表和空间二叉树来实现场景管理的方法和装置,但该专利所提的场景管理方法和装置仅对游戏对象的碰撞检测或场景渲染有很好的效果,对于游戏场景中查找游戏对象的存储位置进行隐藏或显示的处理效果不佳,在查找游戏对象位置时耗时较多,不能实现游戏对象位置的快速查找,因而玩家不能快速实现游戏对象的隐藏或显示,进而影响玩家对游戏的体验效果。
发明内容
本发明实施例提出一种游戏场景的管理方法和装置,以解决不能有效查找游戏对象的存储位置,快速进行游戏对象的隐藏或显示的问题。
一方面,本发明实施例提供了一种游戏场景的管理方法,该方法包括:
将游戏场景划分为多个相同体积的正方体区域;
建立哈希表存储所述正方体区域,其中,一个哈希表元素对应一个正方体区域;
为所述哈希表中每个元素对应的正方体区域建立空间八叉树;
基于所述哈希表和空间八叉树进行游戏对象所在位置的查找。
进一步的,所述将游戏场景划分为多个相同体积的正方体区域,具体包括:
根据游戏场景的宽度w、深度d和高度h,确定游戏场景的体积V,其中V=wdh;设定哈希表元素的最大个数m;根据所述游戏场景的体积V及哈希表元素的最大个数m,确定正方体区域的最小体积v,其中v=V/m;基于正方体区域的最小体积,计算所述正方体区域的最小边长,并将所述最小边长向上取整得到划分边长;基于所述划分边长将游戏场景划分为多个相同体积的正方体区域。
进一步的,所述建立哈希表存储所述正方体区域,具体包括:
基于所述正方体区域的划分边长及游戏场景的宽、深和高建立三维数组;将所述正方体区域存放到所述三维数组对应的元素中,形成哈希表。
进一步的,所述为所述哈希表中每个元素对应的正方体区域建立空间八叉树,具体包括:
a、为所述哈希表中每个元素对应的正方体区域建立轴对称包围盒AABB;b、以轴对称包围盒AABB为根节点,将所述正方体区域按宽度、深度、高度等分成八个子正方体区域;c、为等分后的子正方体区域建立AABB,并再次以所述AABB为节点按宽度、深度、高度八等分所述子正方体区域;d、重复步骤c,直至所述正方体区域的划分层数达到预定值或子正方体区域形成的AABB小于设定程度为止。
另一方面,本发明实施例还提供了一种游戏场景的管理装置,该装置包括:
划分模块,用于将游戏场景划分为多个相同体积的正方体区域;
哈希表建立模块,用于建立哈希表存储所述正方体区域,其中,一个哈希表元素对应一个正方体区域;
八叉树建立模块,用于为所述哈希表中每个元素对应的正方体区域建立空间八叉树;
查找模块,基于所述哈希表和空间八叉树进行游戏对象所在位置的查找。
进一步的,所述划分模块,具体用于:根据游戏场景的宽度w、深度d和高度h,确定游戏场景的体积V,其中V=wdh;设定哈希表元素的最大个数m;根据所述游戏场景的体积V及哈希表元素的最大个数m,确定正方体区域的最小体积v,其中v=V/m;基于正方体区域的最小体积,计算所述正方体区域的最小边长,并将所述最小边长向上取整得到划分边长;基于所述划分边长将游戏场景划分为多个相同体积的正方体区域。
进一步的,所述哈希表建立模块,具体用于:
基于所述正方体区域的划分边长及游戏场景的宽、深和高建立三维数组;将所述正方体区域存放到所述三维数组对应的元素中,形成哈希表。
进一步的,所述八叉树建立模块,具体用于:
a、为所述哈希表中每个元素对应的正方体区域建立轴对称包围盒AABB;b、以轴对称包围盒AABB为根节点,将所述正方体区域按宽度、深度、高度等分成八个子正方体区域;c、为等分后的子正方体区域建立AABB,并再次以所述AABB为节点按宽度、深度、高度八等分所述子正方体区域;d、重复步骤c,直至所述正方体区域的划分层数达到预定值或子正方体区域形成的AABB小于设定程度为止。
本发明实施例中提供的一种游戏场景的管理方法及装置,首先将游戏场景划分为多个体积相同的正方体区域,然后建立哈希表并是哈希表中的一个元素对应存放一个正方体区域,之后为每个正方体区域建立空间八叉树,最后基于哈希表和空间八叉树对游戏场景中的某个对象所在位置进行快速查找。利用该方法,利用该方法,解决了在游戏操作中不能有效查找游戏对象的存储位置,使玩家快速进行游戏对象的隐藏或显示操作的问题;提高了查找的精确度,降低了系统消耗,增强了游戏性,提升了用户体验。
附图说明
图1为本发明实施例一提供的一种游戏场景的管理方法的流程示意图;
图2为本发明实施例二提供的一种游戏场景的管理方法的流程示意图;
图3为本发明实施例三提供的一种游戏场景的管理装置的结构示意图。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种游戏场景的管理方法的流程示意图,本实施例可适用于对三维游戏空间场景进行管理的情况,该方法可以由游戏场景的管理装置执行,如图1所示,本发明实施例提供的一种游戏场景的管理方法,包括如下操作步骤:
步骤101、将游戏场景划分为多个相同体积的正方体区域。
在本实施例中,所述游戏场景具体可指为游戏提供能够还原出游戏中的建筑物、树木、天空、道路、以及人物等可用对象元素的画面。在3D游戏中,所述游戏场景可看作包含游戏所需的多个对象元素的立体空间。对于所述立体空间的设定主要由游戏画面需要的宽度、深度以及高度决定。
一般地,为了便于游戏场景元素的查找,通常将游戏场景按体积大小进行划分,将划分后形成的小正方体区域看作一个查找的基本单位。通常用哈希表进行对小正方体区域进行位置的存储。
在本实施例中,对于游戏场景的划分可以通过给出的游戏场景的宽度、深度和高度,以及设定的哈希表元素个数来实现,可以确定所能划分的正方体区域的最大个数。需要注意的是,游戏场景并不都是规则的正方体结构,对游戏场景的划分也只是近似的正方体结构。
步骤102、建立哈希表存储所述正方体区域,其中,一个哈希表元素对应一个正方体区域。
一般地,所述哈希表又称散列表,是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。其中,用于关键码值映射的是一个映射函数,也称作哈希函数,此外,用于存放访问记录的数组称做哈希表或散列表。
在本实施例中,对于所建立的哈希表,其中一个位置元素对应一个正方体区域的查找位置。所述哈希表的建立实际上是三维数组的建立,所述三维数组的建立实际与所划分的正方体区域的实际个数以及正方体区域的划分边长有关,通过上述条件可以确定哈希表的长度以及哈希表元素个数。
步骤103、为所述哈希表中每个元素对应的正方体区域建立空间八叉树。
在本实施例中,当哈希表建立好,也完成正方体区域与哈希表元素一一映射后,需要对单独的正方体区域再次进行细分。因此考虑对正方体区域建立空间八叉树。所述空间八叉树具体可描述为:如果不是空树,则树中任意节点的子节点都为八个。空间八叉树可用于3D空间的场景管理,基于空间八叉树可以很快找到场景中的某一对象的具体位置。
一般地,空间八叉树的建立过程为一个递归划分的过程,在设定最大递归深度后,可循环将划分后的八块子正方体区域分别再次进行划分,直至达到最大递归深度或细分后的子正方体区域的单位元素数量与父节点的正方体区域的单位元素数量相同,就停止划分。因此,基于上述空间八叉树的建立条件可将正方体区域细分为若干个子正方体区域。
步骤104、基于所述哈希表和空间八叉树进行游戏对象所在位置的查找。
在本实施例中,玩家要对某个游戏对象进行显示或隐藏时,可以对所选的游戏对象下达显示或隐藏的操作命令。当游戏系统接收所述操作命令后,最主要的是找到所述游戏对象并响应相关操作。由于游戏场景中游戏对象的数量太多,无法直接找到所要的游戏对象,因此需要先基于已建立的哈希表快速找到所述游戏对象在哈希表中对应的正方体区域,然后基于所述正方体形成的空间八叉树进一步快速锁定游戏对象的具体位置,最终找到所述游戏对象后,游戏系统响应玩家的显示或隐藏的动作。
本发明实施例一提供的一种游戏场景的管理方法,首先将游戏场景划分为多个体积相同的正方体区域,然后建立哈希表并使哈希表中的一个元素对应存放一个正方体区域,之后为每个正方体区域建立空间八叉树,最后基于哈希表和空间八叉树对游戏场景中的某个对象所在位置进行快速查找。利用该方法,解决了在游戏操作中不能有效查找游戏对象的存储位置,快速进行游戏对象的隐藏或显示的问题;提高了查找的精确度,降低了系统消耗,增强了游戏性,实现了玩家对游戏像的快速隐藏或显示操作,提升了用户体验。
实施例二
图2为本发明实施例二提供的一种游戏场景的管理方法的流程示意图,本发明实施例在上述实施例一的基础上,对步骤“将游戏场景划分为多个相同体积的正方体区域”“建立哈希表存储所述正方体区域,其中,一个哈希表元素对应一个正方体区域”以及“为所述哈希表中每个元素对应的正方体区域建立空间八叉树”进行了进一步的优化。
如图2所示,本发明实施例二提供的一种游戏场景的管理方法,具体包括如下操作:
步骤201、根据游戏场景的宽度w、深度d和高度h,确定游戏场景的体积V,其中V=wdh。
示例性的,游戏场景可看作一个三维空间,对三维空间体积的计算主要取决于三维空间的宽度、高度以及深度。因此,当确定了游戏场景的宽度、高度以及深度后,可通过三维空间的体积公式计算所述游戏场景的体积。具体的,假定游戏场景的宽度为w,深度为d,高度为h,则游戏场景的体积V为V=wdh。
在本实施例中,游戏场景体积的计算主要用于之后对游戏场景的正方体区域的划分。可以理解为,当游戏场景以特定划分方式进行划分后,其总体积V就是所划分的多个正方体区域体积的和。
步骤202、设定哈希表元素的最大个数m。
在本实施例中,由于计算内存的限定,在建立哈希表时要考虑哈希表的最大长度,即,要考虑哈希表元素的最大个数。此外,设置哈希表元素最大个数的原因是需要考虑每个哈希表元素所占有的内存大小是否能保证游戏系统的正常运行。示例性的,基于运行系统的内存大小,可设定哈希表元素的最大个数为m。
步骤203、根据所述游戏场景的体积V及哈希表元素的最大个数m,确定正方体区域的最小体积v,其中v=V/m。
在本实施例中,上述步骤基于游戏场景的高度、宽度以及深度确定了游戏场景的体积,且给出了哈希表元素的最大个数,由于哈希表中的一个元素对应一个正方体区域,因此,哈希表元素的最大个数也就是所能划分的正方体区域的最大个数;同时,还可计算出每个正方体区域的最小体积。示例性的,设定正方体区域的最小体积为v,则v=V/m。
步骤204、基于正方体区域的最小体积,计算所述正方体区域的最小边长,并将所述最小边长向上取整得到划分边长。
在本实施例中,当计算出正方体区域的最小体积后,就可基于所述最小体积计算正方体区域的最小边长。示例性的,如果设定正方体区域的最小体积为v,最小边长为a,则最小边长a的计算公式为:进一步的,v的计算公式为v=V/m,且V的计算公式为V=wdh;其中w,d,h分别表示游戏场景的宽、深和高,m表示哈希表元素的最大个数。
在本实施例中,采用正方体区域的最小边长a对游戏场景进行划分是一种理想的划分状态,通常情况下,最小边长a的取值为一小数,如果直接采用最小边长对游戏场景划分,不利于正方体区域的获得,因此,本发明采用将最小边长向上取整的方法得到一个易于划分的整数边长,该整数边长在本发明中记为划分边长,作为对游戏场景进行划分的最终边长。
步骤205、基于所述划分边长将游戏场景划分为多个相同体积的正方体区域。
在本实施例中,当确定正方体区域的划分边长后,就能基于所述划分边长将游戏场景的高度、宽度和深度进行划分,且划分所得的各正方体区域的体积相等。
步骤206、基于所述正方体区域的划分边长及游戏场景的宽、深和高建立三维数组。
具体的,建立三维数组的过程可描述为:将游戏场景的宽、深和高分别与所述划分边长相除,由此获取正方体区域的每一段或者每一段在宽、深和高上的投影,记所获得的每一段的宽、高和深大小为s1、s2和s3,通过获得的宽、高和深的大小值可获取游戏场景中正方体区域的每一段相应的坐标值,基于每一段的宽、高、深的大小,可以建立一个数组元素的宽、高和深分别为s1、s2和s3的三维数组,其中,在建立好的三维数组中,一个数组元素对应一个正方体区域。
步骤207、将所述正方体区域存放到所述三维数组对应的元素中,形成哈希表。
在本实施例中,正方体区域存放到所述三维数组中,其存放过程满足一个映射函数,具体的,按照正方体区域的划分边长及正方体区域与三维数组的对应关系来实现正方体区域的存放操作,由此形成一个哈希表。
步骤208、为所述哈希表中每个元素对应的正方体区域建立空间八叉树。
在本实施例中,仅将正方体区域对应到哈希表不是最终目的,因为在每个正方体区域中,依然存在多个游戏对象,为了实现游戏对象存储位置的快速查找,需要对每个正方体区域进一步细分。因此通过为哈希表中每个元素对应的正方体区域建立空间八叉树来实现细分。
一般地,通过建立空间八叉树进行细分时,其细分的程度可以达到每个细分后的区域中仅包含一个游戏对象,这样细分后的区域就可看作包含一个游戏对象的规则几何模型,所述几何模型与所述游戏对象相比,其体积略大,但形状简单。因此,在游戏系统对游戏对象的位置进行查找时,可以用上述的规则几何模型来代替游戏对象,游戏系统只需查找游戏对象对应的规则几何模型,就能确定游戏对象的具体位置,从而实现对游戏对象的快速查找,方便了玩家对游戏对象的显示或隐藏操作。
进一步的,所述为所述哈希表中每个元素对应的正方体区域建立空间八叉树,具体包括:
a、为所述哈希表中每个元素对应的正方体区域建立轴对称包围盒AABB。
在本实施例中,对于空间八叉树的建立过程,一般先建立轴对称包围盒(Axis-AlignedBoundingBoxes,AABB),并以轴对称包围盒AABB为根节点进行子节点划分。所述轴对称包围盒AABB可理解为包含特定对象且边平行于坐标轴的最小的正六面体。其轴对称包围盒AABB区域的建立步骤与本申请将游戏场景划分为多个相同体积正方体区域的步骤类似,这里不再详述。
b、以轴对称包围盒AABB为根节点,将所述正方体区域按宽度、深度、高度等分成八个子正方体区域。
八叉树是节点最多有八个子节点的有序树,在对所述正方体区域建立相应的空间八叉树时,以步骤a中建立的轴对称包围盒AABB为根节点,需要注意的是,以轴对称包围盒AABB作为的根节点,实际上也是一个空间几何体,依据AABB空间体积体积的大小,可将正方体区域按宽度、深度、高度等分成八个与AABB空间体积相同的子正方体区域。
c、为等分后的子正方体区域建立AABB,并再次以所述AABB为节点按宽度、深度、高度八等分所述子正方体区域。
d、重复步骤c,直至所述正方体区域的划分层数达到预定值或子正方体区域形成的AABB小于设定程度为止。
在本实施例中,步骤c和步骤d的执行实际上可以看作一个具有判断条件的循环执行体,即,步骤d是一个判断条件,步骤b为一个依据判定条件的循环执行步骤。上述两个步骤的具体操作可以理解为:当正方体区域的划分层数达到预定值或者子正方体区域形成的的AABB的体积小于最初的设定值时,就要停止空间八叉树的建立;否则,返回执行步骤c重新执行,由此对子正方体区域再次基于新建立的轴对称包围盒AABB按宽度、深度、高度进行八等分。
需要说明的是,在建立空间八叉树前,需要设定所述空间八叉树的最深层数,以及轴对称包围盒AABB的最小体积。使其作为停止八叉树建立的判定条件。
步骤209、基于所述哈希表和空间八叉树进行游戏对象所在位置的查找。
在空间八叉树建立好后,对游戏对象所在位置的查找过程可以表述为:首先基于哈希表确定游戏对象所在的正方体区域,然后基于空间八叉树索引确定包含所述游戏对象的规则几何模型在八叉树中的具体层次,之后确定所述规则几何模型在以查找出的八叉树层次中所在的具体位置,其具体位置可以理解为子节点在空间八叉树中的具体位置,也就是游戏对象在游戏场景中的具体位置。基于上述步骤实现了游戏对象具体位置的快速查找。
需要注意的是,基于哈希表和空间八叉树划分的场景管理方法也适用于对游戏场景的渲染和碰撞检测,与现有的基于哈希表和空间二叉树的场景管理方法相比,能够在不增加空间复杂度和存储空间的前提下,更精确的为游戏场景提供位置查找方法,同时也加快了位置查找的速度。
本发明实施例二提供的一种游戏场景的管理方法,将游戏场景划分为多个体积相等的步骤、建立哈希表的步骤以及建立空间八叉树的步骤均进一步具体化。利用本发明的方法,哈希表具有极好的时间复杂度,且空间八叉树具有很好的空间复杂度,两种计算方法的结合便能够更加有效地管理大型场景;同时,可以达到一定的精确度,并且可以对游戏场景内的游戏对象进行组织,从而加快了游戏对象的查找速度,降低了系统资源的消耗,实现了玩家对游戏像的快速隐藏或显示操作,提升了用户体验。
实施例三
图3为本发明实施例三提供的一种游戏场景的管理装置的结构示意图。本实施例可适用于对游戏场景进行管理的情况,该装置可由软件和/或硬件实现,并一般集成游戏系统中,该装置的具体结构如下,包括:划分模块301、哈希表建立模块302、八叉树建立模块303以及查找模块304。其中,
划分模块301,用于将游戏场景划分为多个相同体积的正方体区域;哈希表建立模块302,用于建立哈希表存储所述正方体区域,其中,一个哈希表元素对应一个正方体区域;八叉树建立模块303,用于为所述哈希表中每个元素对应的正方体区域建立空间八叉树;查找模块304,基于所述哈希表和空间八叉树进行游戏对象所在位置的查找。
在本实施例中,所述装置首先通过划分装置301对游戏场景进行划分,将游戏场景划分多个体积相同的正方体区域;然后通过哈希表建立模块302对所划分的正方体区域建立哈希表,实现正方体区域与哈希表元素的一一对应;之后又通过八叉树建立模块303对所划分的每个正方体区域建立空间八叉树,使包含多个游戏对象正方体区域进一步细分;最后通过查找模块304,基于哈希表和空间八叉树实现了游戏对象所在位置的快速查找。
本实施例提供的一种游戏场景的管理装置,利用该装置,解决了在游戏操作中不能有效查找游戏对象的存储位置,快速进行游戏对象的隐藏或显示的问题;提高了查找的精确度,降低了系统消耗,增强了游戏性,实现了玩家对游戏像的快速隐藏或显示操作,提升了用户体验。
在上述实施例基础上,所述划分模块301,具体用于:根据游戏场景的宽度w、深度d和高度h,确定游戏场景的体积V,其中V=wdh;设定哈希表元素的最大个数m;根据所述游戏场景的体积V及哈希表元素的最大个数m,确定正方体区域的最小体积v,其中v=V/m;基于正方体区域的最小体积,计算所述正方体区域的最小边长,并将所述最小边长向上取整得到划分边长;基于所述划分边长将游戏场景划分为多个相同体积的正方体区域。
进一步的,所述哈希表建立模块302,具体用于:基于所述正方体区域的划分边长及游戏场景的宽、深和高建立三维数组;将所述正方体区域存放到所述三维数组对应的元素中,形成哈希表。
同时,所述八叉树建立模块303,具体用于:a、为所述哈希表中每个元素对应的正方体区域建立轴对称包围盒AABB;b、以轴对称包围盒AABB为根节点,将所述正方体区域按宽度、深度、高度等分成八个子正方体区域;c、为等分后的子正方体区域建立AABB,并再次以所述AABB为节点按宽度、深度、高度八等分所述子正方体区域;d、重复步骤c,直至所述正方体区域的划分层数达到预定值或子正方体区域形成的AABB小于设定程度为止。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (8)
1.一种游戏场景的管理方法,其特征在于,包括:
将游戏场景划分为多个相同体积的正方体区域;
建立哈希表存储所述正方体区域,其中,一个哈希表元素对应一个正方体区域;
为所述哈希表中每个元素对应的正方体区域建立空间八叉树;
基于所述哈希表和空间八叉树进行游戏对象所在位置的查找。
2.根据权利要求1所述的方法,其特征在于,所述将游戏场景划分为多个相同体积的正方体区域,具体包括:
根据游戏场景的宽度w、深度d和高度h,确定游戏场景的体积V,其中V=wdh;
设定哈希表元素的最大个数m;
根据所述游戏场景的体积V及哈希表元素的最大个数m,确定正方体区域的最小体积v,其中v=V/m;
基于正方体区域的最小体积,计算所述正方体区域的最小边长,并将所述最小边长向上取整得到划分边长;
基于所述划分边长将游戏场景划分为多个相同体积的正方体区域。
3.根据权利要求2所述的方法,其特征在于,所述建立哈希表存储所述正方体区域,具体包括:
基于所述正方体区域的划分边长及游戏场景的宽、深和高建立三维数组;
将所述正方体区域存放到所述三维数组对应的元素中,形成哈希表。
4.根据权利要求1所述的方法,其特征在于,所述为所述哈希表中每个元素对应的正方体区域建立空间八叉树,具体包括:
a、为所述哈希表中每个元素对应的正方体区域建立轴对称包围盒AABB;
b、以轴对称包围盒AABB为根节点,将所述正方体区域按宽度、深度、高度等分成八个子正方体区域;
c、为等分后的子正方体区域建立AABB,并再次以所述AABB为节点按宽度、深度、高度八等分所述子正方体区域;
d、重复步骤c,直至所述正方体区域的划分层数达到预定值或子正方体区域形成的AABB小于设定程度为止。
5.一种游戏场景的管理装置,其特征在于,包括:
划分模块,用于将游戏场景划分为多个相同体积的正方体区域;
哈希表建立模块,用于建立哈希表存储所述正方体区域,其中,一个哈希表元素对应一个正方体区域;
八叉树建立模块,用于为所述哈希表中每个元素对应的正方体区域建立空间八叉树;
查找模块,基于所述哈希表和空间八叉树进行游戏对象所在位置的查找。
6.根据权利要求5所述的装置,其特征在于,所述划分模块,具体用于:
根据游戏场景的宽度w、深度d和高度h,确定游戏场景的体积V,其中V=wdh;
设定哈希表元素的最大个数m;
根据所述游戏场景的体积V及哈希表元素的最大个数m,确定正方体区域的最小体积v,其中v=V/m;
基于正方体区域的最小体积,计算所述正方体区域的最小边长,并将所述最小边长向上取整得到划分边长;
基于所述划分边长将游戏场景划分为多个相同体积的正方体区域。
7.根据权利要求6所述的装置,其特征在于,所述哈希表建立模块,具体用于:
基于所述正方体区域的划分边长及游戏场景的宽、深和高建立三维数组;
将所述正方体区域存放到所述三维数组对应的元素中,形成哈希表。
8.根据权利要求5所述的方法,其特征在于,所述八叉树建立模块,具体用于:
a、为所述哈希表中每个元素对应的正方体区域建立轴对称包围盒AABB;
b、以轴对称包围盒AABB为根节点,将所述正方体区域按宽度、深度、高度等分成八个子正方体区域;
c、为等分后的子正方体区域建立AABB,并再次以所述AABB为节点按宽度、深度、高度八等分所述子正方体区域;
d、重复步骤c,直至所述正方体区域的划分层数达到预定值或子正方体区域形成的AABB小于设定程度为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510837416.3A CN105512194A (zh) | 2015-11-26 | 2015-11-26 | 一种游戏场景的管理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510837416.3A CN105512194A (zh) | 2015-11-26 | 2015-11-26 | 一种游戏场景的管理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105512194A true CN105512194A (zh) | 2016-04-20 |
Family
ID=55720176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510837416.3A Pending CN105512194A (zh) | 2015-11-26 | 2015-11-26 | 一种游戏场景的管理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105512194A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106512402A (zh) * | 2016-11-29 | 2017-03-22 | 北京像素软件科技股份有限公司 | 一种游戏角色的渲染方法及装置 |
CN107066552A (zh) * | 2017-03-23 | 2017-08-18 | 福建天晴在线互动科技有限公司 | 一种游戏用户数据的存储方法及系统 |
CN109701273A (zh) * | 2019-01-16 | 2019-05-03 | 腾讯科技(北京)有限公司 | 游戏数据的处理方法、装置、电子设备及可读存储介质 |
CN112657197A (zh) * | 2020-12-21 | 2021-04-16 | 北京像素软件科技股份有限公司 | 游戏角色数据的处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071515A (zh) * | 2007-06-25 | 2007-11-14 | 北京金山软件有限公司 | 一种在服务器端实现三维游戏碰撞检测的方法 |
CN101188025A (zh) * | 2007-11-30 | 2008-05-28 | 电子科技大学 | 一种高效实时的群体动画框架 |
CN101281654A (zh) * | 2008-05-20 | 2008-10-08 | 上海大学 | 一种基于八叉树的大规模复杂三维场景处理方法 |
CN104699946A (zh) * | 2014-12-30 | 2015-06-10 | 北京像素软件科技股份有限公司 | 一种游戏场景的管理方法及装置 |
-
2015
- 2015-11-26 CN CN201510837416.3A patent/CN105512194A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071515A (zh) * | 2007-06-25 | 2007-11-14 | 北京金山软件有限公司 | 一种在服务器端实现三维游戏碰撞检测的方法 |
CN101188025A (zh) * | 2007-11-30 | 2008-05-28 | 电子科技大学 | 一种高效实时的群体动画框架 |
CN101281654A (zh) * | 2008-05-20 | 2008-10-08 | 上海大学 | 一种基于八叉树的大规模复杂三维场景处理方法 |
CN104699946A (zh) * | 2014-12-30 | 2015-06-10 | 北京像素软件科技股份有限公司 | 一种游戏场景的管理方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106512402A (zh) * | 2016-11-29 | 2017-03-22 | 北京像素软件科技股份有限公司 | 一种游戏角色的渲染方法及装置 |
CN107066552A (zh) * | 2017-03-23 | 2017-08-18 | 福建天晴在线互动科技有限公司 | 一种游戏用户数据的存储方法及系统 |
CN107066552B (zh) * | 2017-03-23 | 2020-02-21 | 福建天晴在线互动科技有限公司 | 一种游戏用户数据的存储方法及系统 |
CN109701273A (zh) * | 2019-01-16 | 2019-05-03 | 腾讯科技(北京)有限公司 | 游戏数据的处理方法、装置、电子设备及可读存储介质 |
CN109701273B (zh) * | 2019-01-16 | 2022-04-19 | 腾讯科技(北京)有限公司 | 游戏数据的处理方法、装置、电子设备及可读存储介质 |
CN112657197A (zh) * | 2020-12-21 | 2021-04-16 | 北京像素软件科技股份有限公司 | 游戏角色数据的处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021103513A1 (en) | Method, device, and apparatus for rendering point cloud scene | |
WO2022121525A1 (zh) | 三维场景数据的渲染方法及装置、存储介质、电子装置 | |
CN103093499B (zh) | 一种适用于网络传输的城市三维模型数据组织方法 | |
US7561156B2 (en) | Adaptive quadtree-based scalable surface rendering | |
US8363049B2 (en) | 3D image processing method and apparatus for enabling efficient retrieval of neighboring point | |
CN100514369C (zh) | 一种基于非均匀空间划分的场景可见性裁剪方法 | |
US9355491B2 (en) | Ray tracing apparatus and method | |
CN105512194A (zh) | 一种游戏场景的管理方法和装置 | |
CN104699946B (zh) | 一种游戏场景的管理方法及装置 | |
CN104680572A (zh) | 基于bim的移动终端建筑模型渲染性能优化方法和系统 | |
CN113268557B (zh) | 一种适应显示导向型可视化分析的快速的空间索引方法 | |
CN106469190A (zh) | 三维场景管理方法及三维场景管理系统 | |
CN103257876B (zh) | C3游戏地图动态加载的方法 | |
CN110070616A (zh) | 存储器、基于gis平台的统计数据呈现方法、装置和设备 | |
CN115578536A (zh) | 一种分层分块三维模型节点合并方法、装置和电子装置 | |
US9454554B1 (en) | View dependent query of multi-resolution clustered 3D dataset | |
CN117237503B (zh) | 一种地理要素数据加速渲染及装置 | |
CN114373048A (zh) | 一种三维模型场景渲染方法 | |
Zhang et al. | A geometry and texture coupled flexible generalization of urban building models | |
US20120299919A1 (en) | Image display device | |
CN103927395A (zh) | 结构简化图像三维几何及材质纹理的数据结构及渲染方法 | |
CN114419256B (zh) | 基于多级抽壳算法的城市级bim数据轻量化方法及系统 | |
CN114202611A (zh) | 基于时空瓦片的三维图形渲染方法及装置 | |
JP2024507183A (ja) | オブジェクト管理方法、オブジェクト管理装置、コンピュータ機器、コンピュータプログラム、及びオブジェクト管理システム | |
CN113763240B (zh) | 一种点云缩略图生成方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160420 |