虛擬現(xiàn)實(shí)技術(shù)及其實(shí)踐教程55025unity_第1頁
虛擬現(xiàn)實(shí)技術(shù)及其實(shí)踐教程55025unity_第2頁
虛擬現(xiàn)實(shí)技術(shù)及其實(shí)踐教程55025unity_第3頁
虛擬現(xiàn)實(shí)技術(shù)及其實(shí)踐教程55025unity_第4頁
虛擬現(xiàn)實(shí)技術(shù)及其實(shí)踐教程55025unity_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

黃靜虛擬現(xiàn)實(shí)VirtualRealityUnity游戲引擎

介紹300年后的人類是這樣的,看完目瞪口呆!老板在線5年后三維全息虛擬技術(shù)正式大規(guī)模商用,可以通過VR、AR技術(shù)進(jìn)行遠(yuǎn)程交流、網(wǎng)絡(luò)購物了!視頻通話已經(jīng)out了!宅男、宅女們終于可以足不出戶了!未來的辦公室這樣看比賽75年后

虛擬現(xiàn)實(shí)技術(shù)為醫(yī)療診斷提供了更好的支持?;蚣夹g(shù)的提升,大大加速了人類進(jìn)化,人類平均智商提升到150。90年后,人類帶上“大腦帽”可以進(jìn)入虛擬世界!宜家VR應(yīng)用上架HTCVive,首家推出虛擬現(xiàn)實(shí)購物應(yīng)用最近IKEA宜家制作的VR應(yīng)用《IKEAVRExperience》在SteamVR上線,可以在HTCVive中提前體驗(yàn)宜家家具的效果。用戶可以在應(yīng)用中用宜家的家具布置一個(gè)屬于自己的廚房,試用其中三種裝飾風(fēng)格,然后置身其中漫步欣賞,并通過點(diǎn)擊更換櫥柜和抽屜的顏色。移動(dòng)平臺上增強(qiáng)現(xiàn)實(shí)技術(shù)的卡通老虎互動(dòng)項(xiàng)目簡介該系統(tǒng)應(yīng)用運(yùn)行在Andriod智能手機(jī)上。虛擬場景為一個(gè)可愛的小老虎,名字為“Jerry”,當(dāng)在屏幕上觸摸小老虎,會出現(xiàn)一個(gè)列表,列表提供多個(gè)動(dòng)作按鈕,包括閑置動(dòng)作、撓癢、輕拍、轉(zhuǎn)左、轉(zhuǎn)右,點(diǎn)擊動(dòng)作,小老虎就能做出相應(yīng)的動(dòng)作。視頻演示技術(shù)平臺UnityMetaioAndroidMetaioMetaio是2003年由大眾的一個(gè)項(xiàng)目衍生出來的一家虛擬現(xiàn)實(shí)初創(chuàng)公司,專門從事增強(qiáng)現(xiàn)實(shí)和機(jī)器視覺解決方案。2015年5月29日,蘋果已經(jīng)悄悄地收購了Metaio。這家公司的網(wǎng)站稱已經(jīng)停止接受新客戶。MetaioSDKMetaioSDK是一個(gè)AR軟件開發(fā)程序包,SDK里面包括了四個(gè)單元,影像采集單元(Capturing)、傳感器接口單元(Sensor-interface)、渲染單元(Rendering)、跟蹤單元(Tracking),這四個(gè)單元包含了增強(qiáng)現(xiàn)實(shí)的所有功能。此外,MetaioSDK為我們提供了一個(gè)接口,這個(gè)接口把AR應(yīng)用和4個(gè)單元連接起來,用戶可以通過應(yīng)用程序編程接口(API)實(shí)現(xiàn)各種復(fù)雜的AR功能,簡化用戶工作難度。MetaioSDK支持當(dāng)今流行的軟件開發(fā)平臺,包括Andriod、IOS、Unity3D和Windows,在各大平臺上加入MetaioSDK,能夠開發(fā)出更加強(qiáng)大的AR應(yīng)用。AndroidAndroid(在中國稱“安卓”)是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機(jī)。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一?,F(xiàn)今,Andriod和IOS是最主流的兩個(gè)系統(tǒng)。環(huán)境配置1、AndriodSDK的安裝與配置2、MetaioSDK的安裝與配置MetaioSDK的安裝配置非常簡單,通過官網(wǎng)下載自己需要的SDK版本,下載完成后直接解壓就可以了。3、Unity3D的安裝與配置1、AndriodSDK的安裝與配置安裝Java,網(wǎng)上下載JDK,按著步驟一步一步就能安裝成功。安裝完Java后,需要進(jìn)行環(huán)境配置,首先點(diǎn)擊我的電腦-屬性-高級-環(huán)境變量。下載安裝AndriodSDKJava環(huán)境變量變量名JAVA_HOME,在系統(tǒng)變量新建一個(gè)變量,并命名為JAVA_HOME,變量值為你的java安裝的路徑,點(diǎn)擊保存Java環(huán)境變量變量名Path,變量值里添加Java安裝文件夾的bin子文件夾路徑,每個(gè)路徑需以分號隔開。AndriodSDK系統(tǒng)變量變量Path,變量值里添加AndriodSDK的安裝文件夾的platform-tools子文件夾路徑。2、MetaioSDK的安裝與配置MetaioSDK的安裝配置比較簡單,通過官網(wǎng)下載自己需要的SDK版本資源包,下載完成后直接解壓,最后導(dǎo)入U(xiǎn)nity即可ke。3、Unity的安裝與配置參見前面課件或講義在Unity中添加AndriodSDK的安裝路徑添加AndriodSDK的安裝路徑打開Unity3D,UnityEdit->Preferences...瀏覽AndoidSDK的目錄,添加AndriodSDK的安裝路徑。詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)1、創(chuàng)建一個(gè)新的Unity3D工程2、導(dǎo)入metaio資源包metaioSDK.unitypackage3、注冊自己的應(yīng)用,生成ApplicationSignature(應(yīng)用簽名代碼)創(chuàng)建主場景,把場景中的MainCamera刪除,把預(yù)制件(Prefab)metaioSDK和metaioTracker拖到場景中。增加一個(gè)layer,命名為metaioLayer,metaioSDK中的DeviceCamera會自動(dòng)將Layer設(shè)置為metaioLayer。設(shè)置signature要注冊自己的應(yīng)用,即ApplicationSignature(應(yīng)用簽名代碼)。首先需要打開Plugins文件夾中的AndroidManifest.xml,第四行代碼為“package="com.unity3d.unity"”(應(yīng)用識別名AppIdentifier),將其修改為自己的Identifier,本案例為“com.unity3d.Tiger_Jerry”,修改并保存。登陸metaio的官方網(wǎng)站:/index.php?state=portal(申請前需注冊賬號),輸入AppName和AppIdentifier,點(diǎn)擊RegisteryourApp,系統(tǒng)生成SDKSignature為:“eLuyOeB1qaZpLsEiuvwfTzktloHuBOSAT/6cZRiizqQ=”。SDKSignatures添加Signature到Unity3D復(fù)制Signature到預(yù)制件metaioSDK的對應(yīng)參數(shù)添加跟蹤在Assets文件夾上創(chuàng)建一個(gè)子文件夾,命名為“StreamingAssets”,把圖像標(biāo)識和跟蹤配置文件放到該文件夾內(nèi)。跟蹤配置文件使用metaioSDK提供的TrackingData_MultiMarkerless.xml,跟蹤目標(biāo)的主要參數(shù)為<ReferenceImage>(<參考圖像>),把選擇的圖像標(biāo)識的名字寫上去,就能使用了。部分TrackingData_MultiMarkerless.xml代碼<SensorCOS> <SensorCosID>Patch1</SensorCosID> <Parameters> <ReferenceImage>target.png</ReferenceImage> <SimilarityThreshold>0.7</SimilarityThreshold> </Parameters></SensorCOS>選取圖像標(biāo)識metaioSDK為我們提供了默認(rèn)的圖像,如果默認(rèn)圖片不能滿足你的需求,還可以自己選取圖像。圖片要求:①有多種不同顏色的,對比度高,銳化的邊緣,metaio認(rèn)的是灰度圖,不同顏色就有不同的明度。②圖片是正方形或者是3:2或4:3左右的長方形。接近比例即可。③不要細(xì)小的文字,扁平單色的陰影④如果圖片中有多個(gè)平面陰影,選擇清晰的部分作為掃描目標(biāo)⑤圖片不能太黑暗,沒有反射高光區(qū)域⑥圖片應(yīng)大于150px-200px本案例圖像標(biāo)識圖像標(biāo)識和跟蹤配置文件都準(zhǔn)備好后,在預(yù)制件metaioSDK中Selectconfiguration選取選取StreamingAssets,在下個(gè)參數(shù)中拉入跟蹤配置文件TrackingData_MultiMarkerless.xml。虛擬場景設(shè)計(jì)創(chuàng)建一個(gè)老虎3D模型,添加動(dòng)畫系統(tǒng)(Animation)虛擬場景設(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對象上,當(dāng)點(diǎn)擊Cube對象時(shí),就能彈出列表,點(diǎn)擊按鈕小老虎就能做出動(dòng)作。在MainCmera中拖入一個(gè)音樂文件做背景音樂。點(diǎn)擊目標(biāo)點(diǎn)擊前點(diǎn)擊Tap按鈕再創(chuàng)建一個(gè)開始場景最后生成應(yīng)用運(yùn)行Andriod虛擬機(jī)成功后,點(diǎn)擊buildandrun,系統(tǒng)就會生成一個(gè)APK,把APK安裝到Andriod智能手機(jī)上即可。虛擬場景設(shè)計(jì)創(chuàng)建主場景創(chuàng)建一個(gè)老虎3D模型,添加動(dòng)畫系統(tǒng)、碰撞檢測、交互腳本、背景音樂創(chuàng)建開始場景創(chuàng)建簡介場景生成應(yīng)用6.應(yīng)用測試通過Andriod智能手機(jī)的測試,發(fā)現(xiàn)對于現(xiàn)階段的智能手機(jī)都能運(yùn)行正常。但由于在電腦測試時(shí)使用攝像頭與手機(jī)攝像頭像素差別較大,因此造成按鈕、文字出現(xiàn)問題,后期修改后順利解決了問題。 基于增強(qiáng)現(xiàn)實(shí)技術(shù)

的3D畫冊的研究與實(shí)現(xiàn)兒童時(shí)期孩子都喜歡到處涂涂畫畫的填色游戲,如果能夠把3D畫冊將傳統(tǒng)著色簿和增強(qiáng)現(xiàn)實(shí)加以融合,相比以往涂完作罷的方式,增強(qiáng)現(xiàn)實(shí)技術(shù)可以創(chuàng)造性地把兒童隨性完成的涂鴉作品以完整的3D動(dòng)畫形式活生生地呈現(xiàn)出來,給了孩子的涂鴉作品一個(gè)絕佳的展示平臺。在增強(qiáng)現(xiàn)實(shí)技術(shù)3D畫冊中,涂鴉底板是實(shí),通過增強(qiáng)現(xiàn)實(shí)技術(shù)展示出來的所填色繪制涂鴉底板所代表的物體形象的三維模型、音頻和動(dòng)畫等內(nèi)容是虛擬對現(xiàn)實(shí)的信息擴(kuò)充和拓展。3D畫冊能給用戶視覺上帶來不一樣的色彩震撼力,賦予畫冊產(chǎn)品生命力,對兒童涂鴉學(xué)習(xí)起到極其關(guān)鍵的作用。選題依據(jù)項(xiàng)目模塊相關(guān)技術(shù)-高通(Qualcomm)技術(shù)高通發(fā)布的增強(qiáng)現(xiàn)實(shí)插件,增強(qiáng)現(xiàn)實(shí)軟件開發(fā)工具包(VuforiaAugmentedRealitySDK),是主要用于智能終端擴(kuò)充現(xiàn)實(shí)研發(fā)工具庫。高通增強(qiáng)現(xiàn)實(shí)軟件開發(fā)工具包,是為Unity3D量身打造的,不同于簡單比對像素相似度,或者一些單純的特征規(guī)則,其主要運(yùn)用計(jì)算機(jī)視覺相關(guān)技術(shù)及時(shí)辨別與獲取二維對象圖像或簡單的空間對象,并讓研發(fā)團(tuán)隊(duì)利用攝像頭將虛擬對象置于特定位置,而且可以調(diào)節(jié)對象在攝像機(jī)視野里真實(shí)場景中的方位。同時(shí)它支持Android和iOS,能夠支持Unity3D下增強(qiáng)現(xiàn)實(shí)應(yīng)用提供程序的開發(fā)設(shè)計(jì),實(shí)現(xiàn)應(yīng)用程序向移動(dòng)端的移植,拓展增強(qiáng)現(xiàn)實(shí)應(yīng)用的硬件應(yīng)用限制和適用范圍。三維注冊技術(shù)三維注冊算法實(shí)時(shí)判斷跟蹤攝像機(jī)在真實(shí)環(huán)境中的方位,依據(jù)攝像機(jī)獲取到的圖像信息來確定虛擬3D模型映射在現(xiàn)實(shí)環(huán)境中放置的方位,最后通過運(yùn)用顯示技術(shù),將其實(shí)時(shí)地呈現(xiàn)出來的技術(shù)。相關(guān)技術(shù)

基于標(biāo)志物的跟蹤注冊技術(shù)三維注冊技術(shù)--注冊方法空間對象、平面圖像無標(biāo)志物類

硬件配備要求高三維注冊技術(shù)--基于平面標(biāo)志物注冊方法基于視覺的注冊技術(shù),通過給定的一幅或多幅圖像確定攝像機(jī)和真實(shí)世界目標(biāo)的相對位置和方位。不需求精密的硬件追蹤配置相關(guān)技術(shù)

基于標(biāo)志物的跟蹤注冊技術(shù)課題針對于移動(dòng)端的設(shè)計(jì),運(yùn)行平臺的計(jì)算能力有限

涂鴉底板制成標(biāo)志物以幫助實(shí)現(xiàn)三維注冊相關(guān)技術(shù)

基于標(biāo)志物的跟蹤注冊技術(shù)攝像頭方位的計(jì)算獲取相機(jī)內(nèi)部參數(shù),根據(jù)這些參數(shù)和獲取的圖像計(jì)算相機(jī)位置和方向。相機(jī)參數(shù):鏡頭焦距,傳感器像元高度、寬度、高寬比相關(guān)技術(shù)-相機(jī)標(biāo)定攝像機(jī)跟蹤技術(shù)通過實(shí)時(shí)記錄跟蹤目標(biāo)(文中指的是標(biāo)識)在真實(shí)世界里運(yùn)動(dòng)方向以及所處位置,讓虛擬場景和真實(shí)環(huán)境無縫銜接,確保三維注冊更加精準(zhǔn)。(1)增強(qiáng)現(xiàn)實(shí)系統(tǒng)通過分析攝像機(jī)獲取到的現(xiàn)實(shí)環(huán)境圖像,并且通過提取、檢測與識別圖像的方法來最終確定標(biāo)識;(2)在得到標(biāo)志后,通過計(jì)算攝像機(jī)對于該標(biāo)志的方位,從而得到攝像機(jī)自身外部的參數(shù)矩陣;(3)依據(jù)判斷識別出的標(biāo)識,在特定位置生成與之相對應(yīng)的三維模型;(4)通過攝像機(jī)的方位完成虛擬模型的三維注冊,最后依托顯示技術(shù)把增強(qiáng)后的效果呈現(xiàn)出來。相關(guān)技術(shù)-攝像機(jī)跟蹤技術(shù)相關(guān)技術(shù)-分UVUV是UV紋理貼圖坐標(biāo)的簡稱,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)是一一對應(yīng)的,可以通過UV編輯器來查看UV點(diǎn)在貼圖上的位置。相關(guān)技術(shù)-分UV將一個(gè)三維曲面網(wǎng)格展開到一個(gè)平面上,這個(gè)展開的平面就是UV貼圖。得到UV貼圖的過程就是分UV。分UV是一個(gè)三維轉(zhuǎn)二維的過程,更直觀地表達(dá)就是將三維立體模型的表面轉(zhuǎn)化為平面的過程。模型與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)目中里我們稱這種分UV方法為人工形象化分UV?;驹瓌t是一樣的一個(gè)模型對應(yīng)一張UV貼圖相關(guān)技術(shù)-人工形象化分UV相關(guān)技術(shù)-人工形象化分UV相關(guān)技術(shù)-人工形象化分UV畫冊Marker檢測識別畫冊Marker的設(shè)計(jì)中,畫冊標(biāo)識既是系統(tǒng)三維注冊實(shí)現(xiàn)的手段,又是畫冊增強(qiáng)現(xiàn)實(shí)模型紋理信息的攜帶者。畫冊Marker檢測識別畫冊Marker檢測識別FrameMarker框架的惟一的ID標(biāo)記編碼成二進(jìn)制模式分布在形象標(biāo)識的四周邊緣。幀標(biāo)記允許任何圖像被放置在邊界標(biāo)識。畫冊Marker檢測識別ImageTarget是可以被VuforiaSDK探測和跟蹤的圖像。不同于傳統(tǒng)的基準(zhǔn)標(biāo)記,數(shù)據(jù)矩陣代碼和QR碼,圖像目標(biāo)不需要特殊的黑色和白色區(qū)域或代碼識別。SDK檢測和跟蹤圖像本身的自然特性,然后對比這些天然特性與已知的目標(biāo)資源數(shù)據(jù)庫圖像的自然特性。一旦檢測到圖像目標(biāo),SDK將跟蹤目標(biāo)圖像,哪怕目標(biāo)圖像只要少部分在相機(jī)的視野。圖像本身作為Marker畫冊Marker設(shè)計(jì)畫冊Marker設(shè)計(jì)畫冊Marker設(shè)計(jì)畫冊Marker設(shè)計(jì)畫冊Marker設(shè)計(jì)畫冊Marker設(shè)計(jì)畫冊Marker設(shè)計(jì)標(biāo)識坐標(biāo)系轉(zhuǎn)換在基于標(biāo)識的增強(qiáng)現(xiàn)實(shí)系統(tǒng)中Marker坐標(biāo)系矩陣轉(zhuǎn)化至Camera坐標(biāo)系Camera坐標(biāo)系矩陣轉(zhuǎn)化至圖像坐標(biāo)系標(biāo)識坐標(biāo)系轉(zhuǎn)換世界坐標(biāo)系轉(zhuǎn)化到攝像機(jī)坐標(biāo)系標(biāo)識坐標(biāo)系轉(zhuǎn)換攝像機(jī)坐標(biāo)系轉(zhuǎn)化到實(shí)際圖像坐標(biāo)系理想狀態(tài)下攝像機(jī)的光軸經(jīng)過平面中心,并且與成像平面垂直,在圖7中三角形OO1P1和OO2P相似:f/z=O1P1/O2P2=x1/x=y1/y。x1

