基于OpenGL的瓦片地图创建方法及装置制造方法及图纸

技术编号:10325440 阅读:234 留言:0更新日期:2014-08-14 12:07
本发明专利技术公开了一种基于OpenGL的瓦片地图创建方法及装置,其中,一种基于OpenGL的瓦片地图创建方法包括:获取瓦片地图文件;根据所述瓦片地图文件计算各个瓦片的3D模型坐标;将所述各个瓦片的图片转化为纹理图片;计算所述各个瓦片的纹理图片的坐标;根据所述各个瓦片的3D模型坐标、纹理图片以及纹理图片的坐标,调用所述OpenGL的渲染函数分别对所述各个瓦片进行渲染,生成包含所述各个瓦片的瓦片地图。本发明专利技术提供的技术方案能够有效提高瓦片地图的可移植性。

【技术实现步骤摘要】
基于OpenGL的瓦片地图创建方法及装置
本专利技术涉及瓦片地图
,具体涉及一种基于OpenGL的瓦片地图创建方法及装置。
技术介绍
目前,越来越多的地图服务用到瓦片地图技术,例如现在我国实行发布的天地图服务就运用了瓦片地图技术。瓦片地图技术基于瓦片地图金字塔模型,瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变。瓦片地图金字塔模型的构建原理是:首先确定地图服务平台所要提供的缩放级别的数量N,把缩放级别最低、地图比例尺最大的地图图片作为金字塔的底层,即第O层,并对其进行切片,从地图图片的左上角开始,从左至右、从上到下进行切割,分割成相同大小(比如256x256像素)的正方形地图瓦片,形成第O层瓦片矩阵;在第O层地图图片的基础上,按每2x2像素合成为一个像素的方法生成第I层地图图片,并对其进行切片,分割成与下一层相同大小的正方形地图瓦片,形成第I层瓦片矩阵;采用同样的方法生成第2层瓦片矩阵;以此类推,直到第N — I层,构成整个瓦片金字塔。目前,利用传统技术开发的瓦片地图的移植性较差,不支持跨平台运行,比如,例如,一些经典的瓦片地图游戏(例如超级玛丽、魂斗罗等)只能运行在红白机上,无法移植到智能设备(例如手机、平板电脑等)运行。
技术实现思路
本专利技术提供一种基于OpenGL的瓦片地图创建方法及装置,用于提高瓦片地图的可移植性。本专利技术第一方面提供一种基于OpenGL的瓦片地图创建方法,包括:获取瓦片地图文件;根据所述瓦片地图文件计算各个瓦片的3D模型坐标;将所述各个瓦片的图片转化为纹理图片;计算所述各个瓦片的纹理图片的坐标;根据所述各个瓦片的3D模型坐标、纹理图片以及纹理图片的坐标,调用所述OpenGL的渲染函数分别对所述各个瓦片进行渲染,生成包含所述各个瓦片的瓦片地图。本专利技术第二方面提供一种基于OpenGL的瓦片地图创建装置,包括:获取单元,用于获取瓦片地图文件;第一计算单元,用于根据所述获取单元获取的瓦片地图文件计算各个瓦片的3D模型坐标;转化单元,用于将所述各个瓦片的图片转化为纹理图片;第二计算单元,用于计算所述各个瓦片的纹理图片的坐标;渲染单元,用于根据所述第一计算单元计算得到的各个瓦片的3D模型坐标、所述转化单元转化得到的各个瓦片的纹理图片以及所述第二计算单元计算得到的所述各个瓦片的纹理图片的坐标,调用所述OpenGL的渲染函数分别对所述各个瓦片进行渲染,生成包含所述各个瓦片的瓦片地图。由上可见,本专利技术通过获取瓦片地图文件,根据瓦片地图文件生成OpenGL渲染所需要的3D模型坐标、纹理图片和纹理图片坐标,最后通过OpenGL渲染接口生成包含各个瓦片的瓦片地图,由于主流的智能设备均支持OpenGL,而OpenGL提供了跨编程语言、跨平台的编程接口,因此,通过本专利技术技术方案生成的瓦片地图能够在支持OpenGL的所有智能设备上运行,极大提高了瓦片地图的可移植性。【附图说明】为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图Ι-a为本专利技术实施例提供的一种基于OpenGL的瓦片地图创建方法流程示意图;图Ι-b为本专利技术实施例提供的一种瓦片地图文件数据结构图;图Ι-c为本专利技术实施例提供的一种计算瓦片3D模型坐标方案的流程示意图;图2为本专利技术实施例提供的一种基于OpenGL的瓦片地图创建装置结构示意图。【具体实施方式】为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而非全部实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例提供了一种基于OpenGL的瓦片地图创建方法,包括:获取瓦片地图文件;根据所述瓦片地图文件计算各个瓦片的3D模型坐标;将所述各个瓦片的图片转化为纹理图片;计算所述各个瓦片的纹理图片的坐标;根据所述各个瓦片的3D模型坐标、纹理图片以及纹理图片的坐标,调用所述OpenGL的渲染函数分别对所述各个瓦片进行渲染,生成包含所述各个瓦片的瓦片地图。相应的,本专利技术实施例还提供了一种基于OpenGL的瓦片地图创建装置。以下分别进行详细说明。如图Ι-a所示,本专利技术实施例中的一种基于OpenGL的瓦片地图创建方法包括:步骤101、获取瓦片地图文件;本专利技术实施例中,瓦片地图文件预先通过瓦片地图创建工具(例如TiledMapEdit)创建,具体的,瓦片地图文件的创建方式可以参照现有的瓦片地图文件的创建方案实现,此处不再赘述。通常情况下,瓦片地图文件为一种针对Unicode的可变宽度字符编码(例如UTF-8)的明码文件,瓦片地图文件的文件后缀为TMX,因此,瓦片地图文件通常也被称为TMX文件。具体的,本专利技术实施例中的瓦片地图文件的数据结构可以参照图l_b所示,在图Ι-b中,“Title”用于描述瓦片地图文件的基本属性,包括:orientation(即瓦片的朝向信息)、width(即瓦片地图的宽度信息,用于表示瓦片地图在宽度方向上的瓦片个数,即表示瓦片地图每行存在的瓦片个数)、height (即瓦片地图的高度信息,用于表示瓦片地图在高度方向上的瓦片个数,即表示瓦片地图每列存在的瓦片个数)、tilewidth(即相邻瓦片的中心点在宽度方向的间距信息)、tileheight (即相邻瓦片的中心点在高度方向的间距信息);[N] tileset用于分别描述N个瓦片集的属性信息(其中,N大于或等于I),包括:firstgid (即瓦片集中第一个瓦片的全局标识量)、name (即瓦片集的名称)、tiIewidth (即瓦片集中瓦片的宽度信息)、tileheight (即瓦片集中瓦片的高度信息)、margin (即相邻瓦片之间的间隔信息)、image (即瓦片集的图片信息,包括描述图片路径的source属性、描述图片原始宽度的width属性、描述图片原始高度的height属性);[M] layer用于分别描述M个层的属性信息(其中,M大于或等于1),包括:name (即层的名称)、width (即层的宽度信息)、height (即层的高度信息)、data(即层的所有瓦片的数据信息,包括enCoding(即编码方式)compression(即压缩方式)、数据(主要记录层中所有瓦片依次对应的全局标识量))。下面对瓦片的全局标识量进行说明,瓦片的全局标识量又称为瓦片的GID,通常,GID的范围从正整数I开始,到瓦片地图中瓦片的总量,举例说明,假设如果瓦片地图有5个不同的瓦片,那么,瓦片O的GID为1,瓦片I的GID为2,瓦片3的GID为3,以此类推,瓦片的GID为O被用来表示此瓦片为空。需要说明的是,图Ι-b所示的瓦片地图文件的数据结构只是一种示例,本专利技术实施例中的瓦片地图文件的数据结构不限于图l-b所示的数据结构。本专利技术实施例中,预先创本文档来自技高网...
基于OpenGL的瓦片地图创建方法及装置

【技术保护点】
一种基于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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1