具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本申请一个实施例的虚拟地图中的瓦片地图生成方法流程图。图1的方法由虚拟地图中的瓦片地图生成装置执行。在具体的应用中,该虚拟地图中的瓦片地图生成装置可以是虚拟地图的图形引擎,例如2D图形引擎、3D图形引擎等,或者是其它虚拟地图绘制工具,等等,本申请实施例在此不做限制。具体地,该虚拟地图可以是2D地图,或3D地图。图1的方法可包括:
S110,根据真实电子地图与虚拟地图之间的缩放关系,确定该虚拟地图的地图区域。
应理解,本申请实施例的真实电子地图,是指如百度地图、高德地图等对真实环境进行绘制的电子地图。
应理解,本申请实施例的虚拟地图,是指虚拟应用中的地图,例如虚拟地图等等。
应理解,在本申请实施例中,可根据真实电子地图与虚拟地图之间的缩放关系,确定虚拟地图的大小。
例如,假设虚拟地图为虚拟地图,且规定真实电子地图与虚拟地图的关系是2:1,则可将真实电子地图的长和宽分别缩小一半,从而确定虚拟地图的大小。
S120,将该地图区域分割成多个大小相等的瓦片区域。
具体地,可将该地图区域分成多个大小相等的瓦片区域。
优选地,该瓦片区域可以是矩形,例如,10cm*10cm,5cm*5cm,4cm*2cm,等等。应理解,瓦片区域的长和宽可以不要求相等。当然,优选地,瓦片区域的长和宽相等。
当然,应理解,瓦片区域的形状还可以是其它的形状,例如,菱形、正六边形等等。此时,在虚拟地图的边缘可能不是平整的直线。
S130,根据每个瓦片区域在该真实电子地图中对应的区域的地图对所述每个瓦片区域进行包括图像处理操作,生成每个瓦片区域的瓦片地图。
其中,该图像处理操作包括渲染处理。
例如,假设真实电子地图为某个大学的校园形成的电子地图,按照虚拟地图中每个瓦片区域在该大学对应的电子地图中对应的区域地图,分别对每个瓦片区域进行渲染处理,可生成每个瓦片区域的瓦片地图。
当然,应理解,除了根据电子地图对虚拟地图进行渲染处理外,还可进行其它的图像处理操作,本申请实施例在此不作限制。
在本申请实施例中,基于真实电子地图确定虚拟地图的区域,并将虚拟地图分割成多个大小相等的瓦片区域,并基于瓦片区域在真实电子地图对应的区域地图对瓦片区域进行渲染处理,从而能够迅速根据真实电子地图生成虚拟地图的瓦片地图,提高了虚拟地图的生成效率。
可选地,在本申请实施例中,步骤S130具体实现为:根据该瓦片区域的大小和该多个大小相等的瓦片区域中第一瓦片区域的索引,确定该第一瓦片区域在该真实电子地图中对应的第一真实区域地图,根据该第一真实区域地图对该第一瓦片区域进行该图像处理,得到该第一瓦片区域对应的第一瓦片地图。
其中,每个该瓦片区域的索引与该瓦片区域的位置相关。具体地,例如,该瓦片区域的索引可以是该瓦片区域中指定位置的点的坐标。比如,当该瓦片区域为矩形时,该坐标可以是瓦片区域的中心点坐标,瓦片区域的左下顶点坐标、左上顶点坐标、右上顶点坐标或右下顶点坐标,等等。或者,该索引还可以是瓦片区域的编号,等等。
当然,应理解,在步骤S130之前,该方法还包括:根据瓦片区域的位置建立瓦片区域的索引。
下面,将结合图2、图3,对本申请实施例的方法做进一步的描述。
在本申请实施例中,当准备基于一个真实电子地图生成虚拟地图时,可根据真实电子地图和虚拟地图的缩放关系,确定虚拟地图的区域大小。特别地,当该虚拟地图为3D虚拟地图时,由于3D虚拟地图的大小一般是不变的,因此真实电子地图和3D虚拟地图的缩放比例一般是一个固定值。
当根据真实电子地图和缩放关系确定虚拟地图的区域后,可将虚拟地图划分成多个大小相等的矩形区域,每个矩形区域为一个瓦片地图的大小,一个矩形区域可称为一个瓦片区域。图2为本申请一个实施例瓦片地图的区域划分及坐标示意图。不妨假设图2所示的整个区域为基于真实电子地图确定的虚拟地图的全部区域,如图2所示,可将虚拟地图划分成多个大小相等的瓦片区域。此外,还可根据瓦片区域的位置为每个瓦片区域建立索引。例如,可以用坐标表示瓦片区域的索引,或者,用顺序编号表示瓦片区域的索引,等等。在图2所示实施例中,以一个瓦片区域的长度作为横坐标的计量单位,以一个瓦片区域的宽度作为纵坐标的计量单位。
当完成瓦片区域划分并建立索引后,可基于真实电子地图进行包括渲染处理在内的图像处理,得到瓦片地图。图3为本申请一个实施例的虚拟地图中的瓦片地图生成方法示意图。如图3所示,首先需要对瓦片区域进行图层初始化:具体地,可通过缩放等级确定真实电子地图对应的虚拟地图的区域,再对虚拟地图的区域进行瓦片区域划分;另外,在对瓦片区域进行图层初始化时,一般还可初始化瓦片区域的图层样式,例如,道路的颜色、是否显示建筑物,等等。为便于区分和定位瓦片区域,还可对瓦片区域进行索引。
当完成瓦片区域的图层初始化后,可根据瓦片区域的索引及每个瓦片区域的大小,计算瓦片区域在真实电子地图对应的真实区域。如图2所示,瓦片区域在二维平面上邻接排列,所有瓦片区域尺寸一致。根据各个瓦片区域的索引,可确定瓦片区域的二维坐标(或者瓦片区域的索引就是二维坐标),再根据瓦片区域的大小,可确定每个瓦片区域所覆盖的矩形区域的经纬度,即确定瓦片区域在真实电子地图对应的真实区域。
在得到瓦片区域在真实电子地图对应的真实区域后,可根据该真实区域的地图对瓦片区域的图层进行处理,例如,可调用第三方地图API(如Google地图),根据真实区域的地图渲染出该瓦片区域的地图图片,最后保存图片,得到瓦片地图。瓦片地图可以采用瓦片区域的索引作为瓦片地图的索引。
当然,应理解,瓦片区域也可以是其它的形状,例如,菱形,正六边形等等。当形状发生变化时,根据索引和瓦片区域大小计算真实地图区域的算法也会适应性发生改变。
图4为本申请一个实施例的虚拟地图中的瓦片地图更新方法流程图。图4的方法由虚拟地图绘制装置执行。在具体的应用中,该虚拟地图绘制装置可以是图形引擎,例如2D图形引擎、3D图形引擎等,或者是其它虚拟地图绘制工具,等等,本申请实施例在此不做限制。应理解,本申请实施例的虚拟地图,可以是虚拟地图,例如3D虚拟地图,或2D虚拟地图,等等,或者是其它虚拟应用的地图,等等。图4的方法可包括:
S410,在第一区域中确定虚拟对象所在的中心区域。
其中,该第一区域是该虚拟对象所在的虚拟地图中已经加载的瓦片地图构成的区域地图,该中心区域的边界位于该第一区域的内部,该中心区域的任一个瓦片地图与该虚拟对象在该虚拟地图的瓦片地图坐标系的横坐标轴方向的最大距离小于X1,与该虚拟对象在该瓦片地图坐标系的纵坐标轴的最大间距小于Y1,该瓦片地图坐标系的横坐标轴以一个瓦片地图的长度为单位,该瓦片地图坐标系的纵坐标轴以一个瓦片地图的宽度为单位,X1,Y1为预设的正整数。
应理解,在本申请实施例中,对该虚拟对象的具体形态不做限制。以3D游戏为例,例如,该虚拟对象可以是3D游戏中的人物,或者该虚拟对象可以是3D游戏中的人物所驾驶的车辆,等等。
应理解,在本申请实施例中,各个瓦片地图的尺寸大小应该是相等地。
应理解,在本申请实施例中,该已经加载的第一区域的范围应覆盖该虚拟对象的视野范围,也就是说,该虚拟对象的视野范围内的瓦片地图都应被加载。在本申请实施例中,该第一区域最少应由该虚拟对象的视野范围内的瓦片地图组成。当然,应理解,该第一区域的范围也可以大于该虚拟对象的视野范围。
应理解,在本申请实施例中,该瓦片地图坐标系的横坐标轴以一个瓦片地图的长度为单位,该瓦片地图坐标系的纵坐标轴以一个瓦片地图的宽度为单位。图5是本申请的一个实施例虚拟地图中的瓦片地图在瓦片地图坐标系的示意图。如图5所示,每个矩形局域为一个瓦片地图,该瓦片地图坐标系的横坐标轴(X轴)以瓦片地图的长度为单位,该瓦片地图坐标系的纵坐标轴(Y轴)以瓦片地图的宽度为单位。
此外,瓦片地图还可以采用位置坐标作为索引。例如,在图5所示的瓦片地图坐标系中,以其在左下顶点的坐标作为瓦片地图的索引。
S420,在该虚拟对象移动出该中心区域后,确定距离参数,并根据该距离参数和该第一区域,更新该第一区域和第二区域中不共有的瓦片地图的加载状态。
其中,该距离参数表示该虚拟对象所在的瓦片地图相对于该中心区域在该瓦片地图坐标系的横坐标轴方向和纵坐标方向的相对距离,该第二区域为将该第一区域按照该距离参数进行移动后确定的地图区域。
应理解,该第二区域为将该第一区域按照该距离参数进行移动后确定的地图区域,因此,该第一区域和该第二区域形状相同且面积相等。以图2为例,假设第一区域为(2,0)与(1,1)构成的矩形区域,距离参数表示向右移动一个瓦片地图,则第二区域为(2,1)与(1,2)构成的矩形区域,与第一区域形状相同,面积相等。
应理解,该第一区域和第二区域中不共有的瓦片地图,是指第一区域和第二区域的瓦片地图中,只存在于第一区域或只存在于第二区域的瓦片地图。
在本申请实施例中,通过在虚拟对象移动出虚拟对象所在的中心区域之后,根据虚拟对象移动后的瓦片地图相对于中心区域的距离参数,以及当前加载的瓦片地图,确定需要更新加载状态的瓦片地图,从而能够避免冗余的瓦片地图的加载,并实现瓦片地图的无缝衔接,在一定程度上提高了虚拟地图的显示效率和体验效果。
可选地,作为一个实施例,步骤S420中确定距离参数具体可实现为如下方法:
当在该虚拟对象移动到该中心区域的正右方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(1,0);或者
当在该虚拟对象移动到该中心区域的右上方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(1,1);或者
当在该虚拟对象移动到该中心区域的正上方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(0,1);或者
当在该虚拟对象移动到该中心区域的左上方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(-1,1);或者
当在该虚拟对象移动到该中心区域的正左方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(-1,0);或者
当在该虚拟对象移动到该中心区域的左下方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(-1,-1);或者
当在该虚拟对象移动到该中心区域的正下方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(0,-1);或者
当在该虚拟对象移动到该中心区域的右下方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(1,-1);
其中,该瓦片地图坐标系向右为横坐标系的正方向,向上为纵坐标系的正方向。
应理解,在本申请实施例中,距离参数为(a,b)表示向右移动a个瓦片地图,并向上移动b个瓦片地图,其中,a,b为整数。a、b取值为负数时表示反方向移动,为0时表示不移动。
可选地,作为另一个实施例,步骤S420中确定距离参数具体可实现为如下方法:
确定第二中心区域,其中,在所述虚拟对象移动出所述中心区域后,所述第二中心区域的任一个瓦片地图与所述虚拟对象所在的瓦片地图在所述虚拟地图的瓦片地图坐标系的横坐标轴方向的最大距离小于X1,与所述虚拟对象所在的瓦片地图在所述瓦片地图坐标系的纵坐标轴的最大间距小于Y1;
确定第二中心区域相对于所述中心区域在所述瓦片地图坐标系的横坐标轴方向和纵坐标方向的相对距离为所述距离参数。
可选地,作为一个实施例,步骤420具体实现为:在该虚拟对象移动出该中心区域且持续时间超过预定时间后,确定该距离参数,并根据该距离参数和该第一区域,更新该第一区域和第二区域中不共有的瓦片地图的加载状态。
在本申请实施例中,通过在虚拟对象移动出中心区域超过预定时间后再更新瓦片地图,从而避免虚拟对象短时间内在临界区域之间移动而导致瓦片地图的频繁更新。
可选地,作为一个实施例,在步骤420中,更新该第一区域和第二区域中不共有的瓦片地图的加载状态具体实现为:加载第二区域相对于该第一区域增加的瓦片地图并移除该第二区域相对于该第一区域减少的瓦片地图。
在本申请实施例中,通过移除不再需要显示的瓦片地图,并加载需要显示的瓦片地图,从而能够提高瓦片地图的加载效率,并实现瓦片地图的无缝衔接,在一定程度上提高了虚拟地图的显示效率和体验效果。
可选地,作为一个实施例,在步骤420中,根据所述距离参数和所述第一区域,更新所述第一区域和第二区域中不共有的瓦片地图的加载状态具体实现为:
根据该距离参数和该第一区域中瓦片地图的索引,确定需要更新的瓦片地图的索引;
根据该需要更新的瓦片地图的索引,更新该虚拟对象在该虚拟地图中的瓦片地图的加载状态。
优选地,X1与Y1的值相等。进一步地,X1取值可以为1、2、3、4、5等。
可选地,该第一区域中的任一个瓦片地图与该虚拟对象所在的瓦片地图在横坐标轴的最大间距小于该第一单位长度的X2倍,与该虚拟对象所在的瓦片地图在纵坐标轴的最大间距小于该第二单位长度的Y2倍,X2、Y2为正整数且X1<X2且Y1<Y2。优选地,该第一区域和该中心区域都为矩形。进一步地,Y2=Y1+1,且X2=X1+1。此时,在中心区域的外围向上下左右各扩展1个瓦片地图,形成的新的矩形区域即为第一区域。
例如,当X1、Y1取值为1时,X2、Y2取值为2。此时虚拟对象加载的瓦片地图为九宫格,虚拟对象始终位于九宫格的中心。
又例如,当X1、Y1取值为2时,X2、Y2取值为3。此时虚拟对象加载的瓦片地图为十六宫格,虚拟对象始终位于十六宫格的中心四个瓦片地图中。
又例如,当X1、Y1取值为3时,X2、Y2取值为4。此时虚拟对象加载的瓦片地图为二十五宫格,虚拟对象始终位于二十五宫格的中心九个瓦片地图中。
可选地,作为一个实施例,在步骤S420之前,该方法还包括:根据该虚拟对象对应的真实对象在真实环境中的经纬度坐标,确定该虚拟对象在该虚拟地图对应的地图坐标,其中,该虚拟地图是基于真实电子地图生成的。
例如,假设一个游戏是以全球的电子地图作为虚拟地图,则当用户在北京天安门广场登录游戏时,其经纬度坐标为东经:116°23′17〃,北纬:39°54′27〃。此时,用户在游戏中的位置为真实电子地图中(东经:116°23′17〃,北纬:39°54′27〃)的位置在虚拟地图中对应的位置。
根据虚拟对象对应的真实对象在真实环境中的经纬度坐标确定虚拟对象在该虚拟地图对应的地图坐标后,可确定虚拟对象在虚拟应用中的初始位置,还可确定虚拟对象是否移动出当前的中心区域的范围。
可选地,作为一个实施例,在步骤S420之前,该方法还包括:根据该虚拟对象对应的真实对象在真实环境中的移动方向和移动距离,确定该虚拟对象在该虚拟地图对应的移动方向和移动距离,其中,该虚拟地图时基于真实电子地图生成的。
例如,还是假设一个游戏是以全球的电子地图作为虚拟地图,用户当前在北京天安门广场,其经纬度坐标为东经:116°23′17〃,北纬:39°54′27〃,对应的虚拟地图的坐标位置为(x0,y0)。假设用户向西移动了50公里,1公里在虚拟地图中对应的距离为1cm,且虚拟地图的方向为上北下南左西右东,则此时,用户可确定虚拟对象的位置为虚拟地图的坐标(x0,y0)向左移动50cm后对应的位置。
根据虚拟对象在虚拟地图的当前位置、移动距离及移动方向,可确定移动后的位置,从而确定虚拟对象是否移动出当前的中心区域的范围。
下面,将结合具体的实施例,对本申请实施例的方法作进一步的描述。
图6为本申请的一个实施例的虚拟地图中的部分瓦片地图的坐标示意图。在图6中,玩家人物加载的瓦片地图灰色区域部分的九宫格。在图6所示实施例中,以瓦片地图上在虚拟地图的二维坐标作为瓦片地图的索引。其中,瓦片地图在虚拟地图上的二维坐标,可以是瓦片地图的中心坐标,或者是瓦片地图的某个顶点的坐标,或者是瓦片地图上固定的某个位置的坐标,等等。
图4所示实施例中的X1、Y1在图6所示的场景中取值为1时,X2、Y2在图6所示的场景中取值为2。此时,虚拟对象的第一区域包括(1,1)至(3,3)的瓦片地图,虚拟对象的中心区域包括(2,2)的瓦片地图。应理解,在虚拟对象在中心区域内移动时,需要更新瓦片地图;当虚拟对象移动出中心区域时,需要更新瓦片地图。
如图6的箭头A所示,当虚拟对象从中心区域即瓦片地图(2,2)移动进入瓦片地图(2,3)时,可确定距离参数为(0,1)。此时,虚拟对象需要加载的瓦片地图的坐标为(1,2)至(3,4)的瓦片地图。也就是说,需要更新(1,1)至(3,3)的瓦片地图和(1,2)至(3,4)的瓦片地图中二者不共有的瓦片地图的加载状态,即确定需要更新加载状态的瓦片地图的坐标索引为(1,1)至(3,1)和(1,4)至(3,4)。其中,需要移除(1,1)至(3,1)的瓦片地图,并加载(1,4)至(3,4)的瓦片地图。
如图6的箭头B所示,当虚拟对象从瓦片地图(2,2)移动进入瓦片地图(3,1)时,可确定距离参数为(1,-1)。此时,虚拟对象需要加载的瓦片地图的坐标为(2,0)至(4,2)的瓦片地图。也就是说,需要更新(2,0)至(4,2)的瓦片地图和(1,1)至(3,3)的瓦片地图中二者不共有的瓦片地图的加载状态,即需要更新(2,0)、(3,0)、(4,0)、(4,1)、(4,2)的瓦片地图和(1,1)、(1,2)、(1,3)、(2,3)、(3,3)的瓦片地图的加载状态,移除(1,1)、(1,2)、(1,3)、(2,3)、(3,3)的瓦片地图,加载(2,0)、(3,0)、(4,0)、(4,1)、(4,2)的瓦片地图。
当然,应理解,虚拟对象还可以从(2,2)的瓦片地图往九宫格的其它6个方向移动,其移动的距离参数如图4所示实施例的距离参数所示,本申请实施例在此不再赘述。
此外,应理解,为避免频换切换导致地图频繁刷新,还可设定一个预定时间,当虚拟对象移动出中心区域超过该预定时间后,再进行瓦片地图的更新。这样可以避免频繁切换地图导致的频繁刷新,提高用户体验。
当然,应理解,在实际的应用中,也可以采用其它索引作为瓦片地图的索引。例如,根据坐标确定的一个数值索引,等等。在一个具体的例子中,瓦片地图坐标为(x0,y0),其数值索引为a*x0+b*y0。
此外,应理解,虚拟对象的中心区域可包括多于1块的瓦片地图。例如,当X1、Y1取值为2时,X2、Y2取值为3。中心区域为4个瓦片地图,需要加载的瓦片地图构成16宫格。与九宫格类似,在16宫格中,也可将中心区域以外的区域分成8个区域,分别对应正右、右上、正上、左上、正左、左下、正下、右下8个方向,其移动后的距离参数的计算方式与九宫格类似。
此外,中心区域在纵坐标方向和横坐标方向构成的瓦片地图的个数可以不相等。例如,X1取值为1、Y1取值为2,X2、Y2取值为3,等等。
另外,本申请实施例对虚拟对象加载的瓦片地图构成的第一区域的形状也不做限制,只要包括虚拟对象的中心区域且中心区域不在第一区域的边缘即可。优选地,该第一区域和该中心区域都为矩形。
例如,在图6的所示的瓦片地图中,该第一区域可包括灰色区域的九宫格和(4,0)至(4,4)的瓦片地图构成的区域。
在确定需要更新的区域时,只需要将该第一区域按照距离参数移动得到的第二区域和第一区域进行比对,更新二者不共有的区域的瓦片地图的加载状态。
在一种优选的方案中,该第一区域为在中心区域的四周向外各扩展一个瓦片地图的距离构成的区域。
另外,应理解,在本申请实施例的方法中,还可将用户在真实环境中的位置信息与虚拟对象在虚拟地图中的位置信息建立关联关系。
在一个具体的例子中,可根据真实电子地图生成虚拟地图,然后根据该虚拟对象对应的真实对象在真实环境中的经纬度坐标,确定该虚拟对象在该虚拟地图对应的地图坐标。应理解,根据真实电子地图生成的虚拟地图,必然与真实环境的经纬度存在着对应关系。
例如,假设虚拟地图为3D游戏地图,虚拟对象为3D游戏中的游戏人物,地图原点与真实电子地图中对应的经纬度坐标对应,即(0,0)对应经纬度(O-lat,O-lng)。假设3D图形引擎中瓦片地图的长宽分别为w、h,瓦片实际覆盖的经纬度分别为d-lat、d-lng,如图7所示。图7是本申请实施例虚拟地图坐标与真实电子地图经纬度坐标的映射关系示意图。
则若当前用户在真实环境中的经纬度为(x,y),可得用户对应的游戏人物所在瓦片地图的坐标索引为:
进一步可得到游戏人物在3D图形引擎中的坐标(忽略z轴)为:
相应地,也能根据游戏人物在3D图形引擎中的坐标,计算出用户在真实环境中的经纬度。
此外,应理解,在本申请实施例的方法中,还可将用户在真实环境中的动作与虚拟对象的动作关联起来。
在一个具体的例子中,可根据该虚拟对象对应的真实对象在真实环境中的动作参数,确定该虚拟对象在该虚拟地图对应的动作参数并对虚拟对象进行操作。具体地,该动作参数可以与用户的手、脚、头、躯干等部位的移动相关的参数。例如,可通过传感器等捕捉用户在真实环境中的手臂摆动距离、手臂摆动速度、抬腿角度、抬腿方向、抬腿速度,等等。当然,也可通过传感器采集简单一点的数据,例如用户的移动距离、移动方向、移动速度等等。
当然,应理解,上述根据经纬度坐标确定虚拟地图坐标和根据真实环境的动作参数确定虚拟对象在虚拟地图的动作参数的方法可以应用在同一个实施例中。通过融合用户的经纬度、动作参数数据后,虚拟对象和用户自身保持了良好的一致性,使得用户的虚拟体验更加真实。
图8示出了根据本申请的一示例性实施例的电子设备的示意结构图。请参考图8,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成用户界面解锁的装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
图9是本申请实施例的虚拟地图绘制装置900的结构示意图。请参考图9,在软件实施方式中,虚拟地图绘制装置900可包括确定单元901和更新单元902,其中,
确定单元901在第一区域中确定虚拟对象所在的中心区域,其中,该第一区域是该虚拟对象所在的虚拟地图中已经加载的瓦片地图构成的区域地图,该中心区域的边界位于该第一区域的内部,该中心区域的任一个瓦片地图与该虚拟对象在该虚拟地图的瓦片地图坐标系的横坐标轴方向的最大距离小于X1,与该虚拟对象在该瓦片地图坐标系的纵坐标轴的最大间距小于Y1,该瓦片地图坐标系的横坐标轴以一个瓦片地图的长度为单位,该瓦片地图坐标系的纵坐标轴以一个瓦片地图的宽度为单位,X1,Y1为预设的正整数。
确定单元901还在该虚拟对象移动出该中心区域后,确定距离参数,其中,该距离参数表示该虚拟对象所在的瓦片地图相对于该中心区域在该瓦片地图坐标系的横坐标轴方向和纵坐标方向的相对距离。
更新单元902根据该距离参数和该第一区域,更新该第一区域和第二区域中不共有的瓦片地图的加载状态,其中,该第二区域为将该第一区域按照该距离参数进行移动后确定的地图区域。
在本申请实施例中,通过在虚拟对象移动出虚拟对象所在的中心区域之后,根据虚拟对象移动后的瓦片地图相对于中心区域的距离参数,以及当前加载的瓦片地图,确定需要更新加载状态的瓦片地图,从而能够避免冗余的瓦片地图的加载,并实现瓦片地图的无缝衔接,在一定程度上提高了虚拟地图的显示效率和体验效果。
可选地,确定单元901具体用于:
当在该虚拟对象移动到该中心区域的正右方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(1,0);或者
当在该虚拟对象移动到该中心区域的右上方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(1,1);或者
当在该虚拟对象移动到该中心区域的正上方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(0,1);或者
当在该虚拟对象移动到该中心区域的左上方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(-1,1);或者
当在该虚拟对象移动到该中心区域的正左方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(-1,0);或者
当在该虚拟对象移动到该中心区域的左下方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(-1,-1);或者
当在该虚拟对象移动到该中心区域的正下方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(0,-1);或者
当在该虚拟对象移动到该中心区域的右下方,且与该中心区域相邻的瓦片地图时,确定该距离参数为(1,-1);
其中,距离参数(a,b)表示向右移动a个瓦片地图,向上移动b个瓦片地图,x、y为整数。
应理解,在本申请实施例中,距离参数为(a,b)表示向右移动a个瓦片地图,并向上移动b个瓦片地图,其中,a,b为整数。a、b取值为负数时表示反方向移动,为0时表示不移动。
可选的,更新单元902具体用于:在该虚拟对象移动出该中心区域且持续时间超过预定时间后,确定该距离参数,并根据该距离参数和该第一区域,更新该第一区域和第二区域中不共有的瓦片地图的加载状态。
可选的,更新单元902具体用于:加载该第二区域相对于该第一区域增加的瓦片地图并移除该第二区域相对于该第一区域减少的瓦片地图。
可选地,更新单元902具体用于:根据该距离参数和该第一区域中瓦片地图的索引,确定需要更新的瓦片地图的索引;根据该需要更新的瓦片地图的索引,更新该虚拟对象在该虚拟地图中的瓦片地图的加载状态。
优选地,X1与Y1的值相等。进一步地,X1取值为1、2、3、4、5。
可选地,该第一区域中的任一个瓦片地图与该虚拟对象所在的瓦片地图在横坐标轴的最大间距小于该第一单位长度的X2倍,与该虚拟对象所在的瓦片地图在纵坐标轴的最大间距小于该第二单位长度的Y2倍,X2、Y2为正整数且X1<X2且Y1<Y2。优选地,该第一区域和该中心区域都为矩形。进一步地,Y2=Y1+1,且X2=X1+1。此时,在中心区域的外围向上下左右各扩展1个瓦片地图,形成的新的矩形区域即为第一区域。
可选地,确定单元901还根据该虚拟对象对应的真实对象在真实环境中的经纬度坐标,确定该虚拟对象在该虚拟地图对应的地图坐标,其中,该虚拟地图是基于真实电子地图生成的。
可选地,确定单元901还根据该虚拟对象对应的真实对象在真实环境中的动作参数,确定该虚拟对象在该虚拟地图对应的动作参数并对该虚拟对象进行操作。
虚拟地图绘制装置900还可执行图4的方法,并实现虚拟地图绘制装置或图形引擎等在图4、图6所示实施例的功能,本申请实施例在此不再赘述。
图10是本申请实施例的虚拟地图绘制装置1000的结构示意图。请参考图10,在软件实施方式中,虚拟地图绘制装置1000可包括确定单元1001、区域划分单元1002和图像处理单元1003,其中,
确定单元1001,根据真实电子地图与虚拟地图之间的缩放关系,确定该虚拟地图的地图区域;
区域划分单元1002,将该地图区域分割成多个大小相等的瓦片区域;
图像处理单元1003,根据每个该瓦片区域在该真实电子地图中对应的区域地图对该每个该瓦片区域进行图像处理,生成每个该瓦片区域的瓦片地图,该图像处理包括渲染处理。
在本申请实施例中,基于真实电子地图确定虚拟地图的区域,并将虚拟地图分割成多个大小相等的瓦片区域,并基于瓦片区域在真实电子地图对应的区域地图对瓦片区域进行渲染处理,从而能够迅速根据真实电子地图生成虚拟地图的瓦片地图,提高了虚拟地图的生成效率。
可选地,确定单元1001还根据该瓦片区域的大小和该多个大小相等的瓦片区域中第一瓦片区域的索引,确定该第一瓦片区域在该真实电子地图中对应的第一真实区域地图;该图像处理单元1003还根据该第一真实区域地图对该第一瓦片区域进行该图像处理,得到该第一瓦片区域对应的第一瓦片地图。
当然,应理解,区域划分单元1002还可为该多个大小相等的瓦片区域中每个瓦片区域建立索引。
虚拟地图绘制装置1000还可执行图1的方法,并实现虚拟地图绘制装置或图形引擎等在图1、图2所示实施例的功能,本申请实施例在此不再赘述。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。