Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第11章 AR Foundation跨平臺實戰(zhàn)開發(fā)_第1頁
Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第11章 AR Foundation跨平臺實戰(zhàn)開發(fā)_第2頁
Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第11章 AR Foundation跨平臺實戰(zhàn)開發(fā)_第3頁
Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第11章 AR Foundation跨平臺實戰(zhàn)開發(fā)_第4頁
Unity AR-VR虛擬現(xiàn)實開發(fā)基礎(chǔ)(第2版)課件 第11章 AR Foundation跨平臺實戰(zhàn)開發(fā)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ARFoundation簡介目錄什么是ARFoundationARFoundation有哪些功能特性ARFoundation的構(gòu)成什么是ARFoundation了方便開發(fā)者將設(shè)計開發(fā)的AR應(yīng)用快速部署到多個不同的平臺,Unity3D推出了ARFoundation工具包。需要注意的是,它的作用是給Unity3D開發(fā)者提供了訪問特定平臺ARSDK的接口,自身并不實現(xiàn)任何AR功能特性。為了在目標設(shè)備平臺上開發(fā)AR應(yīng)用,我們還需要針對該特定平臺的工具包。比如針對蘋果的iOSARKit,我們需要ARKitXRPlugin。而針對安卓平臺的ARCore,我們需要ARCoreXRPlugin。ARFoundation有哪些功能特性ARFoundation包含了一系列的MonoBehaviour和API,并通過不同設(shè)備平臺ARSDK的共同作用,以實現(xiàn)以下AR功能特性:1. 世界追蹤(Worldtracking):在真實的物理空間中追蹤設(shè)備的位置和朝向2. 平面檢測(Planedetection):檢測真實世界中的水平和豎直平面。3. 點云(Pointclouds):也被稱為特征點。點云這個概念來自三維重建領(lǐng)域,稍微有點抽象。簡單來說,點云指的是通過測量設(shè)備(相機或激光掃描儀)獲取的物體表面的點數(shù)據(jù)集合,通常包括三維坐標,顏色信息,激光反射強度等等。通過處理點云信息,我們可以實現(xiàn)對物體的三維重建。4. 錨點(Anchor):設(shè)備檢測到的任意位置和朝向信息5. 光線估計(Lightestimation):對真實世界的色溫和亮度進行估算。6. 環(huán)境探頭(Environmentprobe):通過生成一個環(huán)境反射貼圖,來模仿真實物理空間的某個特定區(qū)域。7. 面部追蹤(Facetracking):檢測和跟蹤人類的臉部8. 圖像追蹤(Imagetracking):檢測和追蹤2D圖像。ARFoundation的構(gòu)成ARFoundation由子系統(tǒng)構(gòu)成。Unity3D中跟AR相關(guān)的子系統(tǒng)由ARSubsystems工具包定義,并使用命名空間UnityEngine.XR.ARSubsystems。每個子系統(tǒng)都用于處理不同的功能特性,舉例來說,平面檢測需要使用XRPlaneSubsystem。在ARFoundation中有一個提供者(provider)的概念,它用于對某個子系統(tǒng)的具體實現(xiàn)。聽起來有點抽象,但其實并不復雜。舉例來說,ARCoreXRPlugin資源包就包含了ARCore對多個AR子系統(tǒng)的具體實現(xiàn)。因為不同的provider支持不同的功能特性,因此每個子系統(tǒng)也有一個descriptor(描述器),來說明它支持具體哪一種子系統(tǒng)的特性。舉例來說,XRPlaneSubstemDescriptor中的屬性就說明了它是否支持水平或垂直平面檢測。iOSARKit簡介王寒目錄什么是ARKitARKit的功能特性ARKit支持的設(shè)備平臺什么是ARKit什么是ARKit國當?shù)貢r間2017年6月5日上午9點,蘋果全球開發(fā)者大會(WWDC2017)在加州SanJose召開。TimCook在iOS10環(huán)節(jié)宣布推出ARKit,一款全面支持AR增強現(xiàn)實開發(fā)的SDK。用Cook自己的話來說,蘋果一夜之間成為全球最大的AR開發(fā)平臺。什么是ARKit目前蘋果將ARKit歸為iOS的一個Framework(框架),和CoreML(機器學習)、SiriKit、HomeKit、HealthKit等處于同一級別。但目前看來,ARKit和CoreML必將成為iOS平臺上最有潛力的兩個Framework,甚至有望在日后成就類似iOS和MacOS這樣的獨立生態(tài)系統(tǒng)。當然,前提是蘋果推出了和ARKit及CoreML對應(yīng)的硬件產(chǎn)品,就如同WatchOS對應(yīng)著AppleWatch,而TVOS則對應(yīng)著AppleTV一樣。在當前階段,我們暫且將ARKit視作iOS平臺中的一個系統(tǒng)框架即可。什么是ARKitARKit的功能特性ARKit集成了設(shè)備的運動跟蹤、攝像頭場景捕捉、先進的場景處理,以共同構(gòu)建令人驚艷的AR體驗效果ARKit的功能特性2020年的WWDC上,ARKIT4又增加了幾個新的功能:1.深度API的支持可以通過激光雷達來收集環(huán)境相關(guān)的信息,并將虛擬的3d網(wǎng)格數(shù)據(jù)和真實場景融合。2.LocationAnchoring支持在城市、地標和其它地方放置AR體驗3.擴展的面部追蹤4.增強的動作捕捉功能,可以捕捉人體運動和姿態(tài)ARKIT4為2021年即將發(fā)布的蘋果ARGlass做好了充分準備ARKit的功能特性ARKit的功能特性ARKit的功能特性ARKit的功能特性ARKit的功能特性ARKit支持的設(shè)備平臺基于蘋果一貫的風格,ARKit目前只支持iOS產(chǎn)品,目前是iPhone和iPad。預計在不久的將來ARKit將支持蘋果全線硬件設(shè)備,包括AppleWatch、AppleTV、Mac電腦,以及傳聞中的iGlass。當然,ARKit的強悍功能基于海量的計算,因此目前只支持AppleA9和A10處理器。從硬件設(shè)備上來看,目前搭載了AppleA9和A10處理器的只有iPhone6s,iPhone6sPlus,iPhone7,iPhone7Plus,iPadPro和最新一代的iPad。不過讓開發(fā)者欣慰的是,ARKit除了支持蘋果原生的開發(fā),如搭配Metal、SceneKit進行Native開發(fā)之外,還支持第三方的游戲引擎,特別是Unity3D和UnrealEngine。ARKit支持的設(shè)備平臺ARKit支持的設(shè)備平臺ARCore簡介王寒目錄什么是ARCoreARCore的功能特性ARCore所支持的設(shè)備平臺什么是ARCore什么是ARCore2017年6月的WWDC上,蘋果推出了面向iOS平臺的ARKit。2017年8月,Google很快宣布推出了和ARKit對標的面向安卓平臺的ARSDK,名為ARCore。ARCore和ARKit類似,利用豐富的API讓安卓智能手機可以感知環(huán)境、理解現(xiàn)實世界,并與信息進行交互。ARCore的功能特性ARCore的功能特性ARCore的運動跟蹤技術(shù)使用手機攝像頭標識興趣點(稱為特征點),并跟蹤這些點隨著時間變化的移動。將這些點的移動與手機慣性傳感器的讀數(shù)組合,ARCore可以在手機移動時確定它的位置和屏幕方向。除了標識關(guān)鍵點外,ARCore還會檢測平坦的表面(例如桌子或地面),并估測周圍區(qū)域的平均光照強度。這些功能共同讓ARCore可以構(gòu)建自己對周圍世界的理解。借助ARCore對現(xiàn)實世界的理解,開發(fā)者和用戶能夠以一種與現(xiàn)實世界無縫整合的方式添加物體、注釋或其他信息。ARCore的功能特性ARCore支持以下功能特性:1. 運動跟蹤當您的手機在現(xiàn)實世界中移動時,ARCore會通過一個名為并行測距與映射(或COM)的過程來理解手機相對于周圍世界的位置。ARCore會檢測捕獲的攝像頭圖像中的視覺差異特征(稱為特征點),并使用這些點來計算其位置變化。這些視覺信息將與設(shè)備IMU的慣性測量結(jié)果結(jié)合,一起用于估測攝像頭隨著時間推移而相對于周圍世界的姿態(tài)(位置和方向)。通過將渲染3D內(nèi)容的虛擬攝像頭的姿態(tài)與ARCore提供的設(shè)備攝像頭的姿態(tài)對齊,開發(fā)者能夠從正確的透視角度渲染虛擬內(nèi)容。渲染的虛擬圖像可以疊加到從設(shè)備攝像頭獲取的圖像上,讓虛擬內(nèi)容看起來就像現(xiàn)實世界的一部分一樣。2. 環(huán)境理解ARCore會通過檢測特征點和平面來不斷改進它對現(xiàn)實世界環(huán)境的理解。ARCore可以查找看起來位于常見水平或垂直表面(例如桌子或墻)上的成簇特征點,并讓這些表面可以由您的應(yīng)用用作平面。ARCore也可以確定每個平面的邊界,并將該信息提供給您的應(yīng)用。您可以使用此信息將虛擬物體置于平坦的表面上。由于ARCore使用特征點來檢測平面,因此可能無法正確檢測像白墻一樣沒有紋理的平坦表面。ARCore的功能特性3. 光估測ARCore可以檢測其環(huán)境光線的相關(guān)信息,并為您提供給定攝像頭圖像的平均光強度和色彩校正。此信息讓您能夠使用與周圍環(huán)境相同的光照來照亮您的虛擬物體,提升它們的真實感。4. 用戶交互ARCore利用命中測試來獲取對應(yīng)于手機屏幕的(x,y)坐標(通過點按或您希望應(yīng)用支持的任何其他交互提供),并將一條射線投影到攝像頭的視野中,返回這條射線貫穿的任何平面或特征點以及交叉位置在現(xiàn)實世界空間中的姿態(tài)。這讓用戶可以選擇環(huán)境中的物體或者與它們互動。5. 定向點借助定向點,您可以將虛擬物體置于傾斜的表面上。當您執(zhí)行會返回特征點的命中測試時,ARCore將查看附近的特征點并使用這些特征點估算表面在給定特征點處的角度。然后,ARCore會返回一個將該角度考慮在內(nèi)的姿態(tài)。由于ARCore使用成簇特征點來檢測表面的角度,因此可能無法正確檢測像白墻一樣沒有紋理的表面。ARCore的功能特性6. 錨點和可跟蹤對象姿態(tài)會隨著ARCore改進它對自身位置和環(huán)境的理解而變化。當您想要放置一個虛擬物體時,您需要定義一個錨點來確保ARCore可以跟蹤物體隨時間推移的位置。很多時候,您需要基于命中測試返回的姿態(tài)創(chuàng)建一個錨點,如用戶交互中所述。姿態(tài)會發(fā)生變化,這就意味著ARCore可能會更新平面和特征點等環(huán)境物體隨時間推移的位置。平面和特征點是一種特殊類型的物體,稱為可跟蹤對象。顧名思義,ARCore可以隨著時間推移跟蹤這些物體。您可以將虛擬物體錨定到特定的可跟蹤對象,確保您的虛擬物體與可跟蹤對象之間的關(guān)系即使在設(shè)備移動時也能保持穩(wěn)定。這意味著,如果您將一個虛擬的Android小雕像放在您的書桌上,即使ARCore稍后調(diào)整了與書桌關(guān)聯(lián)的平面的姿態(tài),Android小雕像仍會看起來位于桌子上。7. 增強圖像使用增強圖像,您可以構(gòu)建能夠響應(yīng)特定2D圖像(如產(chǎn)品包裝或電影海報)的AR應(yīng)用。用戶可以在將手機的攝像頭對準特定圖像時觸發(fā)AR體驗,例如,他們可以將手機的攝像頭對準電影海報,使人物彈出,然后引發(fā)一個場景??呻x線編譯圖像以創(chuàng)建圖像數(shù)據(jù)庫,也可以從設(shè)備實時添加單獨的圖像。注冊后,ARCore將檢測這些圖像、圖像邊界,然后返回相應(yīng)的姿態(tài)。ARCore的功能特性8. 共享借助ARCoreCloudAnchorAPI,可以創(chuàng)建適用于Android和iOS設(shè)備的協(xié)作性或多人游戲應(yīng)用。使用云錨點,一臺設(shè)備可以將錨點和附近的特征點發(fā)送到云端進行托管??梢詫⑦@些錨點與同一環(huán)境中Android或iOS設(shè)備上的其他用戶共享。這使應(yīng)用可以渲染連接到這些錨點的相同3D對象,從而讓用戶能夠同步擁有相同的AR體驗。ARCore的功能特性ARCore的功能特性ARCore所支持的設(shè)備ARCore所支持的設(shè)備ARCore目前支持的設(shè)備包括安裝了Android7.0或更高版本系統(tǒng),且安裝了ARCoreSDK的安卓智能手機或平板設(shè)備。:除此之外,ARCore也支持所有運行iOS11.0或更高版本的ARKit兼容設(shè)備。/ar/discover/supported-devicesHello

