AR Foundation

配置Unity的Android環(huán)境

配置環(huán)境

1.在工具欄選擇File -> Build Settings,在平臺(tái)列表選擇Android,點(diǎn)擊Switch Platform轉(zhuǎn)換平臺(tái)。
2.在工具欄選擇Window -> Package Manager,在界面中下載AR Foundation,ARCore XR Plugin。
3.在工具欄選擇Edit -> Project Settings -> Player ->Other Settings,刪除vulkan,取消Multithreaded Rendering。

遇到的錯(cuò)誤

出現(xiàn)了如下錯(cuò)誤:
1.D:\Download\artemplate-master\Temp\gradleOut\unityLibrary\src\main\java\com\unity3d\player\UnityPlayerActivity.java使用或覆蓋了已過時(shí)的 API。
這只是個(gè)提示,提醒API已過時(shí),但不影響運(yùn)行。
2.Missing 'package' key attribute on element package at :arcore_client……。
關(guān)鍵出錯(cuò)點(diǎn),解決辦法參考:https://blog.csdn.net/lxbhahaha/article/details/111269980

圖像跟蹤

圖像跟蹤的基本操作

1.建立一個(gè)參考圖像庫,為了更好的分類管理,在Assets下新建一個(gè)文件夾命名為ImageLib,右鍵Create -> XR -> Reference Image Library,將新建的參考庫命名為RefImgaeLib

參考圖像庫用來存儲(chǔ)一系列的參考圖像用于對比,每一個(gè)圖像跟蹤程序都必須有一個(gè)參考圖像庫,但需要注意的是,參考圖像庫中存儲(chǔ)的實(shí)際是參考圖像的特征值信息而不是原始圖像,這有助于提高對比速度與魯棒性。參考圖像庫越大,圖像對比就會(huì)越慢,建議參考圖像庫的圖像不要超過1000張。

Create Reference Image Library.png

2.在Assets下新建一個(gè)Pictures文件夾,用來存放要識(shí)別的圖像。選擇剛剛新建的參考庫(RefImageLib),在Inspector面板選擇Add Image添加參考圖像,選擇要識(shí)別的圖像,勾選Specify SizeKeep Texture of Runtime,并且設(shè)置Specify Size下面的Physical Size(這個(gè)值可以多嘗試,確定一個(gè)合適的大小)。

Specify Size:為加速圖像檢測識(shí)別過程,一些底層SDK要求提供一個(gè)2D待檢測圖像的物理尺寸,所以如果要設(shè)置,這個(gè)值一定會(huì)是一個(gè)大于0的長寬值對,當(dāng)一個(gè)值發(fā)生變化時(shí),Unity會(huì)根據(jù)參考圖像的比例自動(dòng)調(diào)整另一個(gè)值。

3.在Assets下新建一個(gè)Prefabs文件夾,用來存放要顯示的三維模型(可以先在Hierarchy面板新建模型后將其拖入Prefabs文件夾,并將Hierarchy中的模型刪除掉)。

4.在Hierarchy面板右鍵Create -> XR -> AR Session Origin以及AR Session,詳細(xì)介紹參考文章:
https://blog.csdn.net/yolon3000/article/details/93914012。

AR Session Origin組件的作用是將可跟蹤對象(如平面和特征點(diǎn))姿態(tài)信息轉(zhuǎn)換為Unity場景中的最終位置、方向和比例。
AR中Session用來管理 AR 應(yīng)用的狀態(tài)、處理 AR 應(yīng)用生命周期,是 AR API的主要入口,由其控制在目標(biāo)平臺(tái)上啟用或禁用AR。

5.選擇AR Session Origin,為其添加一個(gè)AR Tracked Image Manager組件,在Reference Library選項(xiàng)選擇第一步新建的參考庫RefImageLIb,在Tracked Image Prefab選項(xiàng)選擇想要顯示的三維模型。

6.測試運(yùn)行。

遇到的問題

1.識(shí)別圖像所顯現(xiàn)的三維模型一直處于圖片的中心位置,在Unity中調(diào)整模型的位置也無改變。

解決辦法1:更改所識(shí)別圖像為要顯示的區(qū)域圖像,這樣顯示的模型會(huì)出現(xiàn)在更改后的圖像中心(偽改變位置)。
解決辦法2:還是識(shí)別原本的圖像,但可以增加一個(gè)Plane用來對照要識(shí)別的圖像,將模型放置在想要顯示的位置,把模型設(shè)為Plane的子物體,將Plane作為新的預(yù)制體,添加到AR Session Origin下的AR Tracked Image Manager組件的Tracked Image Prefab中。
注:所添加的Plane不能設(shè)置為固定大小,隨著所識(shí)別圖像的大小變化,Plane也應(yīng)該變化,下面的一行代碼為追蹤識(shí)別圖像尺寸的語句。

 trackedImage.transform.localScale = new Vector3(trackedImage.size.x, 1f, trackedImage.size.y);

這里還有一個(gè)額外的注意點(diǎn):由于腳本是通過控制父物體去適應(yīng)識(shí)別圖像的大小,從而改變父物體下子物體的大小,所以在加入子物體之前,務(wù)必要調(diào)整好父物體的比例,這樣最后的子物體顯示效果比例才正確。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容