配置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使用或覆蓋了已過(guò)時(shí)的 API。
這只是個(gè)提示,提醒API已過(guò)時(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è)參考圖像庫(kù),為了更好的分類(lèi)管理喉磁,在Assets下新建一個(gè)文件夾命名為ImageLib谓苟,右鍵Create -> XR -> Reference Image Library,將新建的參考庫(kù)命名為RefImgaeLib协怒。
參考圖像庫(kù)用來(lái)存儲(chǔ)一系列的參考圖像用于對(duì)比涝焙,每一個(gè)圖像跟蹤程序都必須有一個(gè)參考圖像庫(kù),但需要注意的是孕暇,參考圖像庫(kù)中存儲(chǔ)的實(shí)際是參考圖像的特征值信息而不是原始圖像仑撞,這有助于提高對(duì)比速度與魯棒性。參考圖像庫(kù)越大芭商,圖像對(duì)比就會(huì)越慢派草,建議參考圖像庫(kù)的圖像不要超過(guò)1000張。
2.在Assets下新建一個(gè)Pictures文件夾铛楣,用來(lái)存放要識(shí)別的圖像近迁。選擇剛剛新建的參考庫(kù)(RefImageLib),在Inspector面板選擇Add Image添加參考圖像簸州,選擇要識(shí)別的圖像鉴竭,勾選Specify Size和Keep Texture of Runtime,并且設(shè)置Specify Size下面的Physical Size(這個(gè)值可以多嘗試岸浑,確定一個(gè)合適的大胁妗)。
Specify Size:為加速圖像檢測(cè)識(shí)別過(guò)程矢洲,一些底層SDK要求提供一個(gè)2D待檢測(cè)圖像的物理尺寸璧眠,所以如果要設(shè)置,這個(gè)值一定會(huì)是一個(gè)大于0的長(zhǎng)寬值對(duì)读虏,當(dāng)一個(gè)值發(fā)生變化時(shí)责静,Unity會(huì)根據(jù)參考圖像的比例自動(dòng)調(diào)整另一個(gè)值。
3.在Assets下新建一個(gè)Prefabs文件夾盖桥,用來(lái)存放要顯示的三維模型(可以先在Hierarchy面板新建模型后將其拖入Prefabs文件夾灾螃,并將Hierarchy中的模型刪除掉)。
4.在Hierarchy面板右鍵Create -> XR -> AR Session Origin以及AR Session揩徊,詳細(xì)介紹參考文章:
https://blog.csdn.net/yolon3000/article/details/93914012腰鬼。
AR Session Origin組件的作用是將可跟蹤對(duì)象(如平面和特征點(diǎn))姿態(tài)信息轉(zhuǎn)換為Unity場(chǎng)景中的最終位置嵌赠、方向和比例。
AR中Session用來(lái)管理 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)選擇第一步新建的參考庫(kù)RefImageLIb乌助,在Tracked Image Prefab選項(xiàng)選擇想要顯示的三維模型。
6.測(cè)試運(yùn)行陌知。
遇到的問(wèn)題
1.識(shí)別圖像所顯現(xiàn)的三維模型一直處于圖片的中心位置他托,在Unity中調(diào)整模型的位置也無(wú)改變。
解決辦法1:更改所識(shí)別圖像為要顯示的區(qū)域圖像仆葡,這樣顯示的模型會(huì)出現(xiàn)在更改后的圖像中心(偽改變位置)赏参。
解決辦法2:還是識(shí)別原本的圖像,但可以增加一個(gè)Plane用來(lái)對(duì)照要識(shí)別的圖像沿盅,將模型放置在想要顯示的位置把篓,把模型設(shè)為Plane的子物體,將Plane作為新的預(yù)制體腰涧,添加到AR Session Origin下的AR Tracked Image Manager組件的Tracked Image Prefab中韧掩。
注:所添加的Plane不能設(shè)置為固定大小,隨著所識(shí)別圖像的大小變化窖铡,Plane也應(yīng)該變化疗锐,下面的一行代碼為追蹤識(shí)別圖像尺寸的語(yǔ)句。
trackedImage.transform.localScale = new Vector3(trackedImage.size.x, 1f, trackedImage.size.y);
這里還有一個(gè)額外的注意點(diǎn):由于腳本是通過(guò)控制父物體去適應(yīng)識(shí)別圖像的大小费彼,從而改變父物體下子物體的大小滑臊,所以在加入子物體之前,務(wù)必要調(diào)整好父物體的比例箍铲,這樣最后的子物體顯示效果比例才正確雇卷。