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

        ?

        三維虛擬校園的應(yīng)用研究

        2020-07-10 15:52:28李秀玲
        軟件 2020年5期
        關(guān)鍵詞:碰撞檢測(cè)漫游紋理

        李秀玲

        (忻州職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系,山西 忻州 034000)

        0 引言

        研究和實(shí)驗(yàn)三維虛擬環(huán)境,實(shí)現(xiàn)虛擬校園的意義在于:

        (1)通過(guò)虛擬校園,用戶(hù)可以直觀、詳細(xì)地了解校園的景觀和環(huán)境,能感受到栩栩如生的校園建筑,對(duì)校園環(huán)境產(chǎn)生身臨其境的感覺(jué)。

        (2)能夠完善學(xué)校的網(wǎng)站功能,用戶(hù)可以通過(guò)瀏覽器來(lái)體驗(yàn)校園逼真的視覺(jué)效果,并配以許多信息查詢(xún)功能,有助于學(xué)校宣傳,并提高學(xué)校的知名度。

        (3)有利于學(xué)校招生,借助網(wǎng)絡(luò)平臺(tái),建立虛擬校園,可以提高校園的美譽(yù)度幫助學(xué)校大范圍的招生,從而增強(qiáng)學(xué)校的影響力和競(jìng)爭(zhēng)力。

        (4)優(yōu)化學(xué)校建設(shè),通過(guò)虛擬校園,學(xué)校可以方便的對(duì)學(xué)校結(jié)構(gòu)進(jìn)行分析,并做出合理的布局規(guī)劃[3];另一方面設(shè)計(jì)者們可以首先在系統(tǒng)中對(duì)規(guī)劃方案進(jìn)行預(yù)設(shè)計(jì),并通過(guò)虛擬導(dǎo)游員進(jìn)行預(yù)覽,得到合適的方案,這樣就避免了盲目施工所帶來(lái)的資源浪費(fèi)。

        由此,虛擬校園可認(rèn)為包括學(xué)?,F(xiàn)實(shí)的虛擬化和過(guò)程教學(xué)[5]。其虛擬校園包括模擬真實(shí)的校園景觀,它的建筑可以是現(xiàn)有的建筑,也可以是正在建設(shè)的或準(zhǔn)備建設(shè)的建筑。這個(gè)課題主要服務(wù)于現(xiàn)實(shí)的學(xué)校[2]。

        1 虛擬校園系統(tǒng)的總體構(gòu)建

        根據(jù)作者自身的實(shí)際情況和綜合能力,準(zhǔn)備從程序底層開(kāi)發(fā),既運(yùn)用 VC++和 OpenGL編程技術(shù)來(lái)實(shí)現(xiàn)整個(gè)虛擬校園系統(tǒng)[6],校園三維場(chǎng)景的建模主要采用3ds max這個(gè)軟件,對(duì)建筑物表面紋理圖片的處理主要使用Photoshop這個(gè)軟件。

        虛擬校園開(kāi)發(fā)系統(tǒng)的總體構(gòu)建如圖1所示。

        2 虛擬校園的功能模塊

        根據(jù)虛擬校園的總體構(gòu)建圖,將虛擬校園的功能分為設(shè)計(jì)界面、輸入數(shù)據(jù)、建立模型和交互系統(tǒng)四大模塊。如圖2所示。

        圖1 系統(tǒng)開(kāi)發(fā)的總體構(gòu)建圖Fig.1 The overall structure of system development

        圖2 虛擬校園系統(tǒng)的功能模塊圖Fig.2 Functional module diagram of virtual campus system

        3 建立實(shí)體模型

        3.1 收集數(shù)據(jù)及預(yù)先處理

        在該系統(tǒng)中幾何建模的主要數(shù)據(jù)來(lái)自設(shè)計(jì)圖紙和實(shí)際測(cè)量的數(shù)據(jù)。圖片主要來(lái)自數(shù)碼相機(jī)對(duì)一些標(biāo)志性建筑拍照得到的;紋理數(shù)據(jù)通過(guò)數(shù)碼相片及素材庫(kù)中的圖片經(jīng)過(guò)處理得到的。針對(duì)結(jié)構(gòu)外觀比較簡(jiǎn)單的建筑采用 OpenGL直接建模[1],如果建筑物較復(fù)雜,首先把模型進(jìn)行拆分,拆成多個(gè)簡(jiǎn)單的模型,再進(jìn)行建模[7]。

        3.2 具體建模過(guò)程

        采用OpenGL建模的方法是,對(duì)于建筑物的模型首先建立如下所示的統(tǒng)一的數(shù)據(jù)結(jié)構(gòu):

        typedef struct Object_Type

        {

        int nObject_Type;int nNumPoint;

        float dWidth_Direct;

        float dHeights;

        Point3DArray points;

        }Object;

        在OpenGL中墻面由面片來(lái)組成,首先根據(jù)攝影測(cè)量工具對(duì)墻面所收集的頂點(diǎn)進(jìn)行處理,即把所有的頂點(diǎn)依次連接成一系列的四邊形。具體生成的面片圖3所示。

        對(duì)于建筑物頂部的建模,可以通過(guò)其所有的頂點(diǎn)坐標(biāo)生成。通常校園建筑物頂部都是平頂建筑,所以其模型能看作是頂部與墻面的組合[9]。這樣就把一個(gè)復(fù)雜的建筑物簡(jiǎn)單化了。

        還有校園中如果有如階梯教室、實(shí)習(xí)實(shí)訓(xùn)場(chǎng)所等復(fù)雜的建筑物,可以根據(jù)這些建筑物外在的特點(diǎn)對(duì)其進(jìn)行分解,分成若干形態(tài)簡(jiǎn)單的幾何體,然后在定義這些幾何體的數(shù)據(jù)模型[4]。

        3.3 紋理映射過(guò)程

        通常對(duì)于建筑物表面材質(zhì)和顏色采用紋理映射的方法進(jìn)行建模。具體的實(shí)現(xiàn)方法是:通過(guò)采集加工把建筑物上各個(gè)面的紋理數(shù)據(jù)轉(zhuǎn)換成圖形圖像格式,在繪制每個(gè)面時(shí)在分別對(duì)每個(gè)面進(jìn)行紋理映射。通過(guò)紋理映射得到的場(chǎng)景對(duì)象仿真度高,而且栩栩如生。下面的校園景觀圖4就是通過(guò)紋理映射得到的。

        圖3 墻面四邊形結(jié)構(gòu)圖Fig.3 Wall quadrilateral structure

        圖4 紋理映射后的景觀Fig.4 Texture-mapped landscape

        4 系統(tǒng)交互的實(shí)現(xiàn)

        4.1 交互漫游功能的實(shí)現(xiàn)

        (1)通過(guò)鍵盤(pán)鼠標(biāo)獲取

        用戶(hù)通過(guò)鍵盤(pán)的上下左右鍵來(lái)完成相應(yīng)的動(dòng)作控制。每次完成一個(gè)動(dòng)作按鍵系統(tǒng)就會(huì)產(chǎn)生一個(gè)事件,在系統(tǒng)中控制場(chǎng)景的變換主要是通過(guò)用戶(hù)先點(diǎn)擊相應(yīng)的按鍵,然后系統(tǒng)程序把這個(gè)動(dòng)作轉(zhuǎn)換為控制命令,最后實(shí)現(xiàn)虛擬場(chǎng)景的變換。

        在三維虛擬場(chǎng)景中大部分操作是由鼠標(biāo)來(lái)完成的,如:三維場(chǎng)景的視角、旋轉(zhuǎn)及定位等操作。所以在三維校園系統(tǒng)中實(shí)現(xiàn)用戶(hù)的動(dòng)作輸入時(shí)常常是鍵盤(pán)鼠標(biāo)配合起來(lái)使用共同來(lái)完成用戶(hù)的操作。

        (2)漫游的控制

        在虛擬漫游系統(tǒng)中如果用戶(hù)的視角發(fā)生改變時(shí),場(chǎng)景中的對(duì)象也發(fā)生了相應(yīng)的改變。這樣就需要通過(guò)下面的方法來(lái)實(shí)現(xiàn):一是通過(guò)場(chǎng)景中改變?nèi)S對(duì)象的坐標(biāo)來(lái)完成,二是通過(guò)三維場(chǎng)景視點(diǎn)的變換來(lái)完成場(chǎng)景的改變。這種方法是通過(guò)對(duì)用戶(hù)視點(diǎn)的變換來(lái)完成場(chǎng)景中對(duì)象的重新繪制。

        當(dāng)場(chǎng)景的建模完成后,通常要選擇一個(gè)合適的視角作為觀察點(diǎn),或者來(lái)回不停地變換視角,來(lái)對(duì)場(chǎng)景進(jìn)行觀察。OpenGL中專(zhuān)門(mén)提供了函數(shù)gluLookAt( )用于視點(diǎn)的變換[10]。

        void gluLookAt(GLdouble eyex,GLdouble eyey,

        GLdouble eyez,

        GLdouble centerx, GLdouble centery,

        GLdouble centerz,

        GLdouble upx, GLdouble upy, GLdouble

        upz);

        其中:eyex,eyez,eyez是指定視點(diǎn)位置

        Centerx,centerz,centery指定參考點(diǎn)位置

        Upx, upy,upz,指定視口向上的方向

        具體如圖5所示。

        圖5 函數(shù)gluLookAt()的坐標(biāo)系Fig.5 Coordinates of the function glulookat

        在虛擬校園漫游系統(tǒng)中人所處的位置的坐標(biāo)方向始終向上,其中視點(diǎn)坐標(biāo)的方向即向量坐標(biāo)(upx,upy,upz)固定為(0.0f,1.0f,0.0f),然后通過(guò)鍵盤(pán)鼠標(biāo)的操作,即提前設(shè)定一個(gè)變量然后通過(guò)鍵盤(pán)來(lái)調(diào)整速度,通過(guò)鼠標(biāo)操作來(lái)確定相關(guān)的位移量。利用三維幾何學(xué)知識(shí)計(jì)算出參考點(diǎn)與人眼之間的變化,最后通過(guò)函數(shù)gluLookAt()自動(dòng)生成相應(yīng)的三維場(chǎng)景。

        4.2 動(dòng)態(tài)漫游功能的實(shí)現(xiàn)

        所謂動(dòng)態(tài)漫游指用戶(hù)在下圖的三維正交投影圖上點(diǎn)擊,選定一條路線(xiàn)來(lái)實(shí)現(xiàn)場(chǎng)景漫游。

        圖6 三維正交投影示意圖Fig.6 Three-dimensional orthogonal projection diagram

        在三維校園場(chǎng)景中,通過(guò)點(diǎn)擊鼠標(biāo)確定一條路線(xiàn),系統(tǒng)會(huì)自動(dòng)獲取點(diǎn)擊點(diǎn)的坐標(biāo),然后計(jì)算出這條路線(xiàn)視點(diǎn)參數(shù)、目標(biāo)點(diǎn)參數(shù),然后把這些參數(shù)帶入函數(shù)gluLookAt()中,來(lái)回地繪制場(chǎng)景,這樣就完成了三維場(chǎng)景的路線(xiàn)漫游。在Windows下編程時(shí),用計(jì)時(shí)器來(lái)實(shí)現(xiàn)時(shí)間間隔。在編程環(huán)境下創(chuàng)建一個(gè)計(jì)時(shí)器,該計(jì)時(shí)器就隔一定時(shí)間通知Windows向窗口發(fā)送信息,Windows通過(guò)響應(yīng)這個(gè)信息就能以一定的時(shí)間間隔來(lái)完成任務(wù)。

        4.3 碰撞檢測(cè)

        在本文中實(shí)現(xiàn)碰撞檢測(cè)采用的是層次包圍盒法,這種方法的具體做法是:首先給場(chǎng)景中的對(duì)象建立方體包圍盒,屬性參數(shù)設(shè)置為隱藏;然后在用戶(hù)指定路線(xiàn)上的模型時(shí)給每個(gè)對(duì)象添加包圍盒,最后在場(chǎng)景中進(jìn)行漫游時(shí)添加碰撞檢測(cè)。實(shí)現(xiàn)碰撞檢測(cè)的具體流程圖如下。

        圖7 碰撞檢測(cè)的流程圖Fig.7 Flow chart of collision detection

        根據(jù)上面的流程圖,首先為每個(gè)模型定義包圍盒,包圍盒其實(shí)就是一個(gè)正六面體,其屬性參數(shù)設(shè)為隱藏,具體碰撞檢測(cè)的初始化代碼如下:

        stuct OBJPOSI

        {

        float x, h, z;

        float sizew;

        float sizel;

        float sizeh;

        float showscale;

        int objnum;

        float angle;

        };

        其中 float x,h,z設(shè)對(duì)象的位置;float sizew設(shè)置包圍盒的寬,float sizel設(shè)置包圍盒的長(zhǎng),float sizeh設(shè)置包圍盒高;float showscale設(shè)置對(duì)象的縮放倍數(shù);float angle設(shè)置對(duì)象的角度。

        碰撞檢測(cè)時(shí)首先判斷這兩個(gè)對(duì)象的包圍盒是否發(fā)生了碰撞這樣做不僅程序簡(jiǎn)單,而且計(jì)算準(zhǔn)確。

        4.4 連接數(shù)據(jù)庫(kù)

        通過(guò)上面的研究工作,為了達(dá)到與周?chē)h(huán)境的交互效果,還需要增加數(shù)據(jù)庫(kù)的功能,即把三維校園中的對(duì)象都收入到數(shù)據(jù)庫(kù)中,當(dāng)用戶(hù)任意選擇建筑物時(shí),選擇到的建筑物為參數(shù)可以到數(shù)據(jù)庫(kù)中查找,并將建筑物的名稱(chēng)及面積實(shí)時(shí)地顯示在桌面上。具體實(shí)現(xiàn)過(guò)程是:首先獲取用戶(hù)點(diǎn)擊對(duì)象的名稱(chēng);然后在數(shù)據(jù)庫(kù)中根據(jù)對(duì)象的名稱(chēng)查找相關(guān)的信息;最后將信息輸出到桌面上。

        由于這個(gè)三維場(chǎng)景的數(shù)據(jù)量不太,選擇Access數(shù)據(jù)庫(kù)就可以了。首先編寫(xiě)dll文件實(shí)現(xiàn)必要的函數(shù)接口。

        boolg_open_db(); //初始化數(shù)據(jù)庫(kù)

        voidg_get_value(const char*valuename, const

        char*id, const char*value);

        //設(shè)置數(shù)據(jù)標(biāo)注的腳本

        支持

        boolg_close_db(); //關(guān)閉數(shù)據(jù)庫(kù)

        這樣數(shù)據(jù)庫(kù)中的信息可以隨時(shí)隨軍地更新,這樣用戶(hù)在交互式漫游時(shí),可以隨意點(diǎn)擊觸發(fā),同時(shí)對(duì)于場(chǎng)景中出現(xiàn)的建筑物通過(guò)數(shù)據(jù)庫(kù)查找更加詳細(xì)的信息。

        4.5 虛擬漫游系統(tǒng)的生成

        為了實(shí)現(xiàn)能在虛擬場(chǎng)景中漫游,而且與周?chē)鷪?chǎng)景發(fā)生交互,產(chǎn)生身臨其境的感覺(jué)。需要在場(chǎng)景中添加背景音樂(lè)增強(qiáng)場(chǎng)景的沉浸感,首先選擇一個(gè)適合場(chǎng)景的音樂(lè)作為背景音樂(lè),這時(shí)需要應(yīng)用腳本編輯器,在數(shù)據(jù)庫(kù)函數(shù)類(lèi)型中創(chuàng)建函數(shù)的初始化,然后添加背景音樂(lè)腳本,并插入語(yǔ)句設(shè)置其相關(guān)屬性[8]。

        經(jīng)過(guò)以上過(guò)程的創(chuàng)建包括創(chuàng)建三維場(chǎng)景的構(gòu)造、自然現(xiàn)象的模擬、數(shù)據(jù)庫(kù)的設(shè)計(jì)、交互場(chǎng)景的構(gòu)造及碰撞檢測(cè)的實(shí)現(xiàn)等工作的完成,校園虛擬漫游系統(tǒng)的開(kāi)發(fā)基本完成,其實(shí)現(xiàn)的效果圖如圖8所示。

        圖8 校園虛擬系統(tǒng)效果圖Fig.8 Virtual system on campus

        5 結(jié)語(yǔ)

        高職院校作為以職業(yè)技能為主,我們需要的不是高科技,而是更為先進(jìn)的理念和創(chuàng)新?;ヂ?lián)網(wǎng)高速發(fā)展正在改變著人們的生活,虛擬現(xiàn)實(shí)技術(shù)正把越來(lái)越多的網(wǎng)上場(chǎng)景改造成真正的 3D場(chǎng)景,所以虛擬現(xiàn)實(shí)的明天在網(wǎng)絡(luò),網(wǎng)絡(luò)的明天在虛擬現(xiàn)實(shí)。本系統(tǒng)可以推廣到其它的虛擬系統(tǒng)應(yīng)用和實(shí)現(xiàn)中,如“虛擬城市、虛擬小區(qū)”的研究和實(shí)現(xiàn)中。

        猜你喜歡
        碰撞檢測(cè)漫游紋理
        全新預(yù)測(cè)碰撞檢測(cè)系統(tǒng)
        基于BM3D的復(fù)雜紋理區(qū)域圖像去噪
        軟件(2020年3期)2020-04-20 01:45:18
        基于BIM的鐵路信號(hào)室外設(shè)備布置與碰撞檢測(cè)方法
        使用紋理疊加添加藝術(shù)畫(huà)特效
        霹靂漫游堂
        Unity3D中碰撞檢測(cè)問(wèn)題的研究
        TEXTURE ON TEXTURE質(zhì)地上的紋理
        Coco薇(2017年8期)2017-08-03 15:23:38
        NASA漫游記
        消除凹凸紋理有妙招!
        Coco薇(2015年5期)2016-03-29 23:22:15
        BIM技術(shù)下的某辦公樓項(xiàng)目管線(xiàn)碰撞檢測(cè)
        日本不卡高字幕在线2019| 中文人妻av大区中文不卡| 久久久人妻丰满熟妇av蜜臀| 国产一级二级三级在线观看视频| 日韩精品一区二区三区中文| 欧美在线视频免费观看| 人妻精品一区二区免费| av在线天堂国产一区| 亚洲国产欧美在线观看| 男人和女人高潮免费网站| 免费人成视频欧美| 激情五月天在线观看视频| 色欲aⅴ亚洲情无码av| av大片在线无码免费| 午夜av内射一区二区三区红桃视| av网页免费在线观看| 国产午夜福利久久精品| 国产成人无码一二三区视频| 日本少妇爽的大叫高潮了| 国产草逼视频免费观看| 色拍自拍亚洲综合图区| 国产精选免在线观看| 精品av一区二区在线| 国产成人精品免费久久久久| 国产chinese男男gay视频网| 日韩精品久久久中文字幕人妻| 亚洲精品国产成人久久av盗摄| 午夜dy888国产精品影院| 亚洲暴爽av人人爽日日碰| 中文亚洲成a人片在线观看| 黄色国产一区二区99| 护士人妻hd中文字幕| 538任你爽精品视频国产| 亚洲永久精品日韩成人av| 午夜爽爽爽男女污污污网站 | 色综合天天网| av在线男人的免费天堂| 影音先锋久久久久av综合网成人 | 国产毛多水多高潮高清| 久久综合给合久久狠狠狠97色69 | 亚洲永久免费中文字幕|