999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種實用的移動AR 實驗解決方案

2020-09-29 08:44:42謝伙生
實驗技術與管理 2020年7期
關鍵詞:現實方向實驗

謝伙生,楊 錚,林 晶

(1. 福州大學 數學與計算機科學學院,福建 福州 350116;2. 福州大學 網絡信息安全與計算機技術國家級實驗教學示范中心,福建 福州 350116)

增強現實(augmented reality,AR)技術作為一門新興技術,在許多領域都有著巨大的潛力和應用價值,比如教育領域、醫療領域、娛樂游戲領域等[1-3]。近年來隨著移動設備飛速發展,因其具有易攜帶、易使用、顯示效果較好等特點,使得基于移動設備開發的 AR技術逐漸成為發展主流,這種技術稱為移動AR[4-6]技術。

隨著人工智能的發展,實驗教學中的移動AR實驗成為大學計算機相關專業的新興課程,熟練掌握移動AR開發技術已成為大學生未來就業、創業所要具備的技能之一。因此,移動AR實驗的教學地位越來越重要,但傳統移動AR實驗的底層開發實現較復雜,不便于AR技術的普及,同時移動AR實驗一般也較少利用移動設備的傳感器數據進行結合開發。針對該問題,本文提出一種更為直觀和便捷的移動AR實驗解決方案。為了驗證該方案的有效性,使用光照一致性的移動AR實驗進行驗證。由于構建光照模型的方法較復雜,算法計算量較大,目前關于光照一致性的AR實驗研究大多集中在PC端,較難在移動端中直接使用[7-8]。本文利用移動設備的光傳感器探測光源方向,通過Android Studio和Unity3D的通信機制傳送傳感器數據,同時結合EasyAR SDK開發實現了虛實光照一致的移動AR實驗案例。

1 Unity3D和AR SDK

Unity3D是一個功能豐富的輕量級圖形渲染引擎,主要用于游戲的開發,是一個可跨平臺的游戲引擎,支持基于Android、iOS、PC、Linux、tvOS等多種平臺發布,可以使用戶輕松實現圖形渲染、三維動畫和腳本編輯[9]。Unity3D界面包括五大基礎模塊:層級視圖(hierarchy)、場景(scence)、游戲(game)、項目(project)、檢測面板(inspector),這些模塊使用戶方便、直觀地開發3D應用項目。同時,Unity3D還具有豐富的 Asset Store,可以下載資源并導入到Unity3D項目中,也可以使用外部資源導入。Unity3D支持 JavaScript、C#、Boo 3種腳本語言開發,其中C#具有強大的.NET庫做支撐并且有著良好的跨平臺性,已逐漸成為Unity3D所推薦的開發語言。

國內外有著許多優秀的 AR SDK,傳統的有ARToolkit、ARTag[10]和 NyARToolkit[11]等。ARToolkit是最早流行起來的開源AR工具,使用C/C++編輯語言。NyARToolkit基于ARToolkit移植,具有良好的兼容性,支持 Java語言和 C#?,F如今國內外研發了多種基于Unity3D的AR SDK,比如有Vuforia SDK、Wikitude AR SDK、HiAR SDK、EasyAR SDK[12]等。相較于傳統的AR SDK,使用基于Unity3D的AR SDK將極大地減少開發難度。Vuforia是美國公司Qualcomm發布的一款移動終端AR開發引擎。EasyAR SDK作為國內自主研發的一款增強現實工具包,已經具備完善的Target種類和較便捷的識別圖設置模式,同時具有單目標識別、多目標識別、3D物體識別、云端服務等多種功能以及豐富的 API和完備的用戶手冊,深受國內外開發者的青睞。

Unity3D是一個具有可視化操作界面的專業游戲引擎,Android SDK又提供了開發移動端應用的各種組件[13],這些都極大地滿足了移動AR應用的各項需求。移動AR應用中通過增加虛實光照一致性能,較好地消除了虛擬模型顯示的突兀感,增強了虛擬信息與現實場景的融合。

2 移動AR實驗的解決方案

實現一個結合傳感器數據的移動AR實驗需要以下步驟:1)結合 Unity3D和 AR SDK搭建基本 AR實驗環境;2)在Android Studio中獲取移動端傳感器數據;3)Unity3D工程與Android Studio工程相結合進行通信、傳輸傳感器數據。

2.1 結合Unity3D和AR SDK搭建基本AR實驗環境

本文采用EasyAR SDK開發,它是國內自主研發的一款免費增強現實開發工具,能夠在Android、iOS、PC等多平臺實現。具備單目標識別、多目標識別、3D物體識別、云端服務等功能,是一款完善的增強現實開發工具[14]。利用EasyAR SDK在Unity3D中搭建基本AR實驗環境的步驟如下:

1)在EasyAR官網下載EasyAR SDK for Unity工具包,并注冊賬號創建License key。

2)將EasyAR.unitypackage資源包導入(Import)Unity3D中,包內組件如圖1所示。

圖1 導入EasyAR SDK到Unity3D

3)移除層級視圖中初始攝像機Main Camera,添加Prefabs文件夾中的AR相機組件EasyAR_Startup,在其檢測面板中輸入1)中獲取到的License key。

4)添加ImageTarget組件,在該組件下創建的3D物體是作為虛擬顯示模型,添加虛擬光源組件VirtualLight,如圖2所示。

圖2 各組件層級視圖

5)選擇 ImageTarget組件,在檢測面板中設置Marker圖標,輸入Marker的path和name屬性并調整位置和大小。Marker圖標路徑位于StreamingAssets文件夾下,如圖3所示。

圖3 設置Marker圖標屬性

6)選擇菜單File>Build Settings設置Android運行 模 式 , 點 擊 Player Settings>Other Settings>Identification填寫 SDK包名,點擊 Build即可生成Android APK。

2.2 Android Studio中獲取傳感器數據

Google Android API上的傳感器訪問通過傳感器管理器類SensorManager進行,并使用SensorListener來檢索測量[15]。SensorManager是用來獲取傳感器服務和選擇傳感器類型。SensorListener是傳感器監聽器,用于監聽傳感器數據的變化。Sensor是傳感器信息抽象類,通過getType()方法獲取不同的傳感器類型,包括光傳感器、方向傳感器、磁場傳感器、重力加速度傳感器等。獲取的傳感器數據以長度為3的數組形式存在。常見傳感器表示方法如表1所示,不同的傳感器類型如表2所示。

表1 常見的傳感器表示方法

表2 常見類型傳感器表示方法

2.3 Unity3D與Android Studio結合進行通信傳輸

Android Studio是一款Android集成和調試的開發工具,Unity3D導出的 Android工程可以很完美地結合到Android Studio工程中進行二次開發并傳輸數據。圖4為Unity3D和Android Studio通信機制圖。

圖4 Unity3D和Android Studio通信機制

如圖4所示,Android Studio是通過com.unity3d.player包里提供的函數和類調用Unity3D方法。其中UnityPlayer.java是Android Studio中圖像渲染和信息傳遞功能的重要類,UnityPlayer.java類中封裝有函數UnitySendMessage (gameObject,fuction, param),該函數用于Android Studio和Unity3D之間通信傳輸,輸入的3個成員變量分別為游戲對象、需要進行通信的函數名以及需要傳遞的數據參數。Unity3D是通過UnityEngine工具包里所提供的各類API調用Android Studio方法,主要通過 AndroidJavaObject對象及AndroidJavaClass類來實現。AndroidJavaObject是Android Java對象,通過構造函數實例化Android類,并進行函數及成員變量的調用。實例化方式:AndroidJavaObject obj=new AndroidJavaObject(“className”)。AndroidJavaClass是 Android Java 類,里面包含著各種java類的操作。

Unity3D與Android Studio相結合的具體實現步驟如下:

1)在Unity3D中設置Player Settings導出安卓工程。以Unity3D 5.5.0版本為例,如圖5所示,將Build System 選項設置為 Gradle,勾選 Export Project,點擊Export導出項目。導出后的目錄結構如圖6所示。

圖5 Unity3D中設置導出Android工程

圖6 Unity3D導出工程目錄

2)在Android Studio中新建一個項目,將Unity3D導出工程中的文件全部替換到Android Studio中相應的文件夾中,包括 java、jniLibs、assets、res文件夾以及AndroidManifest.xml配置文件。配置好的文件目錄如圖7所示。這樣就初步完成了一個Unity3D結合到 Android Studio中的工程搭建。需要注意的是,Unity3D端導出的文件夾只有在首次配置中才需要全部替換,而后當需要修改Unity3D工程中的文件時只需要將Unity3D導出工程中的 assets->bin->Data文件替換到Android studio對應的Data文件夾即可。路徑如圖8所示,圖8(a)為Unity3D端Data文件路徑,圖8(b)為Android Studio端Data文件路徑。

圖7 Android Studio配置好的文件目錄

圖8 文件路徑

3 光照一致的移動AR實驗案例