AR實戰(zhàn)項目王寒目錄案例描述案例實施案例描述案例描述在這個實戰(zhàn)項目中,我們將借助Unity3D的官方模板創(chuàng)建一個簡單的HelloAR應(yīng)用。通過這個小項目,我們會對ARFoundation的使用有初步的認識。因為這個項目需要同時支持ARKit和ARCore,所以部分內(nèi)容需要Mac系統(tǒng)和Xcode,沒有Mac的同學可以只學習其中的Android部分。案例實施案例實施1.下載并打開官方示例項目首先在瀏覽器中打開頁面,/Unity-Technologies/arfoundation-samples點擊Cloneordownload按鈕,選擇DownloadZIP,從而下載官方提供的ARFoundation示例項目。下載完成后將其解壓縮到文件夾中案例實施打開UnityHub,點擊右上角的ADD按鈕,選擇我們下載的arfoundation-samples-master目錄,從而將該項目添加到UnityHub中。注意,如果TargetPlatform中沒有指定平臺,我們需要手動設(shè)置一個版本。設(shè)置完成后,雙擊項目名稱可以在Unity3D中將其打開。案例實施2.下載并導入所需的資源包在編輯器中點擊主菜單上的Window-PackageManager,然后在Allpackages中檢查ARFoundation,ARSubsystems,ARCoreXRPlugin和ARKitXRPlugin等四個插件是否已安裝且升級到了最新的版本。案例實施3.打開SimpleAR場景在Project視圖中找到Assets-Scenes-SimpleAR目錄下的SimpleAR場景案例實施雙擊將其打開??梢钥吹?,在其Hiearchy視圖中跟AR相關(guān)的對象主要是ARSession和ARSessionOrigin。其中ARSession用于啟用或關(guān)閉AR效果,ARSessionOrigin中有一個ARCamera子對象,用于控制AR的顯示。在iOS設(shè)備上測試在編輯器中點擊主菜單上的File-BuildSettings,在Platform中選擇iOS,然后點擊右下角的SwitchPlatform,切換到iOS設(shè)備的調(diào)試設(shè)置在iOS設(shè)備上測試切換完成后記得在BuildSettings界面上部的ScenesInBuild中勾選Scenes/SimpleAR/SimpleAR在iOS設(shè)備上測試完成后點擊右下角的BuildAndRun按鈕,在彈出的對話框中輸入HelloAR作為項目名稱,并選擇項目的存放地點。此時Unity3D會將當前項目保存為一個iOS項目,并自動在Xcode中將其打開接下來我們需要在Xcode中進行配置。首先從頂部工具欄中選擇用于測試的iOS設(shè)備接著要配置測試用的證書。點擊TARGETS下的Unity-iPhone,切換到Signing&Capabilities面板,然后在Signing下面勾選Automaticallymanagesigning。此時會出現(xiàn)一個彈出對話框,選擇EnableAutomatic即可。完成后還需要在Team處選擇自己的開發(fā)者賬戶在iOS設(shè)備上測試全部設(shè)置完成后,點擊工具欄頂部的右三角符號即可在設(shè)備上進行測試。注意在執(zhí)行這一步操作前一定要將iPhone或者iPad連接到自己的Mac電腦上。手機上啟動應(yīng)用后首先會請求對相機的使用權(quán)限,一定要選擇確認,否則AR應(yīng)用就完全沒有作用了。進入應(yīng)用后,將手機后置攝像頭對準桌面或地面等平面,然后點擊檢測到的平面,就會有一個小方塊出現(xiàn)在所觸碰的區(qū)域。在Android設(shè)備中進行測試1.在編輯器中點擊主菜單上的File-BuildSettings,在Platform中選擇Android,然后點擊右下角的SwitchPlatform,切換到Android設(shè)備的調(diào)試設(shè)置2.點擊PlayerSettings,更改PackageName和MinimumAPILevel設(shè)置完成后在BuildSettings中點擊BuildAndRun,就可以在安卓設(shè)備上查看運行的效果了。這里再次強調(diào)一下,所使用的測試設(shè)備一定要事先安裝ARCore的相關(guān)工具包,否則無法正常運行。AR家居設(shè)計項目王寒目錄案例描述案例實施案例描述案例描述這個實戰(zhàn)項目中,我們將使用ARFoundation創(chuàng)建一個跨平臺的AR室內(nèi)裝飾應(yīng)用。該應(yīng)用在Unity3D中開發(fā)完成后可以同時部署到iOS設(shè)備和Android設(shè)備中。不過需要注意的是,iOS設(shè)備必須支持ARKit,而安卓設(shè)備則需要支持ARCore。案例描述案例描述用戶可以觸碰界面上的按鈕選擇家具,然后在系統(tǒng)檢測到的平面上放置家具。觸碰不同按鈕,可以選擇其它家具,然后接著在平面上放置家具。如果覺得效果不夠理想,還可以觸碰“重置”按鈕。案例實施開始前的準備1.下載并打開官方示例項目首先在瀏覽器中打開頁面,/Unity-Technologies/arfoundation-samples點擊Cloneordownload按鈕,選擇DownloadZIP,從而下載官方提供的ARFoundation示例項目。下載完成后將其解壓縮到文件夾中,打開UnityHub,點擊右上角的ADD按鈕,選擇我們下載的arfoundation-samples-master目錄,從而將該項目添加到UnityHub中。注意,如果TargetPlatform中沒有指定平臺,我們需要手動設(shè)置一個Unity3D版本。設(shè)置完成后,雙擊項目名稱可以在Unity3D中將其打開。2.下載并導入所需的資源包在編輯器中點擊主菜單上的Window-PackageManager,然后在Allpackages中檢查ARFoundation,ARSubsystems,ARCoreXRPlugin和ARKitXRPlugin等四個插件是否已安裝且升級到了最新的版本。此外還需要將本章資源包中的其它資源添加到場景中。創(chuàng)建項目的主場景為了簡單起見和避免出現(xiàn)設(shè)置錯誤,這里我們選擇對之前的SimpleAR場景進行復制和修改。在Project視圖中找到Assets-Scenes-SimpleAR目錄下的SimpleAR場景,右鍵單擊,選擇Duplicate,從而復制出一個場景,將復制出的場景更名為ARHouseDesign。更改UI界面在默認的SimpleAR場景中,有四個按鈕,分別用于重置,重新加載、暫停和繼續(xù)AR場景。我們可以選擇保留這些功能按鈕,也可以將其刪除或隱藏。這里我們選擇隱藏這些場景,僅保留一個ReloadButton。除此之外,我們還需要添加三個按鈕,分別用于顯示不同的家具類型。在Hierarchy視圖中點開Canvas的下三角,選中ResetButton,PauseButton和ResumeButton,然后取消勾選Inspector視圖左上角的勾選框,從而讓三個按鈕在場景中隱藏。選中ReloadButton,使用工具欄上的移動工具將其移動到常見的右上角,并設(shè)置錨點為topright更改UI界面接著要在Inspector視圖中的OnClick()事件響應(yīng)部分點擊右下角的減號,從而刪除當前的響應(yīng)事件。在Hierarchy視圖中右鍵單擊ReloadButton,選擇Duplicate三次,從而復制出三個新的按鈕,使用移動工具將三個按鈕移動到合適的位置。更改每個按鈕的文本,分別是VASE,SOFA和TORCHERE,代表花瓶,沙發(fā)和地板燈。更改每個按鈕的SourceImage,分別對應(yīng)花瓶、沙發(fā)和地板燈的圖形。更改UI界面添加處理AR的腳本在Hierarchy視圖中選中ARSessionOrigin,可以看到在Inspector視圖中關(guān)聯(lián)著多個腳本。添加處理AR的腳本其中ARPlaneManager和ARPointCloudManager分別用于檢測平面和管理點云,而ARRaycastManager腳本用于射線檢測。最后的PlaceOnPlane用于檢測用戶的觸摸事件,并在檢測的平面上根據(jù)用戶的觸摸點放置物體。在PlaceOnPlane腳本組件上當前只有一個參數(shù),也就是PlacedPrefab,我們可以在這里手動更改要放置的3D對象。但是如果想要在程序中動態(tài)進行更改,就必須借助腳本的力量了。取消對PlaceOnPlane腳本組建的勾選,因為接下來我們將使用自己創(chuàng)建的腳本來替代該腳本的作用。添加處理AR的腳本在Inspector視圖中點擊AddComponent,創(chuàng)建一個新的腳本,將其命名為PlaceControllerWithUISelection,雙擊在VisualStudio中將其打開,更改其中的代碼參考PlaceControllerWithUISelection.cs注意事項需要注意的是,因為預設(shè)體文件是通過代碼自動加載到場景中的,所以幾個預設(shè)體文件一定要存放在特定的文件目錄下。如果這幾個預設(shè)體沒有放置在指定路徑下,系統(tǒng)將無法正常加載,也無法將3D物體添加到場景中。設(shè)置按鈕響應(yīng)事件在Hierarchy視圖中選擇Canvas對象的子對象ReloadButton,然后在Inspector視圖的OnClick()部分點擊加號,設(shè)置響應(yīng)的對象為ARSessionOrigin,設(shè)置響應(yīng)的事件為PlaceControllerWithUISelection.reloadScene接著在Hierarchy視圖中選擇ARVaseButton對象,在Inspector視圖的OnClick()部分,點擊加號,設(shè)置響應(yīng)的對象為ARSessionOrigin,設(shè)置響應(yīng)的事件為PlaceControllerWithUISelection.ChangePrefabTo,設(shè)置響應(yīng)參數(shù)為vase使用類似的方式為ARTouchereButton和ARSofaButton分別設(shè)置響應(yīng)事件,并設(shè)置不同的參數(shù)。在iOS設(shè)備上進行測試在Unity3D編輯器中點擊主菜單上的File-BuildSettings,在Platform中選擇iOS,然后

溫馨提示

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

最新文檔

評論

0/150

提交評論