虚拟场景的加载方法和装置与流程

文档序号:11139007阅读:530来源:国知局
虚拟场景的加载方法和装置与制造工艺

本发明涉及虚拟应用领域,具体而言,涉及一种虚拟场景的加载方法和装置。



背景技术:

当用户使用手机等终端加载虚拟场景时,现有技术使用的方法在虚拟场景加载时把虚拟场景中的所有静态物件全部加载,这种处理方法在虚拟场景复杂度很小时,加载虚拟场景产生的负载在手机等终端上可以承受,但是在加载大规模虚拟场景时,产生的负载非常大,会造成加载卡顿的问题。

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



技术实现要素:

本发明实施例提供了一种虚拟场景的加载方法和装置,以至少解决现有技术中加载大规模虚拟场景时卡顿的技术问题。

根据本发明实施例的一个方面,提供了一种虚拟场景的加载方法,包括:检测是否需要对待加载的虚拟场景进行加载;在检测到需要对所述待加载的虚拟场景进行加载时,获取所述待加载的虚拟场景的配置文件,其中,所述配置文件用于记录虚拟场景资源块的配置数据,所述待加载的虚拟场景在二维平面上被划分为多个虚拟场景资源块;加载所述配置文件中记录的所述多个虚拟场景资源块中的目标虚拟场景资源块的配置数据。

根据本发明实施例的另一方面,还提供了一种虚拟场景的加载装置,包括:第一检测单元,用于检测是否需要对待加载的虚拟场景进行加载;获取单元,用于在所述第一检测单元检测到需要对所述待加载的虚拟场景进行加载时,获取所述待加载的虚拟场景的配置文件,其中,所述配置文件用于记录虚拟场景资源块的配置数据,所述待加载的虚拟场景在二维平面上被划分为多个虚拟场景资源块;第一加载单元,用于加载所述配置文件中记录的所述多个虚拟场景资源块中的目标虚拟场景资源块的配置数据。

在本发明实施例中,将待加载的虚拟场景在二维平面上划分为多个虚拟场景资源块,目标虚拟场景资源块为其中的一个或多个虚拟场景资源块,当需要加载虚拟场景时,仅仅加载目标虚拟场景资源块的配置数据,而不是加载整个虚拟场景的所有配置数据,大大减少了加载的数据量,因此,不会出现卡顿的问题,进而达到流畅地加载大规模虚拟场景的技术效果,进而解决了现有技术中加载大规模虚拟场景时卡顿的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的虚拟场景的加载方法的硬件环境的示意图;

图2是根据本发明实施例的一种可选的虚拟场景的加载方法的流程图;

图3是根据本发明实施例的创建游戏场景并输出游戏场景的数据的示意图;

图4是根据本发明实施例的虚拟场景为游戏场景时整体更新流程图;

图5是根据本发明实施例的虚拟场景为游戏场景时流式加载的流程图;

图6-1是根据本发明实施例的玩家在虚拟场景中所处位置的示意图;

图6-2是根据本发明实施例的以玩家为中心的9个格子在虚拟场景中所处位置的示意图;

图6-3是根据本发明实施例的以玩家为中心的25个格子在虚拟场景中所处位置的示意图;

图7是根据本发明实施例的等级划分的示意图;

图8是根据本发明实施例的虚拟场景细节的裁剪参数的示意图;

图9是根据本发明实施例的导出数据的工具的示意图;

图10是根据本发明实施例的一种可选的虚拟场景的加载装置的示意图;

图11是根据本发明实施例的一种终端的结构框图。

具体实施方式

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

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

根据本发明实施例,提供了一种虚拟场景的加载方法的实施例。

可选地,在本实施例中,上述虚拟场景的加载方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的虚拟场景的加载方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的虚拟场景的加载方法也可以是由安装在其上的客户端来执行。

图2是根据本发明实施例的一种可选的虚拟场景的加载方法的流程图,如图2所示,该方法可以包括以下步骤:

步骤S202,检测是否需要对待加载的虚拟场景进行加载。

