• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于OpenGL的3ds數(shù)據(jù)可視化

      2014-04-18 03:20:28閆浩文張志華
      地理空間信息 2014年5期
      關(guān)鍵詞:法線坡向越野車

      肖 坤,閆浩文,張志華

      (1.蘭州交通大學(xué) 測(cè)繪與地理信息學(xué)院,甘肅 蘭州,730070)

      基于OpenGL的3ds數(shù)據(jù)可視化

      肖 坤1,閆浩文1,張志華1

      (1.蘭州交通大學(xué) 測(cè)繪與地理信息學(xué)院,甘肅 蘭州,730070)

      探討了基于OpenGL的3ds文件讀取、繪制和控制方法,從三維模型在地形中移動(dòng)的坡度和坡向問題入手,逼真地模擬了3ds文件模型在GRID地形中移動(dòng)的交互控制過程。開發(fā)的三維模擬可視化實(shí)驗(yàn)系統(tǒng),在3ds文件模型和GRID地形的貼合程度方面效果良好。

      OpenGL;3ds;三維可視化;交互控制

      OpenGL是一個(gè)開源的三維圖形軟件包,作為一個(gè)性能優(yōu)越的圖形應(yīng)用程序設(shè)計(jì)界面,被廣泛地應(yīng)用于各種計(jì)算機(jī)環(huán)境中,成為三維圖形開發(fā)的標(biāo)準(zhǔn)[1]。目前,GRID地形和三維模型的可視化已經(jīng)被廣泛地應(yīng)用于地形模擬和景觀仿真等方面,但模型運(yùn)動(dòng)的自主性不強(qiáng),貼合度不好[2,3]。本文將建立的3ds文件利用Visual C++快速導(dǎo)入到實(shí)驗(yàn)系統(tǒng),通過研究該模型文件的讀取、繪制與控制方法,結(jié)合規(guī)則格網(wǎng)GRID模型的特點(diǎn),實(shí)現(xiàn)了3ds文件模型在凸凹不平GRID地形的交互控制移動(dòng)過程,以及三維模型與GRID地形的動(dòng)態(tài)實(shí)時(shí)貼合。本文方法在模型的移動(dòng)和位置關(guān)系的結(jié)合上,取得良好效果,可為三維動(dòng)態(tài)模擬、三維模型之間的貼合以及場(chǎng)景快速構(gòu)建等提供技術(shù)參考。

      1 3ds文件結(jié)構(gòu)

      3ds文件是最常見的一種三維模型保存格式,具有獲取方式多樣、保存方便等特點(diǎn)。本文使用的3ds文件通過3ds max建模獲得,建模過程在此不再詳細(xì)說明。

      3ds文件由許多“塊”組成,是一個(gè)塊的嵌套結(jié)構(gòu)。每一個(gè)“塊”由兩部分組成:ID和下一個(gè)數(shù)據(jù)塊的位置[4]。基本塊包含兩個(gè)主塊,分別是3D編輯器塊和關(guān)鍵幀塊,前者ID是0x3D3D,后者ID是0xB000。在3D編輯器塊中,有圖形的頂點(diǎn)列表、三角形列表、面列表、材質(zhì)、顏色等信息。接下來描述該塊的數(shù)據(jù)信息及其子塊,子塊的描述與上一級(jí)塊相同。但不是所有的塊都含有子塊,可以用塊的長(zhǎng)度與偏移量(如表中的 6+n)比較來判斷是否包含子塊[5]。本文主要用到的是3D編輯器塊?!皦K”的定義如表1。

      表1 3ds文件結(jié)構(gòu)

      2 3ds文件的讀取和控制

      2.1 數(shù)據(jù)結(jié)構(gòu)

      3ds文件都是按照塊模式存儲(chǔ),因此可將塊結(jié)構(gòu)定義如下:

      struct t_Chunk

      {

      unsigned short int ID; //塊的ID

      unsigned int length; //塊的ID

      unsigned int bytes_Read; //塊讀入的字節(jié)數(shù)

      };

      在數(shù)據(jù)的讀取過程中抽象出二、三維點(diǎn)、面和材質(zhì)信息結(jié)構(gòu)模型,然后得出三維對(duì)象模型定義如下:

      struct t_3DObject

      {

      int num_Verts; //點(diǎn)的個(gè)數(shù)

      int num_Faces; //面的個(gè)數(shù)

      int numTexVertex; //材質(zhì)坐標(biāo)的個(gè)數(shù)

      int materialID; //材質(zhì)的ID

      char strName[255]; //對(duì)象的名稱

      CVector3 *pVerts; //對(duì)象的頂點(diǎn)

      CVector3 *pNormals; //對(duì)象的法線

      CVector2 *pTexVerts; //紋理的UV坐標(biāo)

      t_Face *pFaces; //對(duì)象的面信息

      };

      然后再由對(duì)象模型抽象和繪制出整個(gè)場(chǎng)景,獲得整個(gè)場(chǎng)景的畫面。下面為三維模型的定義:

      struct t_3DModel

      {

      int num_Objects; //對(duì)象的個(gè)數(shù)

      int num_Materials; //材質(zhì)的個(gè)數(shù)

      vector<t_MaterialInfo> pMaterials;

      //材料信息的列表(材質(zhì)和顏色)

      vector<t_3DObject> pObject;

      //模型的對(duì)象列表

      }

      2.2 讀取流程

      3ds文件由chunk構(gòu)成,每一個(gè)chunk包括一個(gè)頭和一個(gè)主體,chunk的頭又由兩部分組成:塊的ID,chunk的長(zhǎng)度[6]。chunk是相互嵌套的,這就要求必須以遞歸的方式進(jìn)行讀取,主要涉及RGB顏色、燈光、頂點(diǎn)、面、UV坐標(biāo)、材質(zhì)、紋理坐標(biāo)等,詳細(xì)讀取過程見圖1。

      圖1 讀取流程

      2.3 定 位

      在GRID地形上模擬三維實(shí)體模型的行進(jìn)過程,需要解決的關(guān)鍵問題是如何將其在凸凹不平的GRID地形上停放。本文將越野車作為三維實(shí)體進(jìn)行研究,首先把越野車抽象成一個(gè)長(zhǎng)方體,然后判斷長(zhǎng)方體的下表面是否和地表該點(diǎn)的貼面重合,若重合則表明可以實(shí)現(xiàn)停放,亦即只要長(zhǎng)方體下表面的法線方向和地面點(diǎn)的法線方向一致,就可實(shí)現(xiàn)停放。具體旋轉(zhuǎn)只需要知道該點(diǎn)地形的坡度和坡向的兩個(gè)角度值,就可以通過OpenGL中的旋轉(zhuǎn)矩陣實(shí)現(xiàn)。其中,越野車在GRID地形上行進(jìn)時(shí)坡度和坡向的計(jì)算可分為以下3種情況(圖2)。

      圖2 格網(wǎng)示意圖

      1)當(dāng)越野車(點(diǎn)5)到達(dá)一個(gè)正方形表面時(shí)(圖2a),可由正方形表面的法線方向得到坡度S和坡向A的信息。

      2)當(dāng)越野車(點(diǎn)5)到達(dá)兩個(gè)正方形邊界時(shí)(除頂點(diǎn)外)(圖2b),可以將兩個(gè)正方形表面的單位法線的平均值作為邊界上點(diǎn)的法線方向??捎牲c(diǎn)5的法線得到坡度S、坡向A。

      3)當(dāng)越野車到達(dá)四個(gè)正方形的共享頂點(diǎn)5時(shí)(圖2c),由于點(diǎn)5的坡度S、坡向A可以看作地形曲面函數(shù)Z = f ( x , y )在東西、南北方向上高程變化率的函數(shù)[7,8],即式中,fx和fy分別為東西、南北方向上的高程變化率。本文中fx和fy的計(jì)算由相鄰的2個(gè)點(diǎn)獲得其在2個(gè)方向上的變化率。例如圖中點(diǎn)5的變化率由點(diǎn)2和點(diǎn)8、點(diǎn)4和點(diǎn)6獲得其在東西、南北兩個(gè)方向上的變化率[9,10]。

      一般情況下,車的動(dòng)力是有限的,以我國(guó)現(xiàn)行最大坡度建議值[11]為例,若車速100 km/h,坡度建議值imax為5,坡度大于這個(gè)建議值時(shí)停止移動(dòng)。

      2.4 其他操作控制

      本文對(duì)3ds模型在GRID地形中轉(zhuǎn)彎采用旋轉(zhuǎn)的方式進(jìn)行控制。在坐標(biāo)系統(tǒng)中,順時(shí)針為負(fù),逆時(shí)針為正,在此設(shè)定一個(gè)角速度去控制它旋轉(zhuǎn)的角度,當(dāng)角速度為正時(shí)為左轉(zhuǎn)彎,反之為右轉(zhuǎn)彎。此外還實(shí)現(xiàn)了勻速、加速行駛等功能,加速采用設(shè)定加速度累加方式實(shí)現(xiàn),設(shè)定最大速度進(jìn)行限制。

      整個(gè)場(chǎng)景的放大、縮小、改變視角旋轉(zhuǎn)等操作都是通過相應(yīng)的矩陣進(jìn)行控制[3-4]。

      3 實(shí) 驗(yàn)

      本文的實(shí)驗(yàn)系統(tǒng)首先讀入一個(gè)越野車模型的3ds文件,然后對(duì)其添加控制,使之可以隨GRID地表起伏,對(duì)正常的行進(jìn)過程進(jìn)行模擬。在此把越野車模型抽象為一個(gè)長(zhǎng)方形,在模擬地形上移動(dòng)過程時(shí)對(duì)其左右方向進(jìn)行旋轉(zhuǎn)控制(左轉(zhuǎn)彎和右轉(zhuǎn)彎),對(duì)車頭和車尾隨地表起伏上下偏移進(jìn)行旋轉(zhuǎn)控制,然后在移動(dòng)過程中確定越野車模型在每個(gè)點(diǎn)的位置和旋轉(zhuǎn)狀態(tài),并進(jìn)行顯示。整體效果如圖3所示。

      圖3 系統(tǒng)整體效果圖

      4 結(jié) 語(yǔ)

      本文基于OpenGL技術(shù)在VC中實(shí)現(xiàn)3ds文件的瀏覽和交互控制,并實(shí)現(xiàn)越野車模型在簡(jiǎn)單GRID地形中的正常移動(dòng),著重講解了3ds文件的讀取過程和模型在其中的控制方法,及其坡度坡向?qū)δP驮谝苿?dòng)過程中的影響。該技術(shù)可以有效地模擬三維模型的構(gòu)建,

      及其動(dòng)態(tài)顯示和移動(dòng)過程,方法簡(jiǎn)單直觀,與地形表面的貼合程度效果好,效率較高,極大地縮短了三維開發(fā)的周期,對(duì)三維建模及動(dòng)態(tài)交互控制方面的研究具有借鑒意義。

      [1] Shreiner D.OpenGL Programming Guide:the Official Guide to Learning OpenGL,Versions 3.0 and 3.1[M]. Boston:Pearson Education,2009

      [2] 閆志剛. GIS 專業(yè)地學(xué)可視化課程的建設(shè)與教學(xué)實(shí)踐[J]. 地理空間信息, 2011, 9(4): 159-161

      [3] 劉芳,劉賢梅.3DS文件讀取、繪制與控制方法的研究與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(19): 4 575-4 578

      [4] 殷素峰,高雪強(qiáng),楊勝?gòu)?qiáng).在OpenGL環(huán)境下開發(fā)3DS文件瀏覽器[J].工程圖學(xué)學(xué)報(bào),2005,26(6): 22-24

      [5] 蔡強(qiáng),李海生,陳誼.3DS文件瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2008, 20(增刊): 147-149

      [6] 劉虎, 陳漢文. 基于 3DS MAX 的校園三維模型室內(nèi)外一體化制作[J]. 地理空間信息, 2013 (2): 53-54

      [7] 郭仁忠.空間分析[M].北京:高等教育出版社,2001

      [8] Spatial Analysis and GIS[M]. Cleveland, Ohio: CRC Press,2004

      [9] 湯國(guó)安,李軍鋒.規(guī)則格網(wǎng)DEM坡度坡向算法的比較分析[J].干旱區(qū)地理,2004,1(9): 398-403

      [10] 洪瑩, 王繼周, 李昂. 地形特征提取的一種簡(jiǎn)易算法[J]. 測(cè)繪科學(xué), 2009, 34(6): 125-127

      [11] 裴玉龍,邢恩輝.高等級(jí)公路縱坡的坡度、坡長(zhǎng)限制分析[J].哈爾濱工業(yè)大學(xué)學(xué)報(bào),2005,37(5): 629-632

      P208

      B

      1672-4623(2014)05-0082-03

      10.3969/j.issn.1672-4623.2014.05.029

      肖坤,碩士,主要從事三維GIS的開發(fā)工作。

      2014-03-24。

      項(xiàng)目來源:國(guó)家科技支撐計(jì)劃資助項(xiàng)目(2013BAB05B01)。

      猜你喜歡
      法線坡向越野車
      基于定位法線的工件自由度判定方法及應(yīng)用
      為什么越野車可以翻山越嶺
      DEM地表坡向變率的向量幾何計(jì)算法
      越野車側(cè)壁加強(qiáng)筋板工藝改進(jìn)
      模具制造(2019年3期)2019-06-06 02:10:52
      瘋狂越野車
      橢圓法線定理的逆定理
      青藏高原東緣高寒草甸坡向梯度上植物光合生理特征研究
      土壤與作物(2015年3期)2015-12-08 00:46:55
      沒有完美的越野車,但是有干凈的
      越玩越野(2015年2期)2015-08-29 01:04:42
      雙曲螺線的副法線曲面的相關(guān)性質(zhì)研究*
      坡向和坡位對(duì)小流域梯田土壤有機(jī)碳、氮變化的影響
      潍坊市| 土默特左旗| 松江区| 岳阳市| 南部县| 潞西市| 轮台县| 义马市| 大渡口区| 镇安县| 深泽县| 营口市| 新沂市| 鲁山县| 简阳市| 拉孜县| 堆龙德庆县| 阿荣旗| 太仆寺旗| 星座| 镇康县| 客服| 靖远县| 邯郸市| 南开区| 敦煌市| 浑源县| 宁南县| 五河县| 清水河县| 龙陵县| 团风县| 厦门市| 海门市| 西安市| 昌乐县| 胶南市| 盐源县| 丽江市| 石台县| 秦安县|