【技术实现步骤摘要】
基于OpenGL的瓦片地图创建方法及装置
本专利技术涉及瓦片地图
,具体涉及一种基于OpenGL的瓦片地图创建方法及装置。
技术介绍
目前,越来越多的地图服务用到瓦片地图技术,例如现在我国实行发布的天地图服务就运用了瓦片地图技术。瓦片地图技术基于瓦片地图金字塔模型,瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变。瓦片地图金字塔模型的构建原理是:首先确定地图服务平台所要提供的缩放级别的数量N,把缩放级别最低、地图比例尺最大的地图图片作为金字塔的底层,即第O层,并对其进行切片,从地图图片的左上角开始,从左至右、从上到下进行切割,分割成相同大小(比如256x256像素)的正方形地图瓦片,形成第O层瓦片矩阵;在第O层地图图片的基础上,按每2x2像素合成为一个像素的方法生成第I层地图图片,并对其进行切片,分割成与下一层相同大小的正方形地图瓦片,形成第I层瓦片矩阵;采用同样的方法生成第2层瓦片矩阵;以此类推,直到第N — I层,构成整个瓦片金字塔。目前,利用传统技术开发的瓦片地图的移植性较差,不支持跨平台运行,比如,例如,一些经典的瓦片地图游戏(例如超级玛丽、魂斗罗等)只能运行在红白机上,无法移植到智能设备(例如手机、平板电脑等)运行。
技术实现思路
本专利技术提供一种基于OpenGL的瓦片地图创建方法及装置,用于提高瓦片地图的可移植性。本专利技术第一方面提供一种基于OpenGL的瓦片地图创建方法,包括:获取瓦片地图文件;根据所述瓦片地图文件计算各个瓦片的3D模型坐标;将所述各个瓦片的图片转化 ...
【技术保护点】
一种基于OpenGL的瓦片地图创建方法,其特征在于,包括:获取瓦片地图文件;根据所述瓦片地图文件计算各个瓦片的3D模型坐标;将所述各个瓦片的图片转化为纹理图片;计算所述各个瓦片的纹理图片的坐标;根据所述各个瓦片的3D模型坐标、纹理图片以及纹理图片的坐标,调用所述OpenGL的渲染函数分别对所述各个瓦片进行渲染,生成包含所述各个瓦片的瓦片地图。
【技术特征摘要】
1.一种基于OpenGL的瓦片地图创建方法,其特征在于,包括: 获取瓦片地图文件; 根据所述瓦片地图文件计算各个瓦片的3D模型坐标; 将所述各个瓦片的图片转化为纹理图片; 计算所述各个瓦片的纹理图片的坐标; 根据所述各个瓦片的3D模型坐标、纹理图片以及纹理图片的坐标,调用所述OpenGL的渲染函数分别对所述各个瓦片进行渲染,生成包含所述各个瓦片的瓦片地图。2.根据权利要求1所述的方法,其特征在于, 所述瓦片地图文件包括如下信息:瓦片的朝向信息、瓦片地图的宽度信息、瓦片地图的高度信息、瓦片地图包含的所有瓦片集的属性信息,瓦片地图包含的所有层的属性信息; 所述根据所述瓦片地图文件计算各个瓦片的3D模型坐标包括: 针对瓦片地图的每层,进行如下计算: 根据所述瓦片的 朝向信息,确定本层的第一块瓦片的左下角顶点坐标; 根据所述瓦片的朝向 信息、所述瓦片地图的宽度信息、所述瓦片地图的高度信息,以及所述第一块瓦片的左下角顶点坐标,计算本层中其它瓦片的左下角顶点坐标; 对本层中的每块瓦片进行如下计算,得到本层中的每块瓦片的3D模型坐标:根据确定的瓦片i的左下角顶点坐标、所述瓦片地图的宽度信息以及瓦片地图的高度信息,确定所述瓦片i的左上角顶点坐标、右上角顶点坐标和右下角顶点坐标;根据2D转3D公式,计算所述瓦片i的4个顶点在3D环境中的绝对位置;将所述瓦片i的4个顶点在3D环境中的绝对位置减去所述瓦片i的模型位置,得到所述瓦片i的3D模型坐标,其中,所述瓦片i的模型位置等于所述瓦片i的4个顶点的平均坐标。3.根据权利要求2所述的方法,其特征在于,所述根据所述瓦片的朝向信息、所述瓦片地图的宽度信息、所述瓦片地图的高度信息,以及所述第一块瓦片的左下角顶点坐标,计算本层中其它瓦片的左上角顶点坐标,包括: 若本层中瓦片的朝向为正交布局,则第m块瓦片的左下角顶点坐标为TLff) *TTff, y1; o+ (m/TLff) *TTH); 若本层中瓦片的朝向为45度斜视角布局,则第m块瓦片的左下角顶点坐标为(x1;0+((m% TLH) -m/TLff) *TTff/2, y1;0+ (m% TLH) +m/TLff) *TTH/2); 其中,和y1;。分别表示所述第一块瓦片的左下角顶点横坐标和左下角顶点纵坐标,TLW表示所述瓦片地图在宽度方向上的瓦片个数,TLH表示所述瓦片地图在高度方向上的瓦片个数,TTW表示相邻瓦片的中心点在宽度方向的间距,TTH表示相邻瓦片的中心点在高度方向的间距。4.根据权利要求2或3所述的方法,其特征在于,所述根据2D转3D公式,计算所述瓦片i的4个顶点在3D环境中的绝对位置包括: 根据第一公式和第二公式,分别计算所述瓦片i的4个顶点在3D环境中的绝对位置; 其中,所述第一公式为:pos = ((2*Xi;a- (vx+vw)) /vw, (vy+vh-2*Yi;a) /vh, Z, I);所述第二公式为:P3d,i,a= (V_1*P_1*pos).getPosition (); 式中P3(U,a表示瓦片i的顶点a在3D环境中的绝对位置,vx, vy, Vw和Vh分别为视窗中瓦片地图可绘区域的左上角顶点坐标、宽度和高度,和\a分别为所述瓦片i的顶点a的横坐标和纵坐标,Z为预设值,P表示投影矩阵,V表示view矩阵,其中,P和V在所述OpenGL初始化时设定。5.根据权利要求2或3所述的方法,其特征在于,所述计算所述各个瓦片的纹理图片的坐标包括: 根据所述瓦片地图包含的所有瓦片集的属性信息、第三公式、第四公式、第五公式和第六公式计算所述各个瓦片的纹理图片的坐标; 其中,所述第三公式为:ts,j,Q = ((n/C*Tff)/Iff, (n% C*TH)/IH); 所述第四公式为=((n/C*Tff)/Iff, (n% C*TH+TH)/IH);所述第五公式为:ts,」,2 = ((n/C*Tff+Tff)/Iff, (n% C*TH)/IH);所述第六公式为:ts,」,3 = ((n/C*Tff+Tff)/Iff, (n% C*TH+TH)/IH); 其中,表示s层中瓦片j的纹理图片的左上角顶点坐标,tyy表示s层中瓦片j的纹理图片的左下角顶点坐标,t“2表示s层中瓦片j的纹理图片的右上角顶点坐标,表示s层中瓦片j的纹理图片的右下角顶点坐标,TW为s层中瓦片j对应的瓦片集的瓦片宽度,TH为s层中瓦片j对应的瓦片集的瓦片高度,IW为s层中瓦片j对应的瓦片集的图片宽度,IH为s层中瓦片j对应的瓦片集的图片高度,η为s层中瓦片j的全局标识量减去s层中瓦片j对应的瓦片集中第一个瓦片的全局标识量;其中,C = Iff/TW, R = IH/TH。6.一种基于OpenGL的瓦片地图创建装置,其特征在于,包括: 获取单元,用...
【专利技术属性】
技术研发人员:秦龙龙,卢伟超,
申请(专利权)人:TCL集团股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。