一种游戏场景的构建方法和装置与流程



1.本发明涉及游戏技术领域,特别是涉及一种游戏场景的构建方法和装置。


背景技术:



2.在游戏领域中,游戏场景构建是必不可少的环节。目前的游戏场景构建是基于矢量地图切片得到2d屏幕的建筑网格进行拉高处理,贴材质处理等,最终生成建筑,从而构建虚拟游戏的场景。在此方法中,存在以下问题:(1)仅生成方方正正的简单建筑模型,由于无法得到复杂建筑的建筑网格,不适用于生成复杂建筑;(2)无法进行高性能的碰撞测试。


技术实现要素:



3.鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种游戏场景的构建方法和装置,包括:
4.一种游戏场景的构建方法,所述方法包括:
5.获取基于预置地图数据生成的地图切片数据;
6.对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;
7.根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。
8.可选地,所述地表覆盖数据包括建筑层数据,所述游戏场景元素包括建筑元素,所述根据所述地表属性层数据摆放预置的游戏场景元素,包括:
9.在所述建筑层数据的一个或多个建筑包围盒中确定目标包围盒;
10.确定待摆放到所述目标包围盒的目标建筑元素;
11.根据所述目标包围盒的光栅数据判断所述目标包围盒中能否摆放所述目标建筑元素;
12.在判定所述目标包围盒能摆放所述目标建筑元素时,在所述目标包围盒中摆放所述目标建筑元素。
13.可选地,所述确定待摆放到所述目标包围盒的目标建筑元素,包括:
14.确定预置的候选建筑元素的模型包围盒;
15.在所述模型包围盒与目标包围盒匹配成功时,将所述候选建筑元素确定为待摆放到所述目标包围盒的目标建筑元素。
16.可选地,所述地表覆盖数据包括植被层数据,所述游戏场景元素包括植被元素,所述根据所述地表属性层数据摆放预置的游戏场景元素,包括:
17.根据所述植被层数据确定第一植被区;
18.基于所述第一植被区,随机生成第二植被区;
19.根据所述第一植被区和所述第二植被区,得到目标植被区;
20.在所述目标植被区中摆放预置的植被元素。
21.可选地,所述在所述目标植被区中摆放预置的植被元素,包括:
22.确定目标植被区的位置信息;
23.根据所述位置信息进行抖动处理,生成位置矩阵;
24.获取随机生成的旋转矩阵和缩放矩阵;
25.基于所述位置矩阵、旋转矩阵和缩放矩阵,生成目标矩阵;
26.按照所述目标矩阵摆放预置的植被元素。
27.可选地,还包括:
28.当虚拟角在所述游戏场景中进行移动时,确定所述虚拟角的待移动位置;
29.根据所述待移动位置处摆放的游戏场景元素,控制所述虚拟角移动。
30.可选地,所述根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景,包括:
31.从所述地表覆盖数据中确定第一地表覆盖数据和第二地表覆盖数据;
32.根据所述第一地表覆盖数据和所述第二地表覆盖数据,生成目标地表覆盖数据;
33.根据所述目标地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。
34.可选地,所述地表覆盖数据还包括以下任意一项或多项:
35.道路层数据、水层数据。
36.一种游戏场景的构建装置,所述装置包括:
37.地图切片数据获取模块,用于获取基于预置地图数据生成的地图切片数据;
38.地表覆盖数据确定模块,用于对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;
39.游戏场景构建模块,用于根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。
40.一种服务器,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的游戏场景的构建方法。
41.一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的游戏场景的构建方法。
42.本发明实施例具有以下优点:
43.本发明实施例通过获取基于预置地图数据生成的地图切片数据,从而可以对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据,进而可以根据所述地表覆盖数据预置的游戏场景元素,以构建游戏场景,实现了根据光栅化的地表覆盖数据快速构建游戏场景,即可以摆放复杂的游戏场景元素,如不规则的古建筑,又能快速获取所构建的游戏场景中的游戏场景元素,进而实现高性能的碰撞测试。
44.而且,通过对建筑层数据的包围盒进行扫描,确定包围盒是否已存在建筑元素,避免了直接通过拉高形成建筑时的穿模现象,构建合适的游戏场景。
45.进一步地,通过得到光栅化的地表覆盖数据,可以根据植被层数据摆放植被,使游戏场景更加真实。
附图说明
46.为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域
普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
47.图1a是本发明一实施例提供的一种游戏场景的构建方法的步骤流程图;
48.图1b是本发明一实施例提供的一种地图切片示意图;
49.图1c是本发明一实施例提供的一种同一切片的多个光栅层示意图;
50.图1d是本发明一实施例提供的一种地图切片数据的光栅数据示意图;
51.图1e是本发明一实施例提供的一种光栅化过程;
52.图2a是本发明一实施例提供的另一种游戏场景的构建方法的步骤流程图;
53.图2b是本发明一实施例提供的一种查询操作的位运算示意图;
54.图3a是本发明一实施例提供的另一种游戏场景的构建方法的步骤流程图;
55.图3b是本发明一实施例提供的一种第一植被区示意图;
56.图4是本发明一实施例提供的另一种游戏场景的构建方法的步骤流程图;
57.图5是本发明一实施例提供的游戏场景的构建装置的结构示意图。
具体实施方式
58.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
59.以下对本发明实施例中涉及的名词进行介绍:
60.游戏场景是应用程序在终端(手机端、pc端、云端等终端)上运行时显示(或提供)的虚拟游戏场景。该虚拟游戏场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的环境,本发明实施例均以游戏场景是三维虚拟游戏场景来举例说明。
61.游戏场景元素即为游戏场景中的人和物,如游戏角、地面、天空、水、山、花、草、树、石头、鸟、兽、虫、鱼、车辆、房屋等元素,在本发明实施例中由此场景元素可以针对建筑元素、植被元素、道路元素、水元素等。
62.参照图1a,示出了本发明一实施例提供的一种游戏场景的构建方法的步骤流程图,具体可以包括如下步骤:
63.步骤101,获取基于预置地图数据生成的地图切片数据;
64.其中,所述预置地图数据可以是真实的地图数据,也可以已经构建好的虚拟游戏地图数据。
65.在搭建新的游戏场景时,可以获取预置的地图数据,并基于预置的地图数据开始进行游戏地图构建,为了快速构建游戏场景,可以将地图数据进行分割处理,得到区域较小的地图切片数据,具体的,可以将真实的地图数据展开成平面的地图,然后进行横竖分割,每个切片就是一个块。每个切片里面存储的是点、线、面三种几何信息。
66.如图1b所示为基于真实地图数据切片的过程。在level 1中,展开的地图被划分为编号为0、1、2、3的四个切片,在level 2中,针对每个切片再次进行划分,每个切片被划分为四个小切片,如level 1中编号为“2”的切片,在level 2中被划分为编号为20、21、22、23四
个切片;在level 3中,针对每个切片再次进行划分,每个切片被划分为四个小切片,如在level 2中编号为“13”的切片,在level 3中被划分为编号为130、131、132、133四个切片。
67.步骤102,对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;
68.在本发明一实施例中,地表覆盖数据可以包括:建筑层数据、植被层数据、水层数据、道路层数据中任意一项或多项。
69.在得到地图切片数据后,可以对地图切片数据进行光栅扫描处理,依照预置地图数据中的地表覆盖对象得到对应的光栅化的地表覆盖数据。其中,光栅化是一种将几何图元转变为二维图像的过程,即将几何单元(点、线、面)栅格化到一个二维图像上的过程。
70.在实际应用中,预置地图数据中可以包含多种地表覆盖类型,从而在进行光栅化后,每个地图切片数据可以得到多个光栅层,如图1c所示为对同一地图切片数据进行光栅化后得到的地表覆盖数据,从左至右的光栅层依次为建筑层数据、植被层数据、道路层数据、水层数据。
71.在一示例中,一个光栅层的某一个地图切片数据可以构建成uint64 buffer[4][256]的数据结构,即在每个地图切片数据中,每一行为4个64bit的uint64,总共256行,如图1d所示。
[0072]
如图1e中的三角形可以代表预置地图数据中一个建筑所在的区域,从而先计算出这个三角形的三个点在这个buffer里面对应的位置,然后通过扫描线算法得到一条条扫描线,扫描线跟buffer对应的uint64做或运算,就相当于光栅化了这一行,该过程也是写入操作的位运算。
[0073]
在一示例中,本发明中的光栅化过程具体可以是采用软光栅扫描的过程,软光栅是指在cpu侧做光栅化的过程,进行软光栅扫描可以提高光栅化效率。
[0074]
在本发明实施例中,每个地图切片数据的光栅化处理过程仅需要5-10ms就可以完成,可以有效减少了客户端的性能压力,从而更快可以展现出3d游戏场景。
[0075]
步骤103,根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。
[0076]
在得到地表覆盖数据后,可以按照地表覆盖数据摆放预置的游戏场景元素,例如,根据建筑层数据摆放预置建筑元素,根据水层数据摆放水元素,根据道路层数据摆放道路元素,根据植被层数据摆放植被元素等。
[0077]
在实际应用中,将预置的游戏场景元素进行摆放的过程,实际上是一个游戏场景元素通过写入操作写入到光栅层中的过程,在写入后,更新光栅数据,得到摆放游戏场景元素后的光栅层数据,进而可以基于该光栅层数据进行其他游戏场景元素摆放,或者基于该光栅层数据进行虚拟角的碰撞测试。。
[0078]
需要说明的是,在摆放游戏场景元素时,可以根据不同游戏场景元素性质,设置不同的摆放规则,并按照该规则摆放游戏场景元素,从而构建合理的游戏场景,其中,摆放规则可以包括游戏场景元素的摆放顺序,不同游戏场景元素的区域设置规则等。
[0079]
在本发明一实施例中,所述地表覆盖数据包括第一地表覆盖数据和第二地表覆盖数据,所述步骤103可以包括以下子步骤:
[0080]
子步骤1031,从所述地表覆盖数据中确定第一地表覆盖数据和第二地表覆盖数据;
[0081]
其中,第一地表覆盖数据、第二地表覆盖数据可以是以下任意一项或多项:
[0082]
建筑层数据、植被层数据、道路层数据、水层数据。
[0083]
子步骤1032,根据所述第一地表覆盖数据和所述第二地表覆盖数据,生成目标地表覆盖数据;
[0084]
其中,目标地表覆盖数据可以是以下任意一项:
[0085]
建筑层数据、植被层数据、道路层数据、水层数据。
[0086]
子步骤1033,根据所述目标地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。
[0087]
在实际应用中,在对地图切片进行光栅化后,可以得到多个光栅化的地表覆盖数据,从而可以直接按照每个光栅化的地表覆盖数据摆放对应的游戏场景元素,也可以基于多个光栅化的地表覆盖数据进行或运算和/或非运算后,生成新的光栅层数据,并按照新的光栅层数据进行游戏场景元素摆放,以构建游戏场景。
[0088]
生成新的光栅层(即目标地表覆盖数据)的过程具体可以是:从光栅化的地表覆盖数据中,确定第一地表覆盖数据和第二地表覆盖数据。对第一地表覆盖数据和第二地表覆盖数据进行或运算和/或非运算等,从而生成目标地表覆盖数据。在生成新的目标地表覆盖数据后,可以摆放预置的游戏场景元素,如生成的新的目标地表覆盖数据为建筑层数据时,则摆放建筑元素,生成的目标地表覆盖数据为植被时,则摆放植被元素等。
[0089]
需要说明的是,针对目标地表覆盖数据摆放预置的游戏场景元素的过程可以参考直接按照地表覆盖数据摆放预置的游戏场景元素的过程。
[0090]
在实际应用中,在得到多个分层(如建筑、植被、水、道路)光栅数据(地表覆盖数据)之后,可以针对每层光栅数据进行自由组合,组合出需要的新的光栅层。
[0091]
例如,可以将水层数据和建筑层数据合并为一层新的光栅层,该光栅层可以用于作为虚拟角不可行走的依据,即用于进行虚拟角在游戏场景中的碰撞测试。
[0092]
例如,当需要针对地图中的空地所在区域放置游戏场景元素时,那么可以对所有的光栅层数据做或运算,之后做个非运算就可以得到空地对应的光栅层数据。
[0093]
例如,当需要在地图中植被和空地所在区域放置游戏场景元素时,可以对建筑层数据、水层数据、道路层数据做个或运算,再取非运算就可以得到植被和空地形成的光栅层数据。
[0094]
在实际应用中,可以基于地图的矢量地图切片得到2d屏幕的建筑网格进行拉高处理,贴材质处理等生成建筑,进而在此基础上在非建筑区逐个添加植被,水、道路等,从而在构建游戏场景时需要花费大量时间。
[0095]
而在本发明实施例中,可以根据光栅化的地表覆盖数据进行摆放游戏场景元素,从而可以实现更快地摆放游戏场景元素,以快速构建游戏场景,且可以根据用户需求通过对多个光栅层进行组合运算,快速生成新的光栅层数据,进而快速构建更加多样化的游戏场景。
[0096]
在本发明实施例中,获取基于预置地图数据生成的地图切片数据,从而可以对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据,进而可以根据所述地表覆盖数据预置的游戏场景元素,以构建游戏场景,实现了根据光栅化的地表覆盖数据构建游戏场景,即可以摆放复杂的游戏场景元素,在由此场景中设置复杂的建筑,又能快速获取所构建的游戏场景中的游戏场景元素,进而实现高性能的碰撞测试。
[0097]
参照图2a,示出了本发明一实施例提供的另一种游戏场景的构建方法的步骤流程图,具体可以包括如下步骤:
[0098]
步骤201,获取基于预置地图数据生成的地图切片数据;
[0099]
步骤202,对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;所述地表覆盖数据包括建筑层数据,所述游戏场景元素包括建筑元素;
[0100]
步骤203,在所述建筑层数据的一个或多个建筑包围盒中确定目标包围盒;
[0101]
包围盒是一种求解离散点集最优包围空间的算法,通过用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。其中,包围盒算法可以有aabb包围盒(axis aligned bounding box,轴对齐-边界盒)、包围球、方向包围盒以及固定方向凸包等,在本发明实施例中,以建筑包围盒为aabb包围盒作为示例对建筑元素摆放过程进行解释说明。
[0102]
在得到建筑层数据后,建筑层数据可以由一个或多个建筑包围盒构成,每个包围盒对应预置地图数据中一个真实的建筑。
[0103]
在摆放建筑时,可以从多个建筑包围盒中选定待摆放建筑的目标包围盒。
[0104]
步骤204,确定待摆放到所述目标包围盒的目标建筑元素;
[0105]
在确定目标包围盒后,可以在预置的建筑元素中确定待摆放到目标包围盒的目标建筑元素,即该目标建筑元素与目标包围盒匹配。
[0106]
在本发明一实施例中,所述步骤204具体可以包括以下子步骤:
[0107]
子步骤2041,确定预置的候选建筑元素的模型包围盒;
[0108]
在实际应用中,可以预先设计不同大小,形态的候选建筑元素(即建筑模型),针对每个候选建筑元素可以得到对应的二维模型包围盒。
[0109]
通过预置建筑元素,可以在游戏场景中构建复杂的建筑元素,如不规则的古建筑等。
[0110]
子步骤2042,在所述模型包围盒与目标包围盒匹配成功时,将所述候选建筑元素确定为待摆放到所述目标包围盒的目标建筑元素。
[0111]
在得到二维模型包围盒后,可以根据将目标包围盒与模型包围盒进行匹配,在匹配过程中可以对目标包围盒进行旋转,以便于进行包围盒之间的匹配,当模型包围盒底部的长宽都小于或等于待放入的目标包围盒的长宽,即为模型包围盒与目标包围盒匹配成功。
[0112]
当模型包围盒与目标包围盒匹配成功时,将目标包围盒对应的候选包围盒确定为待摆放到目标包围盒的目标建筑元素,即目标建筑元素理论上是可以摆放到目标包围盒中的。
[0113]
在一示例中,从候选建筑元素中通过对包围盒进行匹配可以确定目标候选元素,在这个过程中还可以对匹配程度进一步进行设置,如根据模型包围盒和目标包围盒之间的长宽差值确定二者的匹配程度,当差值越小时,则目标包围盒与模型包围盒的匹配程度越高,从而,可以确定与目标包围盒最契合的目标建筑元素。
[0114]
步骤205,根据所述目标包围盒的光栅数据判断所述目标包围盒中能否摆放所述目标建筑元素;
[0115]
对目标包围盒进行扫描,并结合目标包围盒的光栅数据,从而进一步判该目标包
围盒实际上是否可以摆放目标建筑元素。
[0116]
例如,对目标包围盒进行扫描,通过扫描线遍历目标包围盒每个y值的xmin~xmax,将扫描结果与目标包围盒的光栅数据做且运算,如果为真(扫描结果与光栅数据对应的栅格均为1)则说明这条扫面线之前已经摆放有建筑元素了,不能继续摆放其他建筑元素了,否则在目标包围盒的全部扫描线都通过测试时,可以确定该目标包围盒可以摆放建筑元素,从而,将需要摆放的目标建筑元素写入这个buffer(光栅数据),如图2b所示,图中三角形为待摆放的目标建筑元素,通过扫描线对目标包围盒进行扫描,并进行且运算的过程(即查询操作的位运算),根据运算结果,可以确定该目标包围盒中无法摆放目标建筑元素。
[0117]
步骤206,在判定所述目标包围盒能摆放所述目标建筑元素时,在所述目标包围盒中摆放所述目标建筑元素。
[0118]
在一示例中,当首次进行建筑摆放时,此时建筑层数据中的所有包围盒均未放置建筑元素,从而可以在确定目标包围盒后,直接将目标建筑元素摆放至目标包围盒中。
[0119]
当非首次进行建筑摆放时,此时建筑层数据中部分包围盒已经放置建筑,从而,在确定目标包围盒和目标建筑元素后,可以进一步判断目标包围盒是否可以摆放目标建筑元素,在确定目标包围盒可以摆放目标建筑元素的情况下,摆放目标建筑元素,从而避免建筑穿摸现象。
[0120]
在一示例中,当目标包围盒中已经摆放有建筑元素的情况下,当确定未摆放建筑的区域可以放置所述目标建筑元素时,也可以判定所述目标包围盒可以放置目标建筑元素。
[0121]
在本发明实施例中,获取基于预置地图数据生成的地图切片数据,从而可以对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据,进而根据地表覆盖数据摆放建筑元素,通过在摆放目标建筑元素前对建筑包围盒进行光栅扫描,判断建筑包围盒能否摆放建筑元素,实现了避免在摆放建筑元素时发生穿模现象。
[0122]
参照图3a,示出了本发明一实施例提供的另一种游戏场景的构建方法的步骤流程图,具体可以包括如下步骤:
[0123]
步骤301,获取基于预置地图数据生成的地图切片数据;
[0124]
步骤302,对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;所述地表覆盖数据包括植被层数据,所述游戏场景元素包括植被元素;
[0125]
在本发明一实施例中,所述地表覆盖数据还包括以下任意一项或多项:
[0126]
道路层数据、水层数据。
[0127]
步骤303,根据所述植被层数据确定第一植被区;
[0128]
在得到的地表覆盖数据中确定植被层数据,植被层数据根据预置地图数据中花草树木覆盖的区域生成。
[0129]
在确定植被层数据后,基于基于植被层数据确定第一植被区。其中,可以将植被层数据直接作为第一植被区,也可以结合其他地表覆盖数据,确定第一植被区。
[0130]
例如,在实际应用中,不同游戏场景元素有不同的摆放顺序,通常建筑层优先,随后是水层,道路层、最后是植被层,按照该摆放顺序在摆放完建筑元素、水元素以及道路元素后,在摆放植被元素过程中,可以基于在先摆放的游戏场景元素生成植被层,以摆放植被元素。
[0131]
具体地,建筑区,非植被的道路区以及非植被的水区均是非植被区,从而可以对buffer做这样的运算“building|((~grass)&road)|((~grass)&water)”,得到一层新的buffer,其中,“building”可以表示建筑层数据,“grass”可以表示植被层数据,“road”可以表示道路层数据,“water”可以表示水层数据,如图3b所示,图中白区可以表示理论上无法种植植被的区域,黑区可以表示理论上可以种植植被的区域。
[0132]
步骤304,基于所述第一植被区,随机生成第二植被区;
[0133]
在得到第一植被区后,可以基于第一植被区,随机生成一个第二植被区。
[0134]
步骤305,根据所述第一植被区和所述第二植被区,得到目标植被区;
[0135]
在得到第一植被区与第二植被区后,可以进一步确定第一植被区与第二植被区重合的区域,将该重合的植被区作为最终用于实际在游戏场景中摆放植被的目标植被区,通过另外随机一个第二植被区可以有效避免种满植被,使最终得到的游戏场景的视觉效果更佳。
[0136]
步骤306,在所述目标植被区中摆放预置的植被元素。
[0137]
在确定目标植被区后,可以按照目标植被区摆放预置的植被元素,即进行植被元素的实例化。
[0138]
在本发明一实施例中,所述步骤306可以包括以下子步骤:
[0139]
子步骤3061,确定目标植被区的位置信息;
[0140]
在实际应用中,在确定目标植被区后,目标植被区有一个个栅格(即1个bit)构成,在摆放植被过程中,可以将植被默认摆放在栅格的中心位置,而且,每个栅格中所摆放的植被为固定大小形状的。
[0141]
为实现更好的植被效果,可以先确定目标植被区的位置信息,即确定目标植被区的每个栅格的位置信息,其中,将每个栅格的中心位置坐标作为栅格的位置信息。
[0142]
子步骤3062,根据所述位置信息进行抖动处理,生成位置矩阵;
[0143]
在确定位置信息后,可以对得到的位置信息按照预设的抖动程度进行抖动处理,从而使位置信息由中心位置进行一定随机偏移,根据抖动后的位置信息生成位置矩阵。
[0144]
通过抖动处理,使得在实例化过程中,植被在栅格中的位置随机分布。
[0145]
子步骤3063,获取随机生成的旋转矩阵和缩放矩阵;
[0146]
旋转矩阵可以用于控制植被的角度,通过随机的旋转矩阵可以得到随机呈现不同角度的植被,使植被的形态更加丰富。
[0147]
缩放矩阵可以用于控制植被的大小,通过随机的随放矩阵可以得到不同大小的植被,使植被的形态更加丰富。
[0148]
子步骤3064,基于所述位置矩阵、旋转矩阵和缩放矩阵,生成目标矩阵;
[0149]
在得到位置矩阵,旋转矩阵以及缩放矩阵,可以基于三个矩阵生成目标矩阵,目标矩阵中,每个栅格中可以包含位置信息、旋转信息以及缩放信息。
[0150]
子步骤3065,按照所述目标矩阵摆放预置的植被元素。
[0151]
在确定目标矩阵后,按照目标矩阵对每个栅格进行实例化,即摆放预置的植被元素。
[0152]
在一示例中,在摆放过程中可以按照每个栅格分别进行实例化,也可以将每个地图切片数据划分为n
×
n的小块,将每一块中的信息封装为一个整体数据进行实例化,提高
了实例化速度。
[0153]
在本发明实施例中,获取基于预置地图数据生成的地图切片数据,从而可以对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据,进而根据地表覆盖数据摆放植被元素,实现了在游戏场景中摆放植被元素。
[0154]
参照图4,示出了本发明一实施例提供的另一种游戏场景的构建方法的步骤流程图,具体可以包括如下步骤:
[0155]
步骤401,获取基于预置地图数据生成的地图切片数据;
[0156]
步骤402,对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;
[0157]
步骤403,根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。
[0158]
步骤404,当虚拟角在所述游戏场景中进行移动时,确定所述虚拟角的待移动位置;
[0159]
在游戏实际运行过程中,当虚拟角在游戏场景移动过程中,需要对虚拟角进行碰撞测试,从而确定虚拟角是是否可以移动。例如,当虚拟角需要移动的位置对应建筑位置,则会存在碰撞,则虚拟角不能移动到该位置,当虚拟角移动的位置为道路位置,则不存在碰撞,虚拟角可以移动到该位置。
[0160]
在构建好游戏场景后,游戏场景中的各层地表覆盖数据按照栅格上摆放的游戏场景元素进行更新。
[0161]
当虚拟角在该游戏场景中进行移动时,可以确定虚拟角的待移动位置,以便根据待移动位置进行碰撞测试,其中,碰撞测试可以包括点碰撞、三角碰撞以及矩形碰撞。
[0162]
步骤405,根据所述待移动位置处摆放的游戏场景元素,控制所述虚拟角移动。
[0163]
在确定待移动位置时,对移动位置进行查询操作,确定待移动位置处摆放的游戏场景元素,进而根据游戏场景元素确定询比角是否可移动至待移动位置。
[0164]
在一示例中,在进行碰撞测试时,将待测试对象视为一个点进行碰撞测试,则为点碰撞,将待测试对象视为一个三角形则为三角碰撞,将待测试对象视为一矩形则为矩形碰撞。
[0165]
一矩形碰撞为例,可以确定矩形所在区域,确定该区域进行扫描,将扫描数据与该区域的各层光栅数据进行且运算,确定运算结果为真的光栅层,根据该光栅层确定游戏场景元素,进而根据游戏场景元素,控制虚拟角移动。
[0166]
在实际应用中,针对已经生成的游戏场景,可以基于该游戏场景的多个光栅层合成新的光栅层,以进行碰撞测试,例如,可以合并建筑层数据和水层数据,组合得到新的光栅层数据,根据新的光栅层数据对虚拟角进行碰撞测试,即进行查询操作的位运算,从而确定虚拟角是否可以进行移动。
[0167]
在本发明实施例中,在根据光栅化的地表覆盖数据摆放游戏场景元素后,构建游戏场景,当虚拟角在游戏场景中进行移动时,避免穿模,且可以进行高性能的碰撞测试。
[0168]
需要说明的是,对于方法实施例,为了简单描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0169]
参照图5,示出了本发明一实施例提供的一种游戏场景的构建装置的结构示意图,具体可以包括如下模块:
[0170]
地图切片数据获取模块501,用于获取基于预置地图数据生成的地图切片数据;
[0171]
地表覆盖数据确定模块502,用于对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;
[0172]
游戏场景构建模块503,用于根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。
[0173]
在本发明一实施例中,所述地表覆盖数据包括建筑层数据,所述游戏场景元素包括建筑元素,所述游戏场景构建模块503可以包括:
[0174]
目标包围盒确定子模块,用于在所述建筑层数据的一个或多个建筑包围盒中确定目标包围盒;
[0175]
目标建筑元素确定子模块,用于确定待摆放到所述目标包围盒的目标建筑元素;
[0176]
判断子模块,用于根据所述目标包围盒的光栅数据判断所述目标包围盒中能否摆放所述目标建筑元素;
[0177]
建筑摆放子模块,用于在判定所述目标包围盒能摆放所述目标建筑元素时,在所述目标包围盒中摆放所述目标建筑元素。
[0178]
在本发明一实施例中,所述建筑摆放子模块可以包括:
[0179]
模型包围盒确定单元,用于确定预置的候选建筑元素的模型包围盒;
[0180]
摆放单元,用于在所述模型包围盒与目标包围盒匹配成功时,将所述候选建筑元素确定为待摆放到所述目标包围盒的目标建筑元素。
[0181]
在本发明一实施例中,所述地表覆盖数据包括植被层数据,所述游戏场景元素包括植被元素,所述游戏场景构建模块503还可以包括:
[0182]
第一植被区确定子模块,用于根据所述植被层数据确定第一植被区;
[0183]
随机植被区生成子模块,用于基于所述第一植被区,随机生成第二植被区;
[0184]
目标植被区确定子模块,用于根据所述第一植被区和所述第二植被区,得到目标植被区;
[0185]
植被构建子模块,用于在所述目标植被区中摆放预置的植被元素。
[0186]
在本发明一实施例中,所述植被构建子模块可以包括:
[0187]
位置信息确定单元,用于确定目标植被区的位置信息;
[0188]
抖动单元,用于根据所述位置信息进行抖动处理,生成位置矩阵;
[0189]
旋转和缩放单元,用于获取随机生成的旋转矩阵和缩放矩阵;
[0190]
目标矩阵确定单元,用于基于所述位置矩阵、旋转矩阵和缩放矩阵,生成目标矩阵;
[0191]
实例化单元,用于按照所述目标矩阵摆放预置的植被元素。
[0192]
在本发明一实施例中,所述装置可以包括:
[0193]
待移动位置确定模块,用于当虚拟角在所述游戏场景中进行移动时,确定所述虚拟角的待移动位置;
[0194]
碰撞测试模块,用于根据所述待移动位置处摆放的游戏场景元素,控制所述虚拟角移动。
[0195]
在本发明一实施例中,所述游戏场景构建模块503可以包括:
[0196]
地表覆盖数据选择子模块,用于从所述地表覆盖数据中确定第一地表覆盖数据和第二地表覆盖数据;
[0197]
目标地表覆盖数据生成子模块,用于根据所述第一地表覆盖数据和所述第二地表覆盖数据,生成目标地表覆盖数据;
[0198]
游戏场景构建子模块,用于根据所述目标地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。
[0199]
在本发明一实施例中,所述地表覆盖数据还包括以下任意一项或多项:
[0200]
道路层数据、水层数据。
[0201]
在本发明实施例中,通过获取基于预置地图数据生成的地图切片数据,从而可以对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据,进而可以根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景,实现了快速构建游戏场景,并可以快速获取所构建的游戏场景中的地表属性,进而可以对游戏场景中游戏角进行高性能的碰撞测试。
[0202]
本发明一实施例还提供了一种服务器,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上游戏场景的构建方法的步骤。
[0203]
本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上游戏场景的构建方法的步骤。
[0204]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0205]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0206]
本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0207]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0208]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0209]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0210]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0211]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0212]
以上对所提供的一种游戏场景的构建方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