步骤S204,在检测到需要对待加载的虚拟场景进行加载时,获取待加载的虚拟场景的配置文件,其中,配置文件用于记录虚拟场景资源块的配置数据,待加载的虚拟场景在二维平面上被划分为多个虚拟场景资源块。

步骤S206,加载配置文件中记录的多个虚拟场景资源块中的目标虚拟场景资源块的配置数据。

虚拟场景可以是游戏场景等。

在本发明实施例中,将待加载的虚拟场景在二维平面上划分为多个虚拟场景资源块,目标虚拟场景资源块为其中的一个或多个虚拟场景资源块,当需要加载虚拟场景时,仅仅加载目标虚拟场景资源块的配置数据,而不是加载整个虚拟场景的所有配置数据,大大减少了加载的数据量,因此,不会出现卡顿的问题,解决了现有技术中加载大规模虚拟场景时卡顿的技术问题,进而达到流畅地加载大规模虚拟场景的技术效果。

每个虚拟场景由多个格子组成。例如,虚拟场景地图为一个300m×300m的正方形,每个格子为一个10m×10m的正方形,每个虚拟场景由900个格子组成。现有技术在加载虚拟场景时,需要加载这900个格子,数据量非常大。在本发明实施例中,将待加载的虚拟场景在二维平面上划分为多个虚拟场景资源块,其中,每个虚拟场景资源块包括若干个格子,在需要加载虚拟场景时,从多个虚拟场景资源块中选择出目标虚拟场景资源块,仅仅加载目标虚拟场景资源块包括的若干个格子的配置数据,这就有效减少了需要加载的数据量,提高了加载速度,并且降低了对终端的要求。

目标虚拟场景资源块中有多个待加载物件。当从多个虚拟场景资源块中确定出目标虚拟场景资源块之后,从配置数据中获取目标虚拟场景资源块中每个待加载物件的配置数据;将每个待加载物件的配置数据存入到加载队列中;根据多个待加载物件在加载队列中的前后顺序,对多个待加载物件的配置数据进行加载。

由于队列具有先进先出的特点,因此,队列中位于前面位置的配置数据比位于后面位置的配置数据先加载。在将每个待加载物件的配置数据存入到加载队列中之前,可以对多个待加载物件的配置数据进行排序,根据排序结果的先后顺序将多个待加载物件的配置数据存入到加载队列。例如,假定目标虚拟场景资源块中有6个待加载物件,分别为待加载物件W1、待加载物件W2、……、待加载物件W6。这6个待加载物件对应的配置数据分别为配置数据I1、配置数据I2、……、配置数据I6。根据与游戏玩家的距离由近到远,对这6个待加载物件进行排序,排序结果为:待加载物件W2、待加载物件W6、待加载物件W3、待加载物件W1、待加载物件W4、待加载物件W5。则依次将配置数据I2、配置数据I6、配置数据I3、配置数据I1、配置数据I4、配置数据I5存入到加载队列。在进行加载时,按照配置数据I2、配置数据I6、配置数据I3、配置数据I1、配置数据I4、配置数据I5的顺序进行加载。

再例如,将待加载的虚拟场景划分成100个虚拟场景资源块,将第20个虚拟场景资源块作为目标虚拟场景资源块。目标虚拟场景资源块中有5棵树和2个建筑物(多个待加载物件)。从配置数据中获取目标虚拟场景资源块中5棵树和2个建筑物的配置数据,将获取到的5棵树和2个建筑物的配置数据存入到加载队列中,根据5棵树和2个建筑物在加载队列中的前后顺序,对5棵树和2个建筑物的配置数据进行加载。可以先将2个建筑物的配置数据存入到加载队列,再将5棵树的配置数据存入到加载队列,由于队列具有先进先出的特点,因此,队列中位于前面位置的配置数据比位于后面位置的配置数据先加载。即,先加载2个建筑物的配置数据,再加载5棵树的配置数据。