=xf/z,y1

=fy/z??梢杂谬R次方程清晰地把攝像機(jī)的成像模型表示成:標(biāo)識坐標(biāo)系轉(zhuǎn)換標(biāo)識坐標(biāo)系為模型渲染紋理貼圖的坐標(biāo)系命名為Matrix4x4Matrixuv,uv為標(biāo)識名,則標(biāo)識坐標(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中所以的圖像繪制都是通過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畫冊實(shí)現(xiàn)需要完成對待顯示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場景效果系統(tǒng)實(shí)現(xiàn)ImageMarker場景效果系統(tǒng)實(shí)現(xiàn)ImageLocationMarker3D場景效果效果展示FrameMarker演示畫冊效果展示FrameMarker演示效果效果展示ImageMarker畫冊測試圖效果展示ImageMarker演示效果效果展示ImageMarker演示效果效果展示ImageLocationMarker測試畫冊效果展示ImageLocationMarker測試效果效果效果展示效果展示就畫冊增強(qiáng)現(xiàn)實(shí)的效果的穩(wěn)定性而言,利用識別度最高級別的邊框制成的ImageLocationMarker涂鴉底板更具優(yōu)勢(該例子達(dá)到了此要求)。ImageMarker如果能夠做成最高級別的識別度,也能夠有很好的效果,只是這個(gè)無疑給難涂鴉底板設(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ù)據(jù)搜集分析識別方案識別遮擋情況重復(fù)數(shù)*案例數(shù)識別/不識別結(jié)論FrameMarker幀標(biāo)識部分遮擋20*32/58幀標(biāo)識部分遮擋不識別FrameMarker幀標(biāo)識無遮擋20*359/1幀標(biāo)全部可見時(shí)成功識別FrameMarker幀標(biāo)識成功識別后部分遮擋20*31/59幀標(biāo)識成功識別后部分遮擋不可識別ImageMarkerImageMarker首次識別部分遮擋20*31/59ImageMarker首次識別部分遮擋不識別ImageMarkerImageMarker無遮擋20*356/4ImageMarker全部可見成功識別ImageMarkerImageMarker成功識別后部分遮擋20*33/57ImageMarker成功識別后部分遮擋可識別七彩海洋館游戲內(nèi)容:游戲場景為迷宮。螃蟹為玩家,其他動(dòng)物為敵人,螃蟹在場景中通過WSAD健前進(jìn)后退左轉(zhuǎn)右轉(zhuǎn),按空格鍵發(fā)射子彈,前進(jìn)過程中必須消除其他動(dòng)物障礙,子彈如果射中動(dòng)物,動(dòng)物和子彈都消失,如果到達(dá)終點(diǎn),則出現(xiàn)是否進(jìn)入下一關(guān),下一關(guān)過關(guān)后,則出現(xiàn)勝利畫面。預(yù)制體制作觸發(fā)器功能子彈發(fā)射運(yùn)動(dòng)控制重復(fù)調(diào)用倒計(jì)時(shí)碰撞檢測時(shí)銷毀物體菜單腳本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);加載新場景的時(shí)候使目標(biāo)物體不被自動(dòng)銷毀。

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

最新文檔

評論

0/150

提交評論