亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于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)的坡度和坡向問(wèn)題入手,逼真地模擬了3ds文件模型在GRID地形中移動(dòng)的交互控制過(guò)程。開發(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),通過(guò)研究該模型文件的讀取、繪制與控制方法,結(jié)合規(guī)則格網(wǎng)GRID模型的特點(diǎn),實(shí)現(xiàn)了3ds文件模型在凸凹不平GRID地形的交互控制移動(dòng)過(guò)程,以及三維模型與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文件通過(guò)3ds max建模獲得,建模過(guò)程在此不再詳細(xì)說(shuō)明。

        3ds文件由許多“塊”組成,是一個(gè)塊的嵌套結(jié)構(gòu)。每一個(gè)“塊”由兩部分組成:ID和下一個(gè)數(shù)據(jù)塊的位置[4]?;緣K包含兩個(gè)主塊,分別是3D編輯器塊和關(guān)鍵幀塊,前者ID是0x3D3D,后者ID是0xB000。在3D編輯器塊中,有圖形的頂點(diǎn)列表、三角形列表、面列表、材質(zhì)、顏色等信息。接下來(lái)描述該塊的數(shù)據(jù)信息及其子塊,子塊的描述與上一級(jí)塊相同。但不是所有的塊都含有子塊,可以用塊的長(zhǎng)度與偏移量(如表中的 6+n)比較來(lái)判斷是否包含子塊[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ù)的讀取過(guò)程中抽象出二、三維點(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ì)讀取過(guò)程見圖1。

        圖1 讀取流程

        2.3 定 位

        在GRID地形上模擬三維實(shí)體模型的行進(jìn)過(guò)程,需要解決的關(guān)鍵問(wè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è)角度值,就可以通過(guò)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)的法線方向。可由點(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)等操作都是通過(guò)相應(yīng)的矩陣進(jìn)行控制[3-4]。

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

        本文的實(shí)驗(yàn)系統(tǒng)首先讀入一個(gè)越野車模型的3ds文件,然后對(duì)其添加控制,使之可以隨GRID地表起伏,對(duì)正常的行進(jìn)過(guò)程進(jìn)行模擬。在此把越野車模型抽象為一個(gè)長(zhǎng)方形,在模擬地形上移動(dòng)過(guò)程時(shí)對(duì)其左右方向進(jìn)行旋轉(zhuǎn)控制(左轉(zhuǎn)彎和右轉(zhuǎn)彎),對(duì)車頭和車尾隨地表起伏上下偏移進(jìn)行旋轉(zhuǎn)控制,然后在移動(dòng)過(guò)程中確定越野車模型在每個(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文件的讀取過(guò)程和模型在其中的控制方法,及其坡度坡向?qū)δP驮谝苿?dòng)過(guò)程中的影響。該技術(shù)可以有效地模擬三維模型的構(gòu)建,

        及其動(dòng)態(tài)顯示和移動(dòng)過(guò)程,方法簡(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)目來(lái)源:國(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ī)碳、氮變化的影響
        亚洲熟女一区二区三区不卡 | 无码爽视频| 国产自拍一区二区三区| 狠色人妻丝袜中文字幕| 久久影院午夜理论片无码| 成人欧美一区二区三区| 亚州少妇无套内射激情视频| 精品乱子伦一区二区三区| 日本嗯啊在线观看| 高清成人在线视频播放| 男人的天堂手机版av| 成年免费a级毛片免费看无码| 国产精品狼人久久久久影院| 乱码午夜-极国产极内射| 欧美性一区| 一区二区三区精品偷拍| 精品女厕偷拍视频一区二区| 中文字幕亚洲无线码在线一区| 日产国产精品亚洲系列| 最新国产在线精品91尤物| 亚洲av永久无码精品成人| 开心五月激动心情五月| 国产一区二区视频免费在线观看| 挺进邻居丰满少妇的身体| 国产人与禽zoz0性伦| 99热这里只有精品4| 热门精品一区二区三区| 国产一区二区三区毛片| 精品少妇一区二区三区免费观| 日本免费人成视频播放| 无码人妻丰满熟妇区免费| 亚洲综合精品一区二区| 亚洲成av人片在线观看| 精品久久久久成人码免费动漫| 亚洲综合一区无码精品| 国产精品白浆免费观看| 白嫩少妇高潮喷水av| 奇米影视色777四色在线首页 | 极品嫩模大尺度av在线播放| 国产又色又爽又黄的| 国产精品香蕉在线观看|