可选地,在检测是否需要对待加载的虚拟场景进行加载之前,可以创建虚拟场景并输出虚拟场景的数据。以虚拟场景为游戏场景为例,对这个过程进行说明。图3是根据本发明实施例的创建游戏场景并输出游戏场景的数据的示意图。如图3所示,该过程包括以下步骤:

步骤S302,创建游戏场景。

步骤S304,划分游戏场景的细节层次。例如,将游戏场景中的物件划分为基础显示层、建筑层和细节层。基础显示层可以是蓝天、白云、地表等。建筑层可以是较大的建筑物等。细节层可以是花、草、昆虫、小动物等。提前划分好游戏场景细节层次的意义是:方便游戏运行中根据当前的硬件性能选择显示哪些细节,保证玩家玩游戏的流畅度。

步骤S306,根据设置条件设置物件。对于不同的类型的游戏采用不同的设置条件。该设置条件可以是地图的规模、物件的摆放的稠密程度、物件的设置方向和角度等。

步骤S308,检查游戏场景是否符合设置条件。如果游戏场景符合上述设置条件,执行步骤S312;如果游戏场景不符合设置条件,执行步骤S310。

步骤S310,发出错误提示。如果游戏场景不符合设置条件,发出错误提示。在发出错误提示后,根据设置条件重新设置游戏场景中的物件。

步骤S312,导出游戏场景配置。

步骤S314,收集游戏场景物件和划分格子。即,收集游戏场景中的物件和每个物件在格子中具体位置的信息。

步骤S316,确定游戏场景配置数据输出完成。

以虚拟场景为游戏场景为例,对本发明实施例的整体更新流程进行说明。图4是根据本发明实施例的虚拟场景为游戏场景时整体更新流程图。如图4所示,该流程包括以下步骤:

步骤S402,加载游戏场景配置数据。

游戏玩家在玩游戏时,在不同的时间,可以处于不同的位置,例如,玩家在时刻T1处于位置A,在时刻T2处于位置B。位置A和位置B可以是同一个游戏场景中的不同位置,也可以是不同游戏场景中的位置。当判断出玩家所处的游戏场景之后,加载该游戏场景的配置数据。假设步骤S402中判断出玩家所处的游戏场景为游戏场景S1,那么加载游戏场景S1的配置数据。

步骤S404,检查配置合法性并解析(即检测加载的配置文件是否正确,在加载的配置文件正确的情况下,解析加载的配置文件中的物件和格子数据)。有时候,玩家能够改变配置文件,这种改变会导致信息出错。为了防止后续过程中使用错误的配置文件信息,此步骤检查配置文件的合法性,如果检查结果表明配置文件合法,对配置文件进行解析。如果检查结果表明配置文件不合法,进行异常提示。对配置文件进行解析时,解析出配置文件中的物件和格子数据。

步骤S406,根据物件和格子数据构建四叉树。游戏场景S1中包括多个格子,每个格子中包括多个物件,根据每个物件在格子中所处的位置构建四叉树。四叉树的每个节点对应一个格子。

步骤S408,根据玩家位置更新四叉树。

步骤S410,判断是否切换游戏场景。如果判断结果为是,执行步骤S414;如果判断结果为否,执行步骤S412。

玩家的位置改变有两种情况,情况一:玩家从同一个游戏场景中的一个位置变到另一个位置;情况二:玩家从一个游戏场景变到另一个游戏场景。其中,情况二是步骤S410中的切换游戏场景。如果玩家从同一个游戏场景中的一个位置变到另一个位置,那么玩家没有切换游戏场景,执行步骤S412;如果玩家从一个游戏场景变到另一个游戏场景,那么玩家切换了游戏场景,执行步骤S414。

步骤S412,玩家位置更新。如果玩家从同一个游戏场景中的一个位置变到另一个位置,那么玩家没有切换游戏场景,此时,只需要将玩家的位置进行更新,并且根据更新后的玩家位置更新四叉树。

