【技術實現步驟摘要】
基于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
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。