版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
黃靜虛擬現(xiàn)實(shí)VirtualRealityUnity游戲引擎
介紹300年后的人類(lèi)是這樣的,看完目瞪口呆!老板在線5年后三維全息虛擬技術(shù)正式大規(guī)模商用,可以通過(guò)VR、AR技術(shù)進(jìn)行遠(yuǎn)程交流、網(wǎng)絡(luò)購(gòu)物了!視頻通話已經(jīng)out了!宅男、宅女們終于可以足不出戶了!未來(lái)的辦公室這樣看比賽75年后
虛擬現(xiàn)實(shí)技術(shù)為醫(yī)療診斷提供了更好的支持?;蚣夹g(shù)的提升,大大加速了人類(lèi)進(jìn)化,人類(lèi)平均智商提升到150。90年后,人類(lèi)帶上“大腦帽”可以進(jìn)入虛擬世界!宜家VR應(yīng)用上架HTCVive,首家推出虛擬現(xiàn)實(shí)購(gòu)物應(yīng)用最近IKEA宜家制作的VR應(yīng)用《IKEAVRExperience》在SteamVR上線,可以在HTCVive中提前體驗(yàn)宜家家具的效果。用戶可以在應(yīng)用中用宜家的家具布置一個(gè)屬于自己的廚房,試用其中三種裝飾風(fēng)格,然后置身其中漫步欣賞,并通過(guò)點(diǎn)擊更換櫥柜和抽屜的顏色。移動(dòng)平臺(tái)上增強(qiáng)現(xiàn)實(shí)技術(shù)的卡通老虎互動(dòng)項(xiàng)目簡(jiǎn)介該系統(tǒng)應(yīng)用運(yùn)行在Andriod智能手機(jī)上。虛擬場(chǎng)景為一個(gè)可愛(ài)的小老虎,名字為“Jerry”,當(dāng)在屏幕上觸摸小老虎,會(huì)出現(xiàn)一個(gè)列表,列表提供多個(gè)動(dòng)作按鈕,包括閑置動(dòng)作、撓癢、輕拍、轉(zhuǎn)左、轉(zhuǎn)右,點(diǎn)擊動(dòng)作,小老虎就能做出相應(yīng)的動(dòng)作。視頻演示技術(shù)平臺(tái)UnityMetaioAndroidMetaioMetaio是2003年由大眾的一個(gè)項(xiàng)目衍生出來(lái)的一家虛擬現(xiàn)實(shí)初創(chuàng)公司,專(zhuān)門(mén)從事增強(qiáng)現(xiàn)實(shí)和機(jī)器視覺(jué)解決方案。2015年5月29日,蘋(píng)果已經(jīng)悄悄地收購(gòu)了Metaio。這家公司的網(wǎng)站稱(chēng)已經(jīng)停止接受新客戶。MetaioSDKMetaioSDK是一個(gè)AR軟件開(kāi)發(fā)程序包,SDK里面包括了四個(gè)單元,影像采集單元(Capturing)、傳感器接口單元(Sensor-interface)、渲染單元(Rendering)、跟蹤單元(Tracking),這四個(gè)單元包含了增強(qiáng)現(xiàn)實(shí)的所有功能。此外,MetaioSDK為我們提供了一個(gè)接口,這個(gè)接口把AR應(yīng)用和4個(gè)單元連接起來(lái),用戶可以通過(guò)應(yīng)用程序編程接口(API)實(shí)現(xiàn)各種復(fù)雜的AR功能,簡(jiǎn)化用戶工作難度。MetaioSDK支持當(dāng)今流行的軟件開(kāi)發(fā)平臺(tái),包括Andriod、IOS、Unity3D和Windows,在各大平臺(tái)上加入MetaioSDK,能夠開(kāi)發(fā)出更加強(qiáng)大的AR應(yīng)用。AndroidAndroid(在中國(guó)稱(chēng)“安卓”)是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。Android操作系統(tǒng)最初由AndyRubin開(kāi)發(fā),主要支持手機(jī)。2011年第一季度,Android在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一?,F(xiàn)今,Andriod和IOS是最主流的兩個(gè)系統(tǒng)。環(huán)境配置1、AndriodSDK的安裝與配置2、MetaioSDK的安裝與配置MetaioSDK的安裝配置非常簡(jiǎn)單,通過(guò)官網(wǎng)下載自己需要的SDK版本,下載完成后直接解壓就可以了。3、Unity3D的安裝與配置1、AndriodSDK的安裝與配置安裝Java,網(wǎng)上下載JDK,按著步驟一步一步就能安裝成功。安裝完Java后,需要進(jìn)行環(huán)境配置,首先點(diǎn)擊我的電腦-屬性-高級(jí)-環(huán)境變量。下載安裝AndriodSDKJava環(huán)境變量變量名JAVA_HOME,在系統(tǒng)變量新建一個(gè)變量,并命名為JAVA_HOME,變量值為你的java安裝的路徑,點(diǎn)擊保存Java環(huán)境變量變量名Path,變量值里添加Java安裝文件夾的bin子文件夾路徑,每個(gè)路徑需以分號(hào)隔開(kāi)。AndriodSDK系統(tǒng)變量變量Path,變量值里添加AndriodSDK的安裝文件夾的platform-tools子文件夾路徑。2、MetaioSDK的安裝與配置MetaioSDK的安裝配置比較簡(jiǎn)單,通過(guò)官網(wǎng)下載自己需要的SDK版本資源包,下載完成后直接解壓,最后導(dǎo)入U(xiǎn)nity即可ke。3、Unity的安裝與配置參見(jiàn)前面課件或講義在Unity中添加AndriodSDK的安裝路徑添加AndriodSDK的安裝路徑打開(kāi)Unity3D,UnityEdit->Preferences...瀏覽AndoidSDK的目錄,添加AndriodSDK的安裝路徑。詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)1、創(chuàng)建一個(gè)新的Unity3D工程2、導(dǎo)入metaio資源包metaioSDK.unitypackage3、注冊(cè)自己的應(yīng)用,生成ApplicationSignature(應(yīng)用簽名代碼)創(chuàng)建主場(chǎng)景,把場(chǎng)景中的MainCamera刪除,把預(yù)制件(Prefab)metaioSDK和metaioTracker拖到場(chǎng)景中。增加一個(gè)layer,命名為metaioLayer,metaioSDK中的DeviceCamera會(huì)自動(dòng)將Layer設(shè)置為metaioLayer。設(shè)置signature要注冊(cè)自己的應(yīng)用,即ApplicationSignature(應(yīng)用簽名代碼)。首先需要打開(kāi)Plugins文件夾中的AndroidManifest.xml,第四行代碼為“package="com.unity3d.unity"”(應(yīng)用識(shí)別名AppIdentifier),將其修改為自己的Identifier,本案例為“com.unity3d.Tiger_Jerry”,修改并保存。登陸metaio的官方網(wǎng)站:/index.php?state=portal(申請(qǐng)前需注冊(cè)賬號(hào)),輸入AppName和AppIdentifier,點(diǎn)擊RegisteryourApp,系統(tǒng)生成SDKSignature為:“eLuyOeB1qaZpLsEiuvwfTzktloHuBOSAT/6cZRiizqQ=”。SDKSignatures添加Signature到Unity3D復(fù)制Signature到預(yù)制件metaioSDK的對(duì)應(yīng)參數(shù)添加跟蹤在Assets文件夾上創(chuàng)建一個(gè)子文件夾,命名為“StreamingAssets”,把圖像標(biāo)識(shí)和跟蹤配置文件放到該文件夾內(nèi)。跟蹤配置文件使用metaioSDK提供的TrackingData_MultiMarkerless.xml,跟蹤目標(biāo)的主要參數(shù)為<ReferenceImage>(<參考圖像>),把選擇的圖像標(biāo)識(shí)的名字寫(xiě)上去,就能使用了。部分TrackingData_MultiMarkerless.xml代碼<SensorCOS> <SensorCosID>Patch1</SensorCosID> <Parameters> <ReferenceImage>target.png</ReferenceImage> <SimilarityThreshold>0.7</SimilarityThreshold> </Parameters></SensorCOS>選取圖像標(biāo)識(shí)metaioSDK為我們提供了默認(rèn)的圖像,如果默認(rèn)圖片不能滿足你的需求,還可以自己選取圖像。圖片要求:①有多種不同顏色的,對(duì)比度高,銳化的邊緣,metaio認(rèn)的是灰度圖,不同顏色就有不同的明度。②圖片是正方形或者是3:2或4:3左右的長(zhǎng)方形。接近比例即可。③不要細(xì)小的文字,扁平單色的陰影④如果圖片中有多個(gè)平面陰影,選擇清晰的部分作為掃描目標(biāo)⑤圖片不能太黑暗,沒(méi)有反射高光區(qū)域⑥圖片應(yīng)大于150px-200px本案例圖像標(biāo)識(shí)圖像標(biāo)識(shí)和跟蹤配置文件都準(zhǔn)備好后,在預(yù)制件metaioSDK中Selectconfiguration選取選取StreamingAssets,在下個(gè)參數(shù)中拉入跟蹤配置文件TrackingData_MultiMarkerless.xml。虛擬場(chǎng)景設(shè)計(jì)創(chuàng)建一個(gè)老虎3D模型,添加動(dòng)畫(huà)系統(tǒng)(Animation)虛擬場(chǎng)景設(shè)計(jì)添加交互控制,當(dāng)點(diǎn)擊小老虎時(shí),出現(xiàn)一個(gè)菜單,點(diǎn)擊動(dòng)作按鈕,小老虎就能做出相應(yīng)動(dòng)作。首先為小老虎加上一個(gè)Cube游戲?qū)ο?,去掉MeshRender屬性,取消BoxCollider屬性,然后把Cube移動(dòng)到小老虎上,放大到與小老虎同等大小,與小老虎完全重合。部分代碼if(GUI.Button(newRect(10,150,380,80),"Idle")){ obj.animation.CrossFade("Idle"); }if(GUI.Button(newRect(10,280,380,80),"Scratch")){ obj.animation.CrossFade("Scratch"); }if(GUI.Button(newRect(10,410,380,80),"Tap")){ obj.animation.CrossFade("Tap"); }if(GUI.Button(newRect(10,540,380,80),"TurnLeft")) obj.animation.CrossFade("Turn_Left");if(GUI.Button(newRect(10,670,380,80),"TurnRight")) obj.animation.CrossFade("Turn_Right");if(GUI.Button(newRect(10,800,380,80),"close")) Window=false;}提示Animation.CrossFade淡入淡出把腳本添加到Cube對(duì)象上,當(dāng)點(diǎn)擊Cube對(duì)象時(shí),就能彈出列表,點(diǎn)擊按鈕小老虎就能做出動(dòng)作。在MainCmera中拖入一個(gè)音樂(lè)文件做背景音樂(lè)。點(diǎn)擊目標(biāo)點(diǎn)擊前點(diǎn)擊Tap按鈕再創(chuàng)建一個(gè)開(kāi)始場(chǎng)景最后生成應(yīng)用運(yùn)行Andriod虛擬機(jī)成功后,點(diǎn)擊buildandrun,系統(tǒng)就會(huì)生成一個(gè)APK,把APK安裝到Andriod智能手機(jī)上即可。虛擬場(chǎng)景設(shè)計(jì)創(chuàng)建主場(chǎng)景創(chuàng)建一個(gè)老虎3D模型,添加動(dòng)畫(huà)系統(tǒng)、碰撞檢測(cè)、交互腳本、背景音樂(lè)創(chuàng)建開(kāi)始場(chǎng)景創(chuàng)建簡(jiǎn)介場(chǎng)景生成應(yīng)用6.應(yīng)用測(cè)試通過(guò)Andriod智能手機(jī)的測(cè)試,發(fā)現(xiàn)對(duì)于現(xiàn)階段的智能手機(jī)都能運(yùn)行正常。但由于在電腦測(cè)試時(shí)使用攝像頭與手機(jī)攝像頭像素差別較大,因此造成按鈕、文字出現(xiàn)問(wèn)題,后期修改后順利解決了問(wèn)題。 基于增強(qiáng)現(xiàn)實(shí)技術(shù)
的3D畫(huà)冊(cè)的研究與實(shí)現(xiàn)兒童時(shí)期孩子都喜歡到處涂涂畫(huà)畫(huà)的填色游戲,如果能夠把3D畫(huà)冊(cè)將傳統(tǒng)著色簿和增強(qiáng)現(xiàn)實(shí)加以融合,相比以往涂完作罷的方式,增強(qiáng)現(xiàn)實(shí)技術(shù)可以創(chuàng)造性地把兒童隨性完成的涂鴉作品以完整的3D動(dòng)畫(huà)形式活生生地呈現(xiàn)出來(lái),給了孩子的涂鴉作品一個(gè)絕佳的展示平臺(tái)。在增強(qiáng)現(xiàn)實(shí)技術(shù)3D畫(huà)冊(cè)中,涂鴉底板是實(shí),通過(guò)增強(qiáng)現(xiàn)實(shí)技術(shù)展示出來(lái)的所填色繪制涂鴉底板所代表的物體形象的三維模型、音頻和動(dòng)畫(huà)等內(nèi)容是虛擬對(duì)現(xiàn)實(shí)的信息擴(kuò)充和拓展。3D畫(huà)冊(cè)能給用戶視覺(jué)上帶來(lái)不一樣的色彩震撼力,賦予畫(huà)冊(cè)產(chǎn)品生命力,對(duì)兒童涂鴉學(xué)習(xí)起到極其關(guān)鍵的作用。選題依據(jù)項(xiàng)目模塊相關(guān)技術(shù)-高通(Qualcomm)技術(shù)高通發(fā)布的增強(qiáng)現(xiàn)實(shí)插件,增強(qiáng)現(xiàn)實(shí)軟件開(kāi)發(fā)工具包(VuforiaAugmentedRealitySDK),是主要用于智能終端擴(kuò)充現(xiàn)實(shí)研發(fā)工具庫(kù)。高通增強(qiáng)現(xiàn)實(shí)軟件開(kāi)發(fā)工具包,是為Unity3D量身打造的,不同于簡(jiǎn)單比對(duì)像素相似度,或者一些單純的特征規(guī)則,其主要運(yùn)用計(jì)算機(jī)視覺(jué)相關(guān)技術(shù)及時(shí)辨別與獲取二維對(duì)象圖像或簡(jiǎn)單的空間對(duì)象,并讓研發(fā)團(tuán)隊(duì)利用攝像頭將虛擬對(duì)象置于特定位置,而且可以調(diào)節(jié)對(duì)象在攝像機(jī)視野里真實(shí)場(chǎng)景中的方位。同時(shí)它支持Android和iOS,能夠支持Unity3D下增強(qiáng)現(xiàn)實(shí)應(yīng)用提供程序的開(kāi)發(fā)設(shè)計(jì),實(shí)現(xiàn)應(yīng)用程序向移動(dòng)端的移植,拓展增強(qiáng)現(xiàn)實(shí)應(yīng)用的硬件應(yīng)用限制和適用范圍。三維注冊(cè)技術(shù)三維注冊(cè)算法實(shí)時(shí)判斷跟蹤攝像機(jī)在真實(shí)環(huán)境中的方位,依據(jù)攝像機(jī)獲取到的圖像信息來(lái)確定虛擬3D模型映射在現(xiàn)實(shí)環(huán)境中放置的方位,最后通過(guò)運(yùn)用顯示技術(shù),將其實(shí)時(shí)地呈現(xiàn)出來(lái)的技術(shù)。相關(guān)技術(shù)
基于標(biāo)志物的跟蹤注冊(cè)技術(shù)三維注冊(cè)技術(shù)--注冊(cè)方法空間對(duì)象、平面圖像無(wú)標(biāo)志物類(lèi)
硬件配備要求高三維注冊(cè)技術(shù)--基于平面標(biāo)志物注冊(cè)方法基于視覺(jué)的注冊(cè)技術(shù),通過(guò)給定的一幅或多幅圖像確定攝像機(jī)和真實(shí)世界目標(biāo)的相對(duì)位置和方位。不需求精密的硬件追蹤配置相關(guān)技術(shù)
基于標(biāo)志物的跟蹤注冊(cè)技術(shù)課題針對(duì)于移動(dòng)端的設(shè)計(jì),運(yùn)行平臺(tái)的計(jì)算能力有限
涂鴉底板制成標(biāo)志物以幫助實(shí)現(xiàn)三維注冊(cè)相關(guān)技術(shù)
基于標(biāo)志物的跟蹤注冊(cè)技術(shù)攝像頭方位的計(jì)算獲取相機(jī)內(nèi)部參數(shù),根據(jù)這些參數(shù)和獲取的圖像計(jì)算相機(jī)位置和方向。相機(jī)參數(shù):鏡頭焦距,傳感器像元高度、寬度、高寬比相關(guān)技術(shù)-相機(jī)標(biāo)定攝像機(jī)跟蹤技術(shù)通過(guò)實(shí)時(shí)記錄跟蹤目標(biāo)(文中指的是標(biāo)識(shí))在真實(shí)世界里運(yùn)動(dòng)方向以及所處位置,讓虛擬場(chǎng)景和真實(shí)環(huán)境無(wú)縫銜接,確保三維注冊(cè)更加精準(zhǔn)。(1)增強(qiáng)現(xiàn)實(shí)系統(tǒng)通過(guò)分析攝像機(jī)獲取到的現(xiàn)實(shí)環(huán)境圖像,并且通過(guò)提取、檢測(cè)與識(shí)別圖像的方法來(lái)最終確定標(biāo)識(shí);(2)在得到標(biāo)志后,通過(guò)計(jì)算攝像機(jī)對(duì)于該標(biāo)志的方位,從而得到攝像機(jī)自身外部的參數(shù)矩陣;(3)依據(jù)判斷識(shí)別出的標(biāo)識(shí),在特定位置生成與之相對(duì)應(yīng)的三維模型;(4)通過(guò)攝像機(jī)的方位完成虛擬模型的三維注冊(cè),最后依托顯示技術(shù)把增強(qiáng)后的效果呈現(xiàn)出來(lái)。相關(guān)技術(shù)-攝像機(jī)跟蹤技術(shù)相關(guān)技術(shù)-分UVUV是UV紋理貼圖坐標(biāo)的簡(jiǎn)稱(chēng),UV與三維坐標(biāo)方向X軸,Y軸,Z軸相似,同為方向概念。UV紋理坐標(biāo)記錄著多邊形和細(xì)分曲面網(wǎng)格上點(diǎn)的信息。這個(gè)系統(tǒng)叫UV紋理空間。UV紋理空間中,U表示水平方向,V表示垂直方向,這個(gè)空間中的點(diǎn)叫做UV點(diǎn),和模型網(wǎng)格上的點(diǎn)是一一對(duì)應(yīng)的,可以通過(guò)UV編輯器來(lái)查看UV點(diǎn)在貼圖上的位置。相關(guān)技術(shù)-分UV將一個(gè)三維曲面網(wǎng)格展開(kāi)到一個(gè)平面上,這個(gè)展開(kāi)的平面就是UV貼圖。得到UV貼圖的過(guò)程就是分UV。分UV是一個(gè)三維轉(zhuǎn)二維的過(guò)程,更直觀地表達(dá)就是將三維立體模型的表面轉(zhuǎn)化為平面的過(guò)程。模型與UV坐標(biāo)貼圖的映射關(guān)系是由建模的最后步驟UVmapping完成的,即UV映射。相關(guān)技術(shù)-分UV在傳統(tǒng)的分UV技術(shù)的基礎(chǔ)上,合理使用UV重疊和拆分技術(shù),使分UV的結(jié)果既能夠完成模型的貼圖渲染又要具藝術(shù)性,使之直觀地顯現(xiàn)出模型的形象本質(zhì),同時(shí)一個(gè)模型的所有組成的分UV結(jié)果不重合地分布在一張貼圖上。在本項(xiàng)目中里我們稱(chēng)這種分UV方法為人工形象化分UV?;驹瓌t是一樣的一個(gè)模型對(duì)應(yīng)一張UV貼圖相關(guān)技術(shù)-人工形象化分UV相關(guān)技術(shù)-人工形象化分UV相關(guān)技術(shù)-人工形象化分UV畫(huà)冊(cè)Marker檢測(cè)識(shí)別畫(huà)冊(cè)Marker的設(shè)計(jì)中,畫(huà)冊(cè)標(biāo)識(shí)既是系統(tǒng)三維注冊(cè)實(shí)現(xiàn)的手段,又是畫(huà)冊(cè)增強(qiáng)現(xiàn)實(shí)模型紋理信息的攜帶者。畫(huà)冊(cè)Marker檢測(cè)識(shí)別畫(huà)冊(cè)Marker檢測(cè)識(shí)別FrameMarker框架的惟一的ID標(biāo)記編碼成二進(jìn)制模式分布在形象標(biāo)識(shí)的四周邊緣。幀標(biāo)記允許任何圖像被放置在邊界標(biāo)識(shí)。畫(huà)冊(cè)Marker檢測(cè)識(shí)別ImageTarget是可以被VuforiaSDK探測(cè)和跟蹤的圖像。不同于傳統(tǒng)的基準(zhǔn)標(biāo)記,數(shù)據(jù)矩陣代碼和QR碼,圖像目標(biāo)不需要特殊的黑色和白色區(qū)域或代碼識(shí)別。SDK檢測(cè)和跟蹤圖像本身的自然特性,然后對(duì)比這些天然特性與已知的目標(biāo)資源數(shù)據(jù)庫(kù)圖像的自然特性。一旦檢測(cè)到圖像目標(biāo),SDK將跟蹤目標(biāo)圖像,哪怕目標(biāo)圖像只要少部分在相機(jī)的視野。圖像本身作為Marker畫(huà)冊(cè)Marker設(shè)計(jì)畫(huà)冊(cè)Marker設(shè)計(jì)畫(huà)冊(cè)Marker設(shè)計(jì)畫(huà)冊(cè)Marker設(shè)計(jì)畫(huà)冊(cè)Marker設(shè)計(jì)畫(huà)冊(cè)Marker設(shè)計(jì)畫(huà)冊(cè)Marker設(shè)計(jì)標(biāo)識(shí)坐標(biāo)系轉(zhuǎn)換在基于標(biāo)識(shí)的增強(qiáng)現(xiàn)實(shí)系統(tǒng)中Marker坐標(biāo)系矩陣轉(zhuǎn)化至Camera坐標(biāo)系Camera坐標(biāo)系矩陣轉(zhuǎn)化至圖像坐標(biāo)系標(biāo)識(shí)坐標(biāo)系轉(zhuǎn)換世界坐標(biāo)系轉(zhuǎn)化到攝像機(jī)坐標(biāo)系標(biāo)識(shí)坐標(biāo)系轉(zhuǎn)換攝像機(jī)坐標(biāo)系轉(zhuǎn)化到實(shí)際圖像坐標(biāo)系理想狀態(tài)下攝像機(jī)的光軸經(jīng)過(guò)平面中心,并且與成像平面垂直,在圖7中三角形OO1P1和OO2P相似:f/z=O1P1/O2P2=x1/x=y1/y。x1
=xf/z,y1
=fy/z??梢杂谬R次方程清晰地把攝像機(jī)的成像模型表示成:標(biāo)識(shí)坐標(biāo)系轉(zhuǎn)換標(biāo)識(shí)坐標(biāo)系為模型渲染紋理貼圖的坐標(biāo)系命名為Matrix4x4Matrixuv,uv為標(biāo)識(shí)名,則標(biāo)識(shí)坐標(biāo)系的矩陣為:Matrixuv=Matrix4x4.TRS(uv.transform.position,uv.transform.rotation,uv.transform.lossyScale));攝像機(jī)坐標(biāo)系為內(nèi)置高通增強(qiáng)現(xiàn)實(shí)預(yù)置攝像機(jī)系統(tǒng)坐標(biāo)系命名為Matrix4x4MatrixarCamera,arCamera為攝像機(jī),則攝像機(jī)坐標(biāo)系為:Matrix4x4MatrixarCamera=Matrix4x4.TRS(arCamera.transform.position,arCamera.transform.rotation,arCamera.transform.lossyScale);設(shè)轉(zhuǎn)換完成的圖像坐標(biāo)系為Matrix4x4MatrixCoordinate,最后可完成得到MatrixCoordinate=arCjectionMatrix*MatrixarCamera.inverse*Matrixuv。渲染3D模型并展示在Unity3D中所以的圖像繪制都是通過(guò)Shader完成的。通常情況下圖像的渲染是利用Unity3D自帶的Shader,也就是Build-inShader完成的。本項(xiàng)目為了完成三維模型的渲染特殊效果,需要自定義功能Shader用于該項(xiàng)目根據(jù)坐標(biāo)系轉(zhuǎn)換獲取貼圖渲染增強(qiáng)現(xiàn)實(shí)目標(biāo)三維模型。渲染3D模型并展示Shader(著色器)是由GPU運(yùn)行的,可以操作三維立體模型的一段計(jì)算機(jī)程序,它的功能是用特定的方法把輸入的Mesh(網(wǎng)格)、貼圖以及顏色等信息打包在一起輸出。渲染3D模型并展示Shader程序的基本結(jié)構(gòu)渲染3D模型并展示基于增強(qiáng)現(xiàn)實(shí)技術(shù)的3D畫(huà)冊(cè)實(shí)現(xiàn)需要完成對(duì)待顯示3D模型表面紋理基于UV計(jì)算處理效果,因而需要根據(jù)要求定制一個(gè)可編程著色器,取名為ARPictureUV??删幊讨鞒绦蚧窘Y(jié)構(gòu)與工作流程的基礎(chǔ)上完成的。渲染3D模型并展示可編程著色器工作流程系統(tǒng)實(shí)現(xiàn)-總體架構(gòu)設(shè)計(jì)系統(tǒng)實(shí)現(xiàn)-總體架構(gòu)設(shè)計(jì)虛實(shí)融合原理圖系統(tǒng)實(shí)現(xiàn)-總體架構(gòu)設(shè)計(jì)項(xiàng)目功能結(jié)構(gòu)圖系統(tǒng)實(shí)現(xiàn)-總體架構(gòu)設(shè)計(jì)系統(tǒng)總體狀態(tài)圖系統(tǒng)實(shí)現(xiàn)FrameMarker場(chǎng)景效果系統(tǒng)實(shí)現(xiàn)ImageMarker場(chǎng)景效果系統(tǒng)實(shí)現(xiàn)ImageLocationMarker3D場(chǎng)景效果效果展示FrameMarker演示畫(huà)冊(cè)效果展示FrameMarker演示效果效果展示ImageMarker畫(huà)冊(cè)測(cè)試圖效果展示ImageMarker演示效果效果展示ImageMarker演示效果效果展示ImageLocationMarker測(cè)試畫(huà)冊(cè)效果展示ImageLocationMarker測(cè)試效果效果效果展示效果展示就畫(huà)冊(cè)增強(qiáng)現(xiàn)實(shí)的效果的穩(wěn)定性而言,利用識(shí)別度最高級(jí)別的邊框制成的ImageLocationMarker涂鴉底板更具優(yōu)勢(shì)(該例子達(dá)到了此要求)。ImageMarker如果能夠做成最高級(jí)別的識(shí)別度,也能夠有很好的效果,只是這個(gè)無(wú)疑給難涂鴉底板設(shè)計(jì)增加了難度。部分代碼usingUnityEngine;usingSystem.Collections;publicclasstestSavePictureUV:MonoBehaviour{ publicGameObjectButoonSave; publicGameObjectButoonResave; publicSavePictureUVsave; voidStart(){ ButoonResave.GetComponent<UIButton>().isEnabled=false; } publicvoidBSave(){if(save){ save.enabled=true; save.show();ButoonResave.GetComponent<UIButton>().isEnabled=true;ButoonSave.GetComponent<UIButton>().isEnabled=false; }} publicvoidBResave(){if(save){ save.enabled=true; save.reshow(); save.enabled=false; ButoonResave.GetComponent<UIButton>().isEnabled=false; ButoonSave.GetComponent<UIButton>().isEnabled=true; }}}usingUnityEngine;usingSystem.Collections;[RequireComponent(typeof(Camera))]publicclassSavePictureUV:MonoBehaviour{ publicCameraarCamera; publicMaterialuvMaterial; publicGameObjectuvQuad; publicGameObjectmodel;publicGameObjectfound; RenderTexturerenderTexture; boolisshow=false; Matrix4x4Matrixuv,MatrixarCamera,MatrixCoordinate; publicvoidshow(){model.SetActive(true);found.SetActive(false);isshow=true; } publicvoidreshow() { model.SetActive(false); found.SetActive(true); if(renderTexture!=null)renderTexture.Release(); renderTexture=null;uvMaterial.mainTexture=null;isshow=false; } voidOnRenderImage(RenderTexturesrc,RenderTexturedest){ if(isshow){ if(arCamera==null||uvMaterial==null) enabled=false; if(renderTexture!=null)renderTexture.Release(); renderTexture=null; renderTexture=newRenderTexture((int)camera.pixelWidth,(int)camera.pixelHeight,0); renderTexture.Create(); Graphics.Blit(src,renderTexture); translate(); uvMaterial.SetMatrix("_uvm",MatrixCoordinate); uvMaterial.mainTexture=renderTexture; Graphics.Blit(src,dest); enabled=false; } }voidtranslate(){Matrixuv=Matrix4x4.TRS(uvQuad.transform.position,uvQuad.transform.rotation,uvQuad.transform.lossyScale); MatrixarCamera=Matrix4x4.TRS(arCamera.transform.position,arCamera.transform.rotation,arCamera.transform.lossyScale); MatrixCoordinate=arCjectionMatrix*MatrixarCamera.inverse*Matrixuv; }}涂鴉底板識(shí)別數(shù)據(jù)搜集分析識(shí)別方案識(shí)別遮擋情況重復(fù)數(shù)*案例數(shù)識(shí)別/不識(shí)別結(jié)論FrameMarker幀標(biāo)識(shí)部分遮擋20*32/58幀標(biāo)識(shí)部分遮擋不識(shí)別FrameMarker幀標(biāo)識(shí)無(wú)遮擋20*359/1幀標(biāo)全部可見(jiàn)時(shí)成功識(shí)別FrameMarker幀標(biāo)識(shí)成功識(shí)別后部分遮擋20*31/59幀標(biāo)識(shí)成功識(shí)別后部分遮擋不可識(shí)別ImageMarkerImageMarker首次識(shí)別部分遮擋20*31/59ImageMarker首次識(shí)別部分遮擋不識(shí)別ImageMarkerImageMarker無(wú)遮擋20*356/4ImageMarker全部可見(jiàn)成功識(shí)別ImageMarkerImageMarker成功識(shí)別后部分遮擋20*33/57ImageMarker成功識(shí)別后部分遮擋可識(shí)別七彩海洋館游戲內(nèi)容:游戲場(chǎng)景為迷宮。螃蟹為玩家,其他動(dòng)物為敵人,螃蟹在場(chǎng)景中通過(guò)WSAD健前進(jìn)后退左轉(zhuǎn)右轉(zhuǎn),按空格鍵發(fā)射子彈,前進(jìn)過(guò)程中必須消除其他動(dòng)物障礙,子彈如果射中動(dòng)物,動(dòng)物和子彈都消失,如果到達(dá)終點(diǎn),則出現(xiàn)是否進(jìn)入下一關(guān),下一關(guān)過(guò)關(guān)后,則出現(xiàn)勝利畫(huà)面。預(yù)制體制作觸發(fā)器功能子彈發(fā)射運(yùn)動(dòng)控制重復(fù)調(diào)用倒計(jì)時(shí)碰撞檢測(cè)時(shí)銷(xiāo)毀物體菜單腳本MainMenu.csusingUnityEngine;usingSystem.Collections;publicclassMainMenu:MonoBehaviour{privateboolmenushow; voidStart(){ DontDestroyOnLoad(this); menushow=true;//初始化為true,即顯示菜單 } voidUpdate(){ if(Input.GetKey(KeyCode.Escape)){menushow=true;}} voidOnGUI(){ if(menushow==false){return; } if(GUI.Button(newRect(Screen.width/2-30,Screen.height/2-90,60,30),"Level1")){ Application.LoadLevel(1);menushow=false;//隱藏菜單 }elseif(GUI.Button(newRect(Screen.width/2-30,Screen.height/2-50,60,30),"Level2")){ Application.LoadLevel(2);menushow=false;//隱藏菜單 }elseif(GUI.Button(newRect(Screen.width/2-30,Screen.height/2-10,60,30),"Help")){ Application.LoadLevel(6);menushow=false;//隱藏菜單 }elseif(GUI.Button(newRect(Screen.width/2-30,Screen.height/2+30,60,30),"Quit")){ Application.LoadLevel(3);menushow=false;//隱藏菜單 } }}DontDestroyOnLoad(this);加載新場(chǎng)景的時(shí)候使目標(biāo)物體不被自動(dòng)銷(xiāo)毀。
子彈發(fā)射腳本Fire.csusingUnityEngine;usingSystem.Collections;publicclassFire:MonoBehaviour{publicTransformFirePoint;publicRigidbodyBullet; //Updateiscalledonceperframe voidUpdate(){ //按空格鍵發(fā)射子彈
if(Input.GetKey(KeyCode.Space)){ Rigidbodyclone; clone=Instantiate(Bullet,FirePoint.position,FirePoint.rotation)asRigidbody; clone.velocity=transform.TransformDirection(Vector3.forward*500); } }
}publicTransformFirePoint;Transform是伴隨游戲?qū)ο笊傻?,所以不能直接單?dú)創(chuàng)建。
你可以聲明一個(gè)Transform然后給他賦值,比如聲明一個(gè)公共的Transform,然后在在屬性面板中將你需要物體(prefabs)拖拽到該變量上。publicRigidbodyBullet;聲明剛性物體,預(yù)設(shè)物體賦值Rigidbodyclone; clone=Instantiate(Bullet,FirePoint.position,FirePoint.rotation)asRigidbody; clone.velocity=transform.TransformDirection(Vector3.forward*500);clone是個(gè)Rigidbody組件而Instantiate()是復(fù)制一個(gè)游戲?qū)ο蟆?/克隆炮彈,以及炮彈發(fā)射的方向//克隆炮彈發(fā)射方向上的速度游戲邏輯腳本GameLogic.csusingUnityEngine;usingSystem.Collections;publicclassGameLogic:MonoBehaviour{ publicGameObjectInsert;publicGUIStylemyStyle; privatefloatmytime; //Usethisforinitialization voidStart(){mytime=120.0f; InvokeRepeating("count",0,
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)擠壓式空心刨花板數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)平花花梨木硬單刀數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)包裝印刷機(jī)械配件數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 個(gè)人民間知識(shí)產(chǎn)權(quán)糾紛調(diào)解協(xié)議2025年版4篇
- 2025版消防工程材料采購(gòu)與供應(yīng)服務(wù)合同3篇
- 二零二五年度工程項(xiàng)目現(xiàn)場(chǎng)勘查與質(zhì)量控制合同3篇
- 部編版《昆蟲(chóng)記》復(fù)習(xí)試題及答案
- 2025年度個(gè)人二手房交易風(fēng)險(xiǎn)防范合同示范文本2篇
- 商業(yè)演出活動(dòng)舉辦合同
- 舊車(chē)買(mǎi)賣(mài)合同范本
- 江西省部分學(xué)校2024-2025學(xué)年高三上學(xué)期1月期末英語(yǔ)試題(含解析無(wú)聽(tīng)力音頻有聽(tīng)力原文)
- 農(nóng)民工工資表格
- 【寒假預(yù)習(xí)】專(zhuān)題04 閱讀理解 20篇 集訓(xùn)-2025年人教版(PEP)六年級(jí)英語(yǔ)下冊(cè)寒假提前學(xué)(含答案)
- 2024年智能監(jiān)獄安防監(jiān)控工程合同3篇
- 2024年度窯爐施工協(xié)議詳例細(xì)則版B版
- 幼兒園籃球課培訓(xùn)
- 基底節(jié)腦出血護(hù)理查房
- 工程公司總經(jīng)理年終總結(jié)
- 【企業(yè)盈利能力探析的國(guó)內(nèi)外文獻(xiàn)綜述2400字】
- 三年級(jí)上冊(cè)數(shù)學(xué)口算題1000道帶答案
- 統(tǒng)編版(2024新版)七年級(jí)《道德與法治》上冊(cè)第一單元《少年有夢(mèng)》單元測(cè)試卷(含答案)
評(píng)論
0/150
提交評(píng)論