步骤S414,清除数据。如果玩家从一个游戏场景(即上述第一游戏场景)变到另一个游戏场景(即上述第二游戏场景),那么玩家切换了游戏场景,在这种情况下,清除已经加载的第一游戏场景的配置数据,退出第一游戏场景,并加载第二游戏场景的配置数据。

步骤S416,退出游戏场景。如果玩家从一个游戏场景(即上述第一游戏场景)变到另一个游戏场景(即上述第二游戏场景),那么玩家切换了游戏场景,在这种情况下,退出第一游戏场景。

以虚拟场景为游戏场景为例,对本发明实施例的流式加载进行说明。图5是根据本发明实施例的虚拟场景为游戏场景时流式加载的流程图。如图5所示,该流程包括以下步骤:

步骤S502,玩家位置更新,遍历四叉树。当玩家位置更新后,根据更新后玩家位置更新四叉树。

步骤S504,根据上帧四叉树加载的节点筛选出需要卸载的节点数据。

步骤S506,筛选出N个叶子节点。筛选出N个叶子节点的方法可以有多种,例如,方法一:筛选出与玩家的距离在预设范围之内的格子对应的叶子节点。方法二:根据所对应的格子与玩家的距离由近到远的顺序对叶子节点进行排序,筛选出排序结果中前面一定比例的叶子节点。N的取值方法有多种,例如,可以令N取9、16、25等。需要注意的是,N还可以取其他值,不限于以上列举的几种。

步骤S508,把N个叶子节点进行排序。把N个叶子节点进行排序,可以将所对应的格子位于玩家视线的前方的叶子节点排在靠前的位置,将所对应的格子位于玩家视线的后方的叶子节点排在靠后的位置。排序遵循的原则是:越是重要的格子,其所对应的叶子节点排序越靠前;越是不重要的格子,其所对应的叶子节点排序越靠后。一般来说,位于玩家视线范围内的格子比较重要,尤其是位于玩家视线正前方的格子非常重要,位于玩家视线范围之外的格子比较不重要。

步骤S510,按照排序结果,将N个叶子节点对应的格子中所有物件有序加入加载队列。越是重要的格子,其所对应的叶子节点排序越靠前,这些重要的格子中的物件先被加入加载队列,由于队列有先进先出的性质,因此,这些先被加入加载队列的物件也是先被加载的,这就保证了重要的物件先加载、不重要的物件后加载,保证了玩家的观看体验。

步骤S512,判断是否处于加载界面。如果判断结果为是,执行步骤S516;如果判断结果为否,执行步骤S514。

加载界面是玩家从一个游戏场景切换到另一个游戏场景的界面。

步骤S514,限定当前只能加载1个物件。在玩家没有进行游戏场景切换时,即玩家的位置在同一个游戏场景中改变时,一帧只能加载1个物件,避免卡顿。

步骤S516,限定当前可以同时加载多个物件。当玩家从一个游戏场景切换到另一个游戏场景时,可以同时加载多个物件,即,一帧能加载多个物件,例如,一帧能加载10个物件。

步骤S518,按限定的数量对加载队列中的物件进行加载。即,在玩家没有进行游戏场景切换时,即玩家的位置在同一个游戏场景中改变时,按照一帧加载1个物件加载队列中的物件;当玩家从一个游戏场景切换到另一个游戏场景时,按照一帧加载多个物件加载队列中的物件。

步骤S520,判断加载队列是否为空。如果判断出是,执行步骤S522;如果判断出否,执行步骤S518。

步骤S522,确定加载完成。如果加载队列为空,则确定加载队列中的所有数据均已被加载。

本发明实施例在保证游戏场景视觉效果的前提下,对游戏场景进行空间划分,把整个游戏场景在二维平面上切分为较小的资源块,每一个块采用流式加载或卸载的策略进行处理,对包含在块里的物件再进行细节分层并按照距离远近的顺序进行加载或卸载,优化了游戏场景切分的粒度和深度,控制了数据结构的节点数量。

可选地,当构建四叉树之后,根据玩家的位置更新四叉树,其中,四叉树的每个叶子节点对应一个格子;筛选出与玩家之间的距离满足预设条件的N个格子对应的叶子节点,得到N个叶子节点;加载N个叶子节点所对应的格子中物件的配置数据。

