【基于Unity的駕駛模擬器的設(shè)計(jì)與實(shí)現(xiàn)8200字(論文)】_第1頁(yè)
【基于Unity的駕駛模擬器的設(shè)計(jì)與實(shí)現(xiàn)8200字(論文)】_第2頁(yè)
【基于Unity的駕駛模擬器的設(shè)計(jì)與實(shí)現(xiàn)8200字(論文)】_第3頁(yè)
【基于Unity的駕駛模擬器的設(shè)計(jì)與實(shí)現(xiàn)8200字(論文)】_第4頁(yè)
【基于Unity的駕駛模擬器的設(shè)計(jì)與實(shí)現(xiàn)8200字(論文)】_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于Unity的駕駛模擬器的設(shè)計(jì)與實(shí)現(xiàn)目錄TOC\o"1-3"\h\u第1章緒論 第1章緒論1.1研究背景隨著信息科技與現(xiàn)代計(jì)算機(jī)的飛速發(fā)展,虛擬增強(qiáng)現(xiàn)實(shí)攝影技術(shù)已經(jīng)是20世紀(jì)一項(xiàng)必不可缺的全新一代實(shí)用技術(shù)。虛擬人和現(xiàn)實(shí)的基本視覺實(shí)現(xiàn)技術(shù)方法也就是通過利用計(jì)算機(jī)技術(shù)模擬的各種虛擬人和現(xiàn)實(shí)視覺環(huán)境應(yīng)用來(lái)實(shí)現(xiàn)給虛擬人世界帶來(lái)沉浸式的一門視覺技術(shù)[1]。簡(jiǎn)單來(lái)說(shuō),就是把每個(gè)人們完全帶到了一個(gè)計(jì)算機(jī)虛擬世界中,把手機(jī)虛擬和增強(qiáng)現(xiàn)實(shí)完美結(jié)合在一起來(lái),讓每個(gè)人們完全沉浸在其中。虛擬三維現(xiàn)實(shí)世界是通過產(chǎn)生一個(gè)虛擬三維空間的一種虛擬現(xiàn)實(shí)世界,利用虛擬電腦技術(shù)模擬了現(xiàn)實(shí)的三維世界。使用手機(jī)虛擬連接現(xiàn)實(shí)的同時(shí)人們都可以直接感受到人的視覺,聽覺和手的觸覺。讓更多人真的能夠身臨其境,可以觀察虛擬現(xiàn)實(shí)世界的事物[2]。近年來(lái),隨著汽車擁有人數(shù)的逐年上升,漸漸出現(xiàn)了駕駛員非職業(yè)化、交通臃腫混亂、交通事故頻發(fā)等諸多問題。這些問題的解決辦法可以從提高駕駛員的專業(yè)素質(zhì)、加強(qiáng)駕駛員的駕駛培訓(xùn)等方面考慮。汽車駕駛模擬器作為駕駛培訓(xùn)的新手段,相比于傳統(tǒng)駕校培訓(xùn),能夠提供更加安全、便利、高效以及節(jié)能的培訓(xùn)服務(wù)[4]。虛擬駕駛模擬器成功實(shí)現(xiàn)了對(duì)駕駛景觀的自動(dòng)虛擬化和自動(dòng)數(shù)字化,可以有效幫助駕駛技術(shù)不佳的人深入了解駕駛環(huán)境,對(duì)于減少交通事故的發(fā)生具有一定的意義。1.2國(guó)內(nèi)外現(xiàn)狀得益于微軟C#語(yǔ)言的簡(jiǎn)單易上手,Unity在入門領(lǐng)域內(nèi)的發(fā)展非常順利,尤其是相對(duì)于競(jìng)爭(zhēng)對(duì)手Unreal引擎,虛幻引擎所采用的C++語(yǔ)言非常繁瑣復(fù)雜,對(duì)于剛剛?cè)腴T學(xué)習(xí)的開發(fā)人員來(lái)講,學(xué)習(xí)難度過于陡峭,虛幻引擎的開發(fā)者EPIC這個(gè)公司對(duì)于PC端大型3A游戲的開發(fā)非常擅長(zhǎng),在2020年,他們?cè)?jīng)推出過一段實(shí)機(jī)演示,在演示中,為了渲染一個(gè)比較精致的游戲場(chǎng)景,他們同時(shí)渲染了萬(wàn)億級(jí)的多邊形,甚至在一個(gè)光照?qǐng)鼍跋?,在沒有專用硬件加速的情況下直接拋棄了傳統(tǒng)的光柵化,實(shí)現(xiàn)了實(shí)時(shí)光線追蹤[5]。Unity可以說(shuō)是現(xiàn)在全世界比較靠前的幾個(gè)專業(yè)游戲開發(fā)引擎之一,它可以實(shí)現(xiàn)可視化的2D和3D的影視和動(dòng)畫以及游戲,并且可以創(chuàng)造虛擬的三維二維空間。當(dāng)前,手機(jī)游戲開發(fā)的速度崛起的非常之快,現(xiàn)在已經(jīng)是一個(gè)單獨(dú)的行業(yè),手游和端游市場(chǎng)現(xiàn)在不想上下。Unity在國(guó)內(nèi)發(fā)展起步的晚,雖然近些年不斷的追趕中,還是和國(guó)外的技術(shù)有很大的差距[6]。但是由于國(guó)內(nèi)近些年手游行業(yè)的發(fā)展,所以公司急需大量的Unity人才。在國(guó)內(nèi)做3D手游的開發(fā)引擎大多用Unity。這點(diǎn)是毋庸置疑的,例如:王者榮耀,原神。在國(guó)外Unity的發(fā)展前景也是非常好的,現(xiàn)在全球都缺少Unity開發(fā)的人才。全球游戲開發(fā)的相當(dāng)大的一部分都掌握在Unity開發(fā)中。所以Unity的發(fā)展前景非常好。Unity3D不僅可以作用于游戲,還可以作用于各領(lǐng)域如AR在設(shè)計(jì),仿真,測(cè)試,維修和維護(hù)等領(lǐng)域,使用AR來(lái)支持制造及相關(guān)領(lǐng)域的應(yīng)用有很多。虛擬現(xiàn)實(shí)交互:使用此類工具,聲音交互設(shè)計(jì)師可以有效地模擬彈撥原型,并實(shí)現(xiàn)與虛擬儀器的多傳感器交互,從而達(dá)到前所未有的目的,例如測(cè)試創(chuàng)新的彈撥界面或使用有關(guān)演奏動(dòng)態(tài)的數(shù)據(jù)訓(xùn)練機(jī)器學(xué)習(xí)算法,這些信息可從以下位置立即訪問機(jī)器[7]。Unity3d引擎作為一款功能強(qiáng)大的游戲引擎,在中國(guó)和國(guó)外游戲開發(fā)領(lǐng)域都有著重要作用。Unity3d引擎的開源,使得小的游戲公司,乃至個(gè)人開發(fā)游戲的難度大大的降低了。現(xiàn)有Unity3d引擎可以大幅節(jié)省引擎開發(fā)的時(shí)間和成本。團(tuán)隊(duì)也不需要為了一個(gè)工具從零開始[8]。也許未來(lái)有一天,可能我們只需要確定玩法和風(fēng)格,就能靠引擎自動(dòng)生成一個(gè)足夠真實(shí)的游戲世界了。第2章相關(guān)理論和技術(shù)2.1游戲的設(shè)計(jì)方法與實(shí)現(xiàn)技術(shù)角色扮演類游戲,提供了一個(gè)虛擬的游戲世界,該世界提供了一個(gè)虛擬的角色供玩家選擇操作,最終以讓玩家實(shí)現(xiàn)現(xiàn)實(shí)世界所不能實(shí)現(xiàn)的事件為目的。自從RPG游戲問世以來(lái),一直再發(fā)展進(jìn)步到如今,迎來(lái)了以專業(yè)游戲引擎支持的時(shí)代[9]。2.2Unity3D技術(shù)Unity3D是由丹麥Unity技術(shù)公司開發(fā)的多平臺(tái)集成游戲開發(fā)工具,是一款跨平臺(tái)的3D引擎,用于制作3D游戲、實(shí)時(shí)三維動(dòng)畫等互動(dòng)內(nèi)容。同時(shí),Unity注重教育產(chǎn)業(yè)發(fā)展,致力于先進(jìn)工業(yè)技術(shù)與高校課程建設(shè)相結(jié)合,開展各種形式的校企合作[10]。Unity3D編輯頁(yè)面主要由五個(gè)視圖組成,包括Scene(場(chǎng)景視圖)、Game(游戲視圖)、Hierarchy(層級(jí)視圖)、Project(工程視圖)和Inspector(檢測(cè)視圖),其中Scene(場(chǎng)景視圖)用于編輯整個(gè)游戲世界,以編輯和創(chuàng)建特效[11]。Game(游戲視圖)是游戲發(fā)布后在屏幕上的最后一次顯示。屏幕顯示器的內(nèi)容完全取決于相機(jī)照亮的部分??梢酝ㄟ^移動(dòng)攝像機(jī)的位置和旋轉(zhuǎn)Scene(場(chǎng)景視圖)中的角度來(lái)調(diào)整Game(游戲視圖)中顯示的內(nèi)容。Hierarchy包含當(dāng)前場(chǎng)景中的所有游戲?qū)ο?,包括直接?shí)例或默認(rèn)實(shí)例。還可以將對(duì)象拖動(dòng)到層次結(jié)構(gòu)視圖中的另一個(gè)對(duì)象,以形成父子關(guān)系。Project存儲(chǔ)所有項(xiàng)目資源文件,并顯示資源、材料、模型、腳本等。Inspector顯示當(dāng)前對(duì)象附帶的所有組件,如三維坐標(biāo)、旋轉(zhuǎn)量、比例值和添加的腳本,以便可以使用每個(gè)組件編輯場(chǎng)景中的對(duì)象。第3章駕駛模擬場(chǎng)景的設(shè)計(jì)3.1需求分析在駕駛模擬訓(xùn)練中的人在回路中就是訓(xùn)練駕駛?cè)藛T在系統(tǒng)的回路中所需要進(jìn)行的操作和仿真,這種仿真需要對(duì)實(shí)體的動(dòng)態(tài)特性進(jìn)行建模并在VR系統(tǒng)的模擬器上運(yùn)行。此外還要求有模擬生成人的感覺環(huán)境的各種物理效應(yīng)設(shè)備,包括視覺、聽覺、觸覺、動(dòng)感等人能感覺的物理環(huán)境,由于有操作人員在回路中,人在回路仿真系統(tǒng)必須實(shí)時(shí)運(yùn)行[12]。3.2模塊設(shè)計(jì)將前期計(jì)劃收集的場(chǎng)景數(shù)據(jù)進(jìn)行整理之后,對(duì)整個(gè)駕駛場(chǎng)景里的數(shù)據(jù)模型按照一定的數(shù)據(jù)邏輯結(jié)構(gòu)規(guī)則再來(lái)進(jìn)行綜合組織,采用層次結(jié)構(gòu)的數(shù)據(jù)形式再來(lái)進(jìn)行數(shù)據(jù)模型的綜合組織,有利于場(chǎng)景模型的數(shù)據(jù)構(gòu)建、場(chǎng)景的模型合并以及后期場(chǎng)景結(jié)構(gòu)優(yōu)化等等的維護(hù)和運(yùn)營(yíng)管理[13]。層次結(jié)構(gòu)就是按照一個(gè)特殊物體的不同性質(zhì)類別怎么可以對(duì)它進(jìn)行一種層次上的劃分,同一物體類別的一個(gè)物體可以分別作為一個(gè)不同物體中的集合,而在每一個(gè)不同物體中的集合里又可以再分別進(jìn)行層次細(xì)分[14]。本系統(tǒng)場(chǎng)景以一個(gè)藍(lán)色的大天空下的盒子建筑作為主要背景,可以由各種物體建筑物、道路、草地、其余車輛、行人、樹木等各種物體集合組成,而這些物體建筑物又可以細(xì)分為各個(gè)商場(chǎng)、紅綠燈、圖書館等,如本框中的下圖所示。這樣我們才能為你組織一個(gè)好的數(shù)據(jù)庫(kù),結(jié)構(gòu)清楚、層次明確。虛擬駕駛場(chǎng)景虛擬駕駛場(chǎng)景建筑物地面天空人綠化商場(chǎng)醫(yī)院圖書館……路人騎行者道路紅綠燈樹木圖3.1系統(tǒng)的總體結(jié)構(gòu)圖3.3流程圖虛擬駕駛系統(tǒng)的整體設(shè)計(jì)理念應(yīng)該是力求真實(shí),所以對(duì)虛擬駕駛的進(jìn)行實(shí)地考察體驗(yàn)是很非常有必要的[15]。通過駕駛場(chǎng)景實(shí)地考察,分析有關(guān)駕駛所有建筑的主體構(gòu)造,收集有關(guān)駕駛所有建筑的結(jié)構(gòu)圖片等等信息,確定建筑物的比例,做出建筑草圖等以方便建筑模型的設(shè)計(jì)構(gòu)建。處理從中收集獲取到的網(wǎng)絡(luò)信息,做出網(wǎng)絡(luò)整體規(guī)劃,構(gòu)建三維立體模型,整合各個(gè)應(yīng)用場(chǎng)景與模型,最終設(shè)計(jì)形成完整的虛擬駕駛服務(wù)系統(tǒng)。具體的軟件實(shí)現(xiàn)工作流程主框圖顯示如下圖所示。開始開始收集數(shù)據(jù)及圖片等信息整理信息,做出草圖構(gòu)建部分場(chǎng)景與模型虛擬校園場(chǎng)景整體拼合完成虛擬校園漫游系統(tǒng)的建立結(jié)束3.2總體設(shè)計(jì)的流程圖第4章駕駛模擬場(chǎng)景的實(shí)現(xiàn)4.1開發(fā)流程4.1.1系統(tǒng)實(shí)現(xiàn)的軟硬件環(huán)境開發(fā)本系統(tǒng)的硬件環(huán)境為:處理器:AMDRyzen54500UwithRadeonGraphics內(nèi)存:16GB雙通道顯卡:CPU集成顯卡開發(fā)本系統(tǒng)的軟件環(huán)境為:操作系統(tǒng):Windows10家庭中文版,64-bit開發(fā)工具:UNITYHUB,Notepad++運(yùn)行軟件:3dmaxunity3d4.1.2信息的收集與處理本文分析使用的原始立體數(shù)據(jù)主要包括有道路、紅綠燈、行人與商場(chǎng)亭子等各類建筑的立體平面圖和獲取的立體照片等基礎(chǔ)信息。為了有效加強(qiáng)虛擬空間校園真實(shí)的準(zhǔn)確數(shù)據(jù)性和有效進(jìn)行虛擬空間的正確管理分析,以下幾點(diǎn)是該虛擬駕駛系統(tǒng)用的數(shù)據(jù)分析:1.通過網(wǎng)上百度電子地圖(簡(jiǎn)稱百度電子地圖)可以測(cè)量虛擬駕駛車輛內(nèi)主要對(duì)象和與實(shí)體的地理距離,然后最終確定主要虛擬駕駛對(duì)象實(shí)體在整個(gè)虛擬現(xiàn)實(shí)校園環(huán)境中的地理位置。先把這個(gè)主體比如虛擬駕駛車輛與建筑物的大小等的數(shù)據(jù)進(jìn)行測(cè)量整理出來(lái),再通過地圖拼接完成其他的,再根據(jù)對(duì)于各虛擬駕駛對(duì)象這個(gè)實(shí)體的在整個(gè)虛擬環(huán)境中的所在位置,先給它確定一個(gè)新的原點(diǎn),如虛擬駕駛車輛的起始點(diǎn),然后通過百度電子地圖(也比如有的百度二維地圖)上的原點(diǎn)測(cè)距定位功能,測(cè)量出各對(duì)象中的實(shí)體進(jìn)入到這個(gè)原點(diǎn)的一定距離。2.對(duì)于部分大型建筑物的樓層高度,從總體的平面圖和數(shù)據(jù)收集后得到的測(cè)量數(shù)據(jù)中不能看出獲取的實(shí)際情況,自行計(jì)算測(cè)量可得出其中一層的建筑高度,然后根據(jù)每個(gè)樓層高度數(shù)據(jù)的計(jì)算可得出總的高度。此外你還可以直接利用一些虛擬化的測(cè)量軟件(例如google和谷歌虛擬地球)等來(lái)進(jìn)行各種輔助性的測(cè)量。3.對(duì)于這些紋理上的數(shù)據(jù)主要還是采用自己相機(jī)拍攝的處理方式。由于照片受風(fēng)景拍攝時(shí)的氣候天氣及拍攝周圍環(huán)境的因素影響,拍出的風(fēng)景照片通常不能直接配合使用,需要在照片亮度、色調(diào)上都要做出相應(yīng)調(diào)校。另一方面,拍照者在取景時(shí),可能常常會(huì)遇到受照片拍攝角度上的限制、行人或路邊樹木照片摻雜等多種因素的直接影響,照片常常拍攝需要及時(shí)進(jìn)行圖像修復(fù)、剪裁等后期曝光處理。4.2場(chǎng)景搭建4.2.1道路及地形的設(shè)計(jì)地形模型在虛擬環(huán)境中應(yīng)用分量很大,它對(duì)虛擬駕駛的狀態(tài)真實(shí)性和虛擬系統(tǒng)正常運(yùn)行的狀態(tài)實(shí)時(shí)性都具有重要作用影響。地形立體對(duì)象是設(shè)計(jì)虛擬地物虛擬駕駛模型系統(tǒng)的理論基礎(chǔ),是設(shè)計(jì)布置虛擬地物地形對(duì)象虛擬駕駛的重要依據(jù)。地形動(dòng)態(tài)對(duì)象三維動(dòng)態(tài)模型的基礎(chǔ)建立建設(shè)是設(shè)計(jì)虛擬駕駛必不可少的一個(gè)重要關(guān)鍵環(huán)節(jié)。對(duì)于一個(gè)平面上的地形,可以通過使用unity3d的plane節(jié)點(diǎn),調(diào)節(jié)一個(gè)地形高度長(zhǎng)寬高低的數(shù)據(jù),并對(duì)其進(jìn)行地形貼圖。對(duì)于不同地形紋理的地形如例如綠地等可創(chuàng)建3dobject等先創(chuàng)建一個(gè)地形,再對(duì)其進(jìn)行地形貼圖,可將其疊加在整個(gè)大學(xué)校園內(nèi)的地面上。像一些小的丘陵、山脈等都是起伏不平的自然地形,也可以創(chuàng)建地形。但我們大學(xué)基本都是平地,所以在此不需用地形突起。在這里,為了讓地面看起來(lái)更生動(dòng)形象,我選擇了用到3dmax模型里面的仿真路面進(jìn)行拼接。圖4.1圖4.2是地面設(shè)計(jì)層次圖地面地面道路紅綠燈圖4.1地面設(shè)計(jì)層次結(jié)構(gòu)圖4.2地面效果圖4.2.2天空的設(shè)計(jì)為了大大增加三維校園虛擬場(chǎng)景校園真實(shí)場(chǎng)景內(nèi)部背景的視覺真實(shí)感,可以在三維校園虛擬場(chǎng)景內(nèi)部增加具有藍(lán)天白云夢(mèng)幻效果的虛擬天空。根據(jù)不同用戶所實(shí)際需要的真實(shí)使用程度,可以考慮采用以下多種設(shè)計(jì)方法組合來(lái)進(jìn)行實(shí)現(xiàn):1.導(dǎo)入U(xiǎn)nity3D天空盒通過UNITY3D的Window窗口AssetStore里的資源包進(jìn)行Unity3D天空盒的導(dǎo)入,點(diǎn)擊商店通過Unity官方資源,找到天空盒資源包,在Unity里打開,導(dǎo)入資源包,再通過拖拽的方式進(jìn)行天空盒的創(chuàng)建。2.制作天空效果可以通過我們運(yùn)用一個(gè)矩形化的天空盒這種制作方法能幫你制作一個(gè)矩形化的天空,所謂矩形化的天空盒就是用一個(gè)個(gè)矩形的長(zhǎng)條用方盒子包起來(lái)把它作為一種展示矩形天空的一種視覺遠(yuǎn)景或者天空貼圖的一種視覺載體。首先用戶需要直接生成一個(gè)盒子體積必須足夠大的立體矩形模型立方體,通過在這個(gè)矩形立方體中的矩形模型盒子的5個(gè)不同面上分別直接貼上五個(gè)可以直接表現(xiàn)不同高空天氣現(xiàn)象模擬圖像效果的。不同的立體矩形盒子天空天氣圖像及其紋理可以直接達(dá)到逼真的高空天氣模擬矩形天氣圖像效果。3.Background節(jié)點(diǎn)中,有兩個(gè)域值控制天空的顏色,分別是skyColor和skyAngle。skyColor域指定立體空間背景天空的顏色,該域值由一系列紅、綠、藍(lán)顏色組合而成。skyAngle域指定空間背景上需要著色的位置的天空角。UNITY3D瀏覽器就是在這些空間角所指位置進(jìn)行著色的。第一個(gè)天空顏色著色于天空背景的正上方,第二個(gè)天空顏色著色于第一個(gè)天空角所指定的位置,第三個(gè)天空顏色著色于第二個(gè)天空角所指定的位置,以此類推。這樣使天空角之間的顏色慢慢過渡,這就形成了顏色梯度,使得天空看起來(lái)更為真實(shí)。圖4.3天空效果圖4.2.3建筑物的設(shè)計(jì)1.建筑物幾何模型的建立建筑物是三維虛擬中和現(xiàn)實(shí)世界中的主要建筑景觀,在眾多虛擬駕駛系統(tǒng)中,三維虛擬建筑物的景觀表示和立體建模設(shè)計(jì)是最為重要的設(shè)計(jì)內(nèi)容。由于高層建筑物結(jié)構(gòu)數(shù)目眾多,為了較好地準(zhǔn)確實(shí)現(xiàn)對(duì)高層樓群的搭建的構(gòu)筑建模設(shè)計(jì)任務(wù),可以根據(jù)實(shí)際設(shè)計(jì)情況重新確定其建筑設(shè)計(jì)基本原則:(1)根據(jù)校內(nèi)現(xiàn)有建筑的整體外觀與建筑結(jié)構(gòu)對(duì)建筑模型進(jìn)行設(shè)計(jì)分類,確定新的構(gòu)造設(shè)計(jì)模型,對(duì)那些外觀和建筑結(jié)構(gòu)相同的建筑也應(yīng)采用同一個(gè)構(gòu)造設(shè)計(jì)模型。(2)對(duì)于較復(fù)雜的系統(tǒng)模型也可采用新方法拆分,使之更加簡(jiǎn)單化,然后再對(duì)其進(jìn)行二次建模。目前對(duì)大型建筑物的整體建模一般都是采用一種整體建模法,即首先畫一個(gè)圓形立方體或一個(gè)長(zhǎng)方體,然后再對(duì)物體表面紋理進(jìn)行各種紋理上的映射,構(gòu)造一個(gè)建筑物整體模型。2.建筑物的紋理映射建筑物本身并非不是一個(gè)空白的大面積平面,一般的大型高層建筑物上幾乎都會(huì)特別設(shè)一些玻璃窗戶,貼有各式各樣的彩色玻璃瓷磚。目前對(duì)于一個(gè)大型建筑物窗口及其內(nèi)部窗戶的各種整體窗口建模一般都主要是通過采用多種典型線段繪圖方法應(yīng)用來(lái)直接進(jìn)行窗口構(gòu)造,及描繪出窗口的大部分概念和結(jié)構(gòu)框架,然后對(duì)其窗戶進(jìn)行整體背景圖的渲染。由于虛擬駕駛環(huán)境中的立體模型建筑物特別多,如果你臨時(shí)需要一一對(duì)其內(nèi)部進(jìn)行立體化的建模,會(huì)不僅需要我們花費(fèi)大量的空間計(jì)算力和時(shí)間,而且嚴(yán)重的會(huì)影響了系統(tǒng)的正常工作運(yùn)行以及處理速度。所以,在本整體設(shè)計(jì)處理系統(tǒng)中與其對(duì)應(yīng)于整個(gè)房屋內(nèi)部墻體及其表面的任何一個(gè)窗戶和其他裝飾物的花紋都應(yīng)該可以直接采用類似整體紋理映射建?;ハ嘤成涞恼w設(shè)計(jì)處理方法對(duì)其整體進(jìn)行類似紋理映射建模。其基本實(shí)現(xiàn)操作方法主要原理是:將場(chǎng)景內(nèi)每個(gè)帶有建筑各個(gè)主體結(jié)構(gòu)和平面的建筑主體紋理抽象圖像模型數(shù)據(jù)分別實(shí)時(shí)進(jìn)行隨機(jī)映射采集、加工、轉(zhuǎn)換成一個(gè)建筑紋理圖像數(shù)據(jù)庫(kù)并映射到制圖所符合要求的建筑紋理圖像格式,之后在建筑主體畫面紋理圖像數(shù)據(jù)繪制的整個(gè)操作過程中,分別對(duì)每個(gè)建筑面分別隨機(jī)進(jìn)行一次建筑紋理圖像數(shù)據(jù)隨機(jī)映射。商場(chǎng)周圍場(chǎng)景環(huán)境設(shè)計(jì)由立體場(chǎng)上場(chǎng)景設(shè)計(jì)和建筑布局立體圖書館以及周圍環(huán)境場(chǎng)景設(shè)計(jì)環(huán)節(jié)組成,創(chuàng)建逼真的實(shí)景虛擬混合現(xiàn)實(shí)三維立體教學(xué)場(chǎng)景。采用了以模塊化,組件化作為設(shè)計(jì)指導(dǎo)思想,層次清晰、結(jié)構(gòu)合理的unity3d大型圖書館應(yīng)用場(chǎng)景環(huán)境設(shè)計(jì)。主體建筑應(yīng)用場(chǎng)景圖的設(shè)計(jì)層次結(jié)構(gòu)方式如圖4.4、圖4.5示。建筑場(chǎng)景設(shè)計(jì)建筑場(chǎng)景設(shè)計(jì)周邊環(huán)境商場(chǎng)樓梯底座建筑主體樓體附件綠化草坪樹木設(shè)計(jì)道路設(shè)計(jì)圖4.4建筑設(shè)計(jì)層次結(jié)構(gòu)4.5商場(chǎng)大型建筑效果圖4.2.4樹木的設(shè)計(jì)時(shí)刻保持二維紋理樹林圖像的法線矢量指向觀察者,就可以形成非常真實(shí)的三維景觀,從不同的角度觀察均可獲得樹木的較為完整的圖像。在UNITY3D中,Billboard節(jié)點(diǎn)提供了這一功能。通過設(shè)定Billboard中axisOfRotation域,可以規(guī)定樹木的旋轉(zhuǎn)軸。4.6樹木效果圖4.7樹木效果圖4.3系統(tǒng)導(dǎo)出要想在unity3d游戲引擎系統(tǒng)中實(shí)現(xiàn)虛擬駕駛的效果,需要定義一個(gè)人物視角,讓攝像頭跟在人物視角,用鍵盤鼠標(biāo)控制它的行走跳躍與旋轉(zhuǎn),這便達(dá)到了漫游虛擬駕駛的效果。接下來(lái)是創(chuàng)建第一視角虛擬駕駛的過程。1.將其人物視角命名為第一人稱駕駛,方便查看信息,在inspector面板上添加人物重力rigidbody組件,以及碰撞器Collider的組件(可以在腳本里添加屬性)2.添加Newscript腳本將其命名為第一人稱虛擬駕駛控制器英文版。3.編寫腳本:添加組件[RequireComponent(typeof(Rigidbody))][RequireComponent(typeof(CapsuleCollider))]publicclassRigidbodyFirstPersonController:MonoBehaviour{publicclassMovementSettings{publicfloatForwardSpeed=8.0f;publicfloatBackwardSpeed=4.0f;publicfloatStrafeSpeed=4.0f;publicfloatRunMultiplier=2.0f; publicKeyCodeRunKey=KeyCode.LeftShift;publicfloatJumpForce=30f;publicAnimationCurveSlopeCurveModifier=newAnimationCurve(newKeyframe(-90.0f,1.0f),newKeyframe(0.0f,1.0f),newKeyframe(90.0f,0.0f));[HideInInspector]publicfloatCurrentTargetSpeed=8f;publicvoidUpdateDesiredTargetSpeed(Vector2input){ if(input==Vector2.zero)return; if(input.x>0||input.x<0) { CurrentTargetSpeed=StrafeSpeed; } if(input.y<0) { CurrentTargetSpeed=BackwardSpeed; } if(input.y>0) { CurrentTargetSpeed=ForwardSpeed; }#if!MOBILE_INPUT if(Input.GetKey(RunKey)) { CurrentTargetSpeed*=RunMultiplier; m_Running=true; } else { m_Running=false; }#endif}#if!MOBILE_INPUTpublicboolRunning{get{returnm_Running;}}#endif}publicCameracam;publicMovementSettingsmovementSettings=newMovementSettings();publicMouseLookmouseLook=newMouseLook();publicAdvancedSettingsadvancedSettings=newAdvancedSettings();privateRigidbodym_RigidBody;//剛體privateCapsuleColliderm_Capsule;//碰撞器privatefloatm_YRotation;privateVector3m_GroundContactNormal;privateboolm_Jump,m_PreviouslyGrounded,m_Jumping,m_IsGrounded;publicVector3Velocity{get{returnm_RigidBody.velocity;}}publicboolGrounded{get{returnm_IsGrounded;}}publicboolJumping{get{returnm_Jumping;}}publicboolRunning{get{ returnmovementSettings.Running; }}privatevoidStart(){m_RigidBody=GetComponent<Rigidbody>();m_Capsule=GetComponent<CapsuleCollider>();mouseLook.Init(transform,cam.transform);}privatevoidUpdate(){RotateView();if(CrossPlatformInputManager.GetButtonDown("Jump")&&!m_Jump){m_Jump=true;}}privatevoidFixedUpdate(){GroundCheck();Vector2input=GetInput();if((Mathf.Abs(input.x)>float.Epsilon||Mathf.Abs(input.y)>float.Epsilon)&&(advancedSettings.airControl||m_IsGrounded)){Vector3desiredMove=cam.transform.forward*input.y+cam.transform.right*input.x;desiredMove=Vector3.ProjectOnPlane(desiredMove,m_GroundContactNormal).normalized;desiredMove.x=desiredMove.x*movementSettings.CurrentTargetSpeed;desiredMove.z=desiredMove.z*movementSettings.CurrentTargetSpeed;desiredMove.y=desiredMove.y*movementSettings.CurrentTargetSpeed;if(m_RigidBody.velocity.sqrMagnitude<(movementSettings.CurrentTargetSpeed*movementSettings.CurrentTargetSpeed)){m_RigidBody.AddForce(desiredMove*SlopeMultiplier(),F(xiàn)orceMode.Impulse);}}if(m_IsGrounded){m_RigidBody.drag=5f;if(m_Jump){m_RigidBody.drag=0f;m_RigidBody.velocity=newVector3(m_RigidBody.velocity.x,0f,m_RigidBody.velocity.z);m_RigidBody.AddForce(newVector3(0f,movementSettings.JumpForce,0f),F(xiàn)orceMode.Impulse);m_Jumping=true;}if(!m_Jumping&&Mathf.Abs(input.x)<float.Epsilon&&Mathf.Abs(input.y)<float.Epsilon&&m_RigidBody.velocity.magnitude<1f){m_RigidBody.Sleep();}}else{m_RigidBody.drag=0f;if(m_PreviouslyGrounded&&!m_Jumping){StickToGroundHelper();}}m_Jump=false;}privatefloatSlopeMultiplier(){floatangle=Vector3.Angle(m_GroundContactNormal,Vector3.up);returnmovementSettings.SlopeCurveModifier.Evaluate(angle);}privatevoidStickToGroundHelper(){RaycastHithitInfo;if(Physics.SphereCast(transform.position,m_Capsule.radius*(1.0f-advancedSettings.shellOffset),Vector3.down,outhitInfo,((m_Capsule.height/2f)-m_Capsule.radius)+advancedSettings.stickToGroundHelperDistance,Physics.AllLayers,QueryTriggerInteraction.Ignore)){if(Mathf.Abs(Vector3.Angle(hitInfo.normal,Vector3.up))<85f){m_RigidBody.velocity=Vector3.ProjectOnPlane(m_RigidBody.velocity,hitInfo.normal);}}}privateVector2GetInput(){Vector2input=newVector2{x=CrossPlatformInputManager.GetAxis("Horizontal"),y=CrossPlatformInputManager.GetAxis("Vertical")}; movementSettings.UpdateDesiredTargetSpeed(input);returninput;}privatevoidRotateView(){//avoidsthemouselookingifthegameiseffectivelypausedif(Mathf.Abs(Time.timeScale)<float.Epsilon)return;//gettherotationbeforeit'schangedfloatoldYRotation=transform.eulerAngles.y;mouseLook.LookRotation(transform,cam.transform);if(m_IsGrounded||advancedSettings.airControl){//RotatetherigidbodyvelocitytomatchthenewdirectionthatthecharacterislookingQuaternionvelRotation=Quaternion.AngleAxis(transform.eulerAngles.y-oldYRotation,Vector3.up);m_RigidBody.velocity=velRotation*m_RigidBody.velocity;}}///spherecastdownjustbeyondthebottomofthecapsuletoseeifthecapsuleiscollidingroundthebottomprivatevoidGroundCheck(){m_PreviouslyGrounded=m_IsGrounded;RaycastHithitInfo;if(Physics.SphereCast(transform.position,m_Capsule.radius*(1.0f-advancedSettings.shellOffset),Vector3.down,outhitInfo,((m_Capsule.height/2f)-m_Capsule.radius)+advancedSettings.groundCheckDistance,Physics.AllLayers,QueryTriggerInteraction.Ignore)){m_IsGrounded=true;m_GroundContactNormal=hitInfo.normal;}else{m_IsGrounded=false;m_GroundContactNormal=Vector3.up;}if(!m_PreviouslyGrounded&&m_IsGrounded&&m_Jumping){m_Jumping=false;}}}4.4平臺(tái)測(cè)試軟件安全測(cè)試的最終目標(biāo),就是為了能夠更快、更早地將一個(gè)軟件開發(fā)產(chǎn)品或?qū)I(yè)軟件開發(fā)系統(tǒng)中所可能存在的各種安全問題徹底找出原因來(lái),并通過促進(jìn)軟件開發(fā)各類技術(shù)人員盡快地有效解決各種問題,最終及時(shí)地向廣大客戶要求提供一個(gè)安全高質(zhì)量的專業(yè)軟件開發(fā)產(chǎn)品,使一個(gè)軟件開發(fā)系統(tǒng)更好地能夠滿足用戶的實(shí)際需求,同時(shí)也能滿足一個(gè)軟件開發(fā)組織自身的發(fā)展要求[16]。4.4.1系統(tǒng)測(cè)試環(huán)境為了能夠讓本次的系統(tǒng)測(cè)試能夠在較普通的家用機(jī)器上順利的正常運(yùn)行,系統(tǒng)測(cè)試所要將選用的計(jì)算機(jī)配置為家庭版,具體的系統(tǒng)配置方法如下:處理器:AMDRyzen54500UwithRadeonGraphics內(nèi)存:16GB硬盤空間:500GB顯卡:CPU集成顯卡網(wǎng)卡:集成10/100/1000以太網(wǎng)卡操作系統(tǒng):Windows10家庭中文版網(wǎng)絡(luò)協(xié)議:TCP/IP瀏覽器:InternetExplorer8.0以上插件:BScontact8.04.4.2測(cè)試結(jié)果與優(yōu)化測(cè)試的主要評(píng)測(cè)內(nèi)容為虛擬駕駛系統(tǒng)的發(fā)布之后的整體瀏覽效果。本系統(tǒng)正常運(yùn)行的測(cè)試結(jié)果表明虛擬駕駛系統(tǒng)基本上都能正常且良好的正常運(yùn)行,用戶基本能以不同的聽覺視點(diǎn)從不同的視覺角度快速進(jìn)行操作瀏覽。表1優(yōu)化前后結(jié)果對(duì)比所用到的方法測(cè)試結(jié)果DEF、USE設(shè)置visibilityLimit使用LOD初次加載速度(秒)流暢程度否否否12.2不流暢是否否10.3較不流暢否是否8.7一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論