AR技術有別于VR技術,AR技術更注重在真實世界中疊加虛擬信息。虛擬信息高度融合于現實世界主要體現為幾何一致性、光照一致性和時間一致性[16]。其中光照一致性指的是在虛擬世界中的光照強度、方向等信息與現實世界中的光源信息保持一致,從而消除虛擬模型顯示的飄浮感,這是影響虛擬模型顯示效果的重要因素。

本文利用移動AR解決方案,實現了帶有虛實光照一致性效果的移動AR實驗。通過轉動手機,利用移動設備自帶的光傳感器采集光強數據,探測到最大光強后近似將攝像頭的位置方向當作現實場景中的光源位置方向,將攝像頭位置的旋轉數據作為虛擬場景中的光源位置的旋轉數據更新光源方向,最終渲染出三維模型及陰影。實驗能實時渲染與現實光照方向較為一致的陰影并與虛擬三維模型融合,達到虛擬場景和現實場景光照一致的視覺效果。

3.1 案例實驗架構

利用Unity3D和Android Studio結合開發并通過Android傳感器采集現實世界光源信息,其中Marker圖的追蹤識別和攝像機姿態的獲取是利用 EasyAR SDK工具包來實現,本案例實驗的整體架構如圖9所示。Android Studio端主要負責光傳感器的注冊和監聽,獲取真實場景中Marker圖周邊環境的光強值并迭代出最大的光照強度,將最大光強數據傳遞給Unity3D端并同時觸發改變虛擬光源的函數;Unity3D端主要負責EasyAR SDK圖像識別追蹤包的搭建和使用,獲取相機標定過程中AR攝像機的旋轉數據,同時開啟陀螺儀監測功能,獲取手機在三維空間的姿態數據。根據追蹤結果的不同使用不同的旋轉數據賦值給虛擬光源,改變虛擬光源在虛擬世界中的方向位置,渲染三維模型和光照方向正確的陰影效果,最后融合到真實場景中。

圖9 案例實驗架構

3.2 案例實驗流程

基于光照一致性的移動AR案例實驗流程如圖10所示,該實驗基于Android Studio端和Unity3D端同時進行。Android Studio端首先初始化注冊光照傳感器,同時監聽光照強度變化,對比當前光強值是否大于最大光強值,若小于最大光強值則不做操作繼續監聽;若大于最大光強值則更新最大光強數據,將光強值進行通信傳輸傳遞給Unity3D端。Unity3D端利用EasyAR SDK搭建AR環境,主要負責攝像頭圖像幀的獲取,對Marker標記進行檢測和識別。Unity3D端的函數每一幀都在更新,如果Android Studio端監聽到最大光強值改變時則會觸發Unity3D端更改虛擬光源方向的函數。在函數中判斷Marker標記的檢測匹配是否成功,如果成功,獲取當前手機AR相機姿態旋轉數據后賦值給虛擬光源組件的旋轉值;如果失敗,則獲取手機陀螺儀數據并矯正手機當前姿態,當Marker標記識別成功后更新虛擬光源組件的位置和光照強度,最終渲染陰影輸出模型融合效果。

圖10 案例實驗流程圖

3.3 案例實驗的結果與分析

本實驗使用Android Studio和Unity3D結合開發,使用Java程序語言開發生成APK,采用Android手機運行測試,具體運行環境軟硬件配置如表3所示。

表3 運行環境配置表

采取單個類似聚光燈光源進行實驗,虛擬模型采用現實場景中常見的物體形狀,并與現實世界中類似的物體模型進行比較。分別在模型追蹤成功和失敗的2種條件下轉動手機采集周邊光照信息,觀察陰影實時變化情況。

1)陰影效果測試。

采取簡單球體模型作為虛擬信息,一般的AR實驗無陰影效果如圖11(a)所示,虛擬模型加了陰影后的效果如圖11(b)所示,通過對比可以看出,加了陰影后的模型顯得更加逼真,減少了模型的漂浮感,增強了用戶的視覺體驗。

圖11 陰影效果對比

2)陰影實時性和模型光照強度動態變化測試。

圖12為手機逆時針繞著Marker圖中心位置轉動時陰影和模型的變化情況,光源位置在Marker圖的右側上方。圖12(a)是攝像頭打開的初始狀態,此時還未轉動手機進行光照強度的探測,實驗默認此時為最大光強位置,渲染該方向陰影;當手機逆時針向右移動到圖12(b)時,實驗探測到更大的光強值,更新了陰影方向及模型光照亮度;當手機再次移動到圖12(c)時探測到當前環境的最大光強,實驗顯示模型亮度達到最大并且重新渲染更新陰影方向;此時再次轉動手機探測不到更大的光強值,實驗保持圖12(c)時的模型和陰影方向狀態的渲染。實驗可以看出虛擬模型的陰影方向和模型的亮度都是根據現實場景中的光照情況實時變化的。實驗結果表明:該方案能夠較快地實時更新陰影的方向,并且更新模型的光照強度狀態,運行較流暢。