每个虚拟场景由多个格子组成。例如,虚拟场景地图为一个150m×150m的正方形,每个格子为一个10m×10m的正方形,每个虚拟场景由225个格子组成,假设玩家在虚拟场景中所处位置为格子1,如图6-1所示。

N的取值方法有多种,例如,可以令N取9、16、25等。需要注意的是,N还可以取其他值,不限于以上列举的几种。

当N取9时,以玩家为中心的9个格子(包括玩家所处的格子)如图6-2所示。格子1为玩家所处的格子。格子1至格子9中每个格子分别对应一个叶子节点。每个格子中可以有多个物件。查找格子1至格子9中每个格子对应的叶子节点,得到9个叶子节点;其中,格子1对应的叶子节点是第1叶子节点;格子2对应的叶子节点是第2叶子节点;……;格子9对应的叶子节点是第9叶子节。按照第1叶子节点至第9叶子节点的顺序,加载9个叶子节点所对应的格子中物件的配置数据,即,加载格子1至格子9中每个格子中物件的配置数据。可选地,第2叶子节点所对应的格子位于玩家的视线的前方,即,优先加载位于玩家的视线的前方的格子中的物件的配置数据。

如果玩家视线前的物件能快速加载出来,即使玩家视线范围外的物件加载较慢,玩家也会有很好的体验,所以,快速加载玩家视线范围内的物件是非常重要的,尤其处于玩家视线正前方的格子中的物件应快速加载出来。

当N取25时,以玩家为中心的25个格子(包括玩家所处的格子)如图6-3所示。格子1为玩家所处的格子。格子1至格子25中每个格子分别对应一个叶子节点。每个格子中可以有多个物件。查找格子1至格子25中每个格子对应的叶子节点,得到25个叶子节点。其中,格子1对应的叶子节点是第1叶子节点;格子2对应的叶子节点是第2叶子节点;……;格子25对应的叶子节点是第25叶子节。按照第1叶子节点至第25叶子节点的顺序,加载25个叶子节点所对应的格子中物件的配置数据,即,加载格子1至格子25中每个格子中物件的配置数据。可选地,第2叶子节点所对应的格子位于玩家的视线的前方,即,优先加载位于玩家的视线的前方的格子中的物件的配置数据。

在现有技术中,需要加载虚拟场景中全部格子(在本例子中为225个格子)中的物件的配置数据,而在本发明实施例,只需要加载N(例如N=9、25等)个格子中的物件的配置数据,因此,需要加载的数据量大大较少,避免了加载虚拟场景时卡顿,也降低了对终端的要求。

本方案可以应用在游戏的大规模野外游戏场景中,在不影响游戏场景的视觉效果的前提下,可以大幅度减少内存的占有量、CPU和GPU开销,提高游戏性能。

使用该技术对虚拟场景的编辑,只需要在制作虚拟场景时对物件按照细节等级进行划分,例如划分为基础显示层、建筑层和细节层,按照规则摆放到对应的节点下就可以,如图7所示。虚拟场景摆放完成后,需要配置虚拟场景细节的裁剪参数,如图8所示。制作完成后导出虚拟场景物件和相对应的格子配置,在虚拟场景编辑器调用如图9所示的工具即可导出所需要的数据。

在手机上进行测试,得出现有技术中使用Unity引擎原始做法,虚拟场景在加载完成后需要943M左右的内存,加载过程需要等待36s;使用本发明实施提供的方法加载完成后需要内存244M,加载过程需要等待8s,这充分说明,使用本发明实施提供的方法使虚拟场景在配置比较低的手机上也可以流畅运行,提升了用户体验,降低了对终端的要求。

在本发明实施例中,利用导出的虚拟场景格子数据,还可以对虚拟场景进行管理。也可以只导出物件数据,然后使用该数据动态生成虚拟场景树(如四叉树和八叉树)。