技术特征:


1.一种游戏场景的构建方法,其特征在于,所述方法包括:获取基于预置地图数据生成的地图切片数据;对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。2.根据权利要求1所述的方法,其特征在于,所述地表覆盖数据包括建筑层数据,所述游戏场景元素包括建筑元素,所述根据所述地表属性层数据摆放预置的游戏场景元素,包括:在所述建筑层数据的一个或多个建筑包围盒中确定目标包围盒;确定待摆放到所述目标包围盒的目标建筑元素;根据所述目标包围盒的光栅数据判断所述目标包围盒中能否摆放所述目标建筑元素;在判定所述目标包围盒能摆放所述目标建筑元素时,在所述目标包围盒中摆放所述目标建筑元素。3.根据权利要求2所述的方法,其特征在于,所述确定待摆放到所述目标包围盒的目标建筑元素,包括:确定预置的候选建筑元素的模型包围盒;在所述模型包围盒与目标包围盒匹配成功时,将所述候选建筑元素确定为待摆放到所述目标包围盒的目标建筑元素。4.根据权利要求1或2或3所述的方法,其特征在于,所述地表覆盖数据包括植被层数据,所述游戏场景元素包括植被元素,所述根据所述地表属性层数据摆放预置的游戏场景元素,包括:根据所述植被层数据确定第一植被区;基于所述第一植被区,随机生成第二植被区;根据所述第一植被区和所述第二植被区,得到目标植被区;在所述目标植被区中摆放预置的植被元素。5.根据权利要求4所述的方法,其特征在于,所述在所述目标植被区中摆放预置的植被元素,包括:确定目标植被区的位置信息;根据所述位置信息进行抖动处理,生成位置矩阵;获取随机生成的旋转矩阵和缩放矩阵;基于所述位置矩阵、旋转矩阵和缩放矩阵,生成目标矩阵;按照所述目标矩阵摆放预置的植被元素。6.根据权利要求5所述的方法,其特征在于,还包括:当虚拟角在所述游戏场景中进行移动时,确定所述虚拟角的待移动位置;根据所述待移动位置处摆放的游戏场景元素,控制所述虚拟角移动。7.根据权利要求1或2或3所述的方法,其特征在于,所述根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景,包括:从所述地表覆盖数据中确定第一地表覆盖数据和第二地表覆盖数据;根据所述第一地表覆盖数据和所述第二地表覆盖数据,生成目标地表覆盖数据;根据所述目标地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。
8.根据权利要求4所述的方法,其特征在于,所述地表覆盖数据还包括以下任意一项或多项:道路层数据、水层数据。9.一种游戏场景的构建装置,其特征在于,所述装置包括:地图切片数据获取模块,用于获取基于预置地图数据生成的地图切片数据;地表覆盖数据确定模块,用于对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;游戏场景构建模块,用于根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。10.一种服务器,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至8中任一项所述的游戏场景的构建方法。11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的游戏场景的构建方法。

技术总结


本发明实施例提供了一种游戏场景的构建方法和装置,所述方法包括:获取基于预置地图数据生成的地图切片数据;对所述地图切片数据进行光栅扫描,得到光栅化的地表覆盖数据;根据所述地表覆盖数据摆放预置的游戏场景元素,以构建游戏场景。通过本发明实施例中,实现了根据光栅化的地表覆盖数据构建游戏场景,即可以摆放复杂的游戏场景元素,如不规则的古建筑,又能快速获取所构建的游戏场景中的游戏场景元素,进而实现高性能的碰撞测试。进而实现高性能的碰撞测试。进而实现高性能的碰撞测试。


技术研发人员:

林炎厚 唐忠

受保护的技术使用者:

网易(杭州)网络有限公司

技术研发日:

2022.08.26

技术公布日:

2022/11/22

本文发布于:2024-09-20 12:40:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/40.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   数据   植被   地表
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议