圖12 陰影實時性與模型光照強度動態變化測試

3)陰影方向準確性測試。

測試使用不同形狀的虛擬模型與現實世界中相近的物體進行比較。光照一致性的實驗渲染效果如圖13所示,圖13(a)選用球體模型,圖13(b)選用柱體模型,分別在現實場景探測光照強度后實時渲染陰影。實驗結果表明:Android光傳感器能夠敏感地探測周邊光強變化,虛擬物體能夠較好地渲染與真實物體方向較一致的陰影,達到虛實光照一致的目的。

圖13 光照一致性的實驗陰影效果

4 結語

利用Unity3D能夠較為快速地實現AR實驗,同時與Android原生開發結合能夠較輕松地實現信息采集和數據通信,極大地降低開發難度,便于實驗教學和 AR技術的普及。本文結合 Unity3D和 Android Studio同時使用EasyAR SDK設計實現了一個更為直觀和便捷的移動AR實驗解決方案,并通過該解決方案實現了光照一致性的移動AR實驗,通過與現實場景中的物體光照效果比較實驗,表明該方案能夠渲染出與現實場景中較為一致的陰影方向,實時性較好,系統較流暢,能達到預期效果。

猜你喜歡
現實方向實驗
記一次有趣的實驗
2022年組稿方向
計算機應用(2022年2期)2022-03-01 12:33:42
2021年組稿方向
計算機應用(2021年4期)2021-04-20 14:06:36
2021年組稿方向
計算機應用(2021年1期)2021-01-21 03:22:38
我對詩與現實的見解
文苑(2020年11期)2021-01-04 01:53:20
做個怪怪長實驗
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
一種基于Unity3D+Vuforia的增強現實交互App的開發
位置與方向
主站蜘蛛池模板: 国产亚洲欧美日韩在线一区二区三区| 国产成人综合久久精品下载| 国产亚洲精品97AA片在线播放| 国产97视频在线| 精品国产成人av免费| 99福利视频导航| 毛片卡一卡二| 国产视频a| 亚洲三级成人| 欧美成在线视频| 亚洲欧美日韩成人高清在线一区| 91色在线观看| 国产丝袜无码一区二区视频| 欧美一级高清片欧美国产欧美| 国产亚洲第一页| 亚洲欧美日韩动漫| 亚洲AV成人一区国产精品| 国产区人妖精品人妖精品视频| 日本三级黄在线观看| 精品无码人妻一区二区| 最新国产网站| 九色免费视频| 免费Aⅴ片在线观看蜜芽Tⅴ| 亚洲人精品亚洲人成在线| 99热这里只有精品2| 粗大猛烈进出高潮视频无码| 国产一级视频久久| 精品伊人久久久香线蕉 | 国产精品久久久久久影院| 日韩AV无码免费一二三区| 国产精品污污在线观看网站| 日本一本正道综合久久dvd| 天天操精品| 亚洲成肉网| 中文字幕亚洲综久久2021| 国产视频一区二区在线观看| 成人va亚洲va欧美天堂| 欧美国产另类| 欧美午夜在线观看| 一级做a爰片久久免费| 日韩欧美91| 日韩国产无码一区| 国产日韩精品欧美一区灰| 久热这里只有精品6| 日本五区在线不卡精品| 国产凹凸视频在线观看| 亚洲欧美成aⅴ人在线观看| 找国产毛片看| 亚洲人成日本在线观看| 国产精品免费久久久久影院无码| 国产小视频免费观看| 国产在线精品香蕉麻豆| 高h视频在线| 久久国产精品影院| 欧美日韩免费| 欧美精品影院| 国产精品久久自在自线观看| 国产精品永久免费嫩草研究院 | 五月天久久综合| 国产内射一区亚洲| 欧美亚洲国产精品第一页| 伊人色天堂| 国产三级毛片| 国产精品香蕉| 亚洲VA中文字幕| 欧美伊人色综合久久天天| 91成人在线免费观看| 狠狠色丁婷婷综合久久| 伊人久久大线影院首页| 国产在线无码一区二区三区| 久久国产精品77777| 国产美女精品一区二区| 午夜激情福利视频| 欧美在线一二区| 亚洲日本中文字幕天堂网| h网址在线观看| 午夜无码一区二区三区| 亚洲AV一二三区无码AV蜜桃| 国产91丝袜在线播放动漫| 精品国产成人av免费| 欧美中文字幕一区| 在线观看无码av免费不卡网站|