本发明实施例提供的方法不仅适用于大的虚拟场景,也可以用于常规虚拟场景和小副本虚拟场景,在加载界面立即完成所有物件的加载,停止虚拟场景树的构建和更新,可以将安装包的数据量变小,并避免虚拟场景物件的重复打包。

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

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

根据本发明实施例,还提供了一种用于实施上述虚拟场景的加载方法的虚拟场景的加载装置。图10是根据本发明实施例的一种可选的虚拟场景的加载装置的示意图,如图10所示,该装置可以包括第一检测单元10、获取单元20、第一加载单元30。

第一检测单元10,用于检测是否需要对待加载的虚拟场景进行加载。

获取单元20,用于在第一检测单元10检测到需要对待加载的虚拟场景进行加载时,获取待加载的虚拟场景的配置文件,其中,配置文件用于记录虚拟场景资源块的配置数据,待加载的虚拟场景在二维平面上被划分为多个虚拟场景资源块。

第一加载单元30,用于加载配置文件中记录的多个虚拟场景资源块中的目标虚拟场景资源块的配置数据。

可选地,第一加载单元30包括获取子单元、存放子单元、第一加载子单元。

获取子单元,用于获取目标虚拟场景资源块中每个待加载物件的配置数据。存放子单元,用于将每个待加载物件的配置数据存入到加载队列中。第一加载子单元,用于加载加载队列中待加载物件的配置数据。

可选地,第一加载单元30包括更新子单元、筛选子单元、第二加载子单元。更新子单元,用于根据玩家的位置更新四叉树,其中,四叉树的每个叶子节点对应一个格子。筛选子单元,用于筛选出与玩家之间的距离满足预设条件的N个格子对应的叶子节点,得到N个叶子节点。第二加载子单元,用于加载N个叶子节点所对应的格子中物件的配置数据。

可选地,装置还包括排序单元。排序单元,用于在筛选子单元得到N个叶子节点之后,根据所对应的格子与玩家之间的相对位置,对N个叶子节点进行排序,得到第1叶子节点至第N叶子节点。第一加载单元30包括第三加载子单元。第三加载子单元,用于按照第1叶子节点至第N叶子节点的顺序,加载N个叶子节点所对应的格子中物件的配置数据。

可选地,第1叶子节点所对应的格子为玩家所处的格子,第2叶子节点所对应的格子位于玩家的视线的前方。

可选地,装置还包括判断单元、更新单元、清除单元。判断单元,用于在更新子单元根据玩家的位置更新四叉树之后,判断玩家所在的第一虚拟场景是否切换为第二虚拟场景。更新单元,用于如果判断单元判断出玩家所在的第一虚拟场景没有切换到第二虚拟场景,则更新玩家在第一虚拟场景中的位置。清除单元,用于如果判断单元判断出玩家所在的第一虚拟场景切换到第二虚拟场景,则清除已经加载的第一虚拟场景的配置数据。

可选地,装置还包括第二加载单元、第二检测单元、解析单元、构建单元。第二加载单元,用于在第一检测单元10检测是否需要对待加载的虚拟场景进行加载之前,加载目标虚拟场景的配置数据,目标虚拟场景包括待加载的虚拟场景。第二检测单元,用于检测加载的配置数据是否正确。解析单元,用于在加载的配置数据正确的情况下,解析加载的配置数据中的物件和格子数据。构建单元,用于根据解析出的物件和格子数据构建四叉树。

根据本发明实施例,还提供了一种用于实施上述虚拟场景的加载方法的服务器或终端。

图11是根据本发明实施例的一种终端的结构框图,如图11所示,该终端可以包括:一个或多个(图中仅示出一个)处理器201、存储器203、以及传输装置205(如上述实施例中的发送装置),如图11所示,该终端还可以包括输入输出设备207。

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

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

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

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

检测是否需要对待加载的虚拟场景进行加载;在检测到需要对所述待加载的虚拟场景进行加载时,获取所述待加载的虚拟场景的配置文件,其中,所述配置文件用于记录虚拟场景资源块的配置数据,所述待加载的虚拟场景在二维平面上被划分为多个虚拟场景资源块;加载所述配置文件中记录的所述多个虚拟场景资源块中的目标虚拟场景资源块的配置数据。

处理器201还用于执行下述步骤:获取所述目标虚拟场景资源块中每个待加载物件的配置数据;将所述每个待加载物件的配置数据存入到加载队列中;加载所述加载队列中所述待加载物件的配置数据。

处理器201还用于执行下述步骤:根据玩家的位置更新四叉树,其中,所述四叉树的每个叶子节点对应一个格子;筛选出与所述玩家之间的距离满足预设条件的N个格子对应的叶子节点,得到N个叶子节点;加载所述N个叶子节点所对应的格子中物件的配置数据。

处理器201还用于执行下述步骤:根据所对应的格子与所述玩家之间的相对位置,对所述N个叶子节点进行排序,得到第1叶子节点至第N叶子节点;加载所述N个叶子节点所对应的格子中物件的配置数据包括:按照所述第1叶子节点至所述第N叶子节点的顺序,加载所述N个叶子节点所对应的格子中物件的配置数据。

处理器201还用于执行下述步骤:判断所述玩家所在的第一虚拟场景是否切换为第二虚拟场景;如果判断出所述玩家所在的所述第一虚拟场景没有切换到所述第二虚拟场景,则更新所述玩家在所述第一虚拟场景中的位置;如果判断出所述玩家所在的所述第一虚拟场景切换到所述第二虚拟场景,则清除已经加载的所述第一虚拟场景的配置数据。

处理器201还用于执行下述步骤:加载目标虚拟场景的配置数据,所述目标虚拟场景包括所述待加载的虚拟场景;检测加载的所述配置数据是否正确;在加载的所述配置数据正确的情况下,解析加载的所述配置数据中的物件和格子数据;根据解析出的物件和格子数据构建四叉树。

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

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

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

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行虚拟场景的加载方法的程序代码。

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

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

S1,检测是否需要对待加载的虚拟场景进行加载;

S2,在检测到需要对所述待加载的虚拟场景进行加载时,获取所述待加载的虚拟场景的配置文件,其中,所述配置文件用于记录虚拟场景资源块的配置数据,所述待加载的虚拟场景在二维平面上被划分为多个虚拟场景资源块;

S3,加载所述配置文件中记录的所述多个虚拟场景资源块中的目标虚拟场景资源块的配置数据。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:获取所述目标虚拟场景资源块中每个待加载物件的配置数据;将所述每个待加载物件的配置数据存入到加载队列中;加载所述加载队列中所述待加载物件的配置数据。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:根据玩家的位置更新四叉树,其中,所述四叉树的每个叶子节点对应一个格子;筛选出与所述玩家之间的距离满足预设条件的N个格子对应的叶子节点,得到N个叶子节点;加载所述N个叶子节点所对应的格子中物件的配置数据。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:根据所对应的格子与所述玩家之间的相对位置,对所述N个叶子节点进行排序,得到第1叶子节点至第N叶子节点;加载所述N个叶子节点所对应的格子中物件的配置数据包括:按照所述第1叶子节点至所述第N叶子节点的顺序,加载所述N个叶子节点所对应的格子中物件的配置数据。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:判断所述玩家所在的第一虚拟场景是否切换为第二虚拟场景;如果判断出所述玩家所在的所述第一虚拟场景没有切换到所述第二虚拟场景,则更新所述玩家在所述第一虚拟场景中的位置;如果判断出所述玩家所在的所述第一虚拟场景切换到所述第二虚拟场景,则清除已经加载的所述第一虚拟场景的配置数据。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:加载目标虚拟场景的配置数据,所述目标虚拟场景包括所述待加载的虚拟场景;检测加载的所述配置数据是否正确;在加载的所述配置数据正确的情况下,解析加载的所述配置数据中的物件和格子数据;根据解析出的物件和格子数据构建四叉树。

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

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

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

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

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

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

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

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

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

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1