UE4移动平台AR开发快速预览
UE4移動(dòng)平臺(tái)AR開發(fā)底層庫主要是iOS系統(tǒng)的Apple ARKit和Android系統(tǒng)的Google ARCore,UE4的AR開發(fā)對(duì)AR底層庫進(jìn)行了統(tǒng)一的接口包裝(封裝的接口還包括Hololens AR、Magic AR等其他AR庫),我們實(shí)際用UE4開發(fā)移動(dòng)AR應(yīng)用時(shí)并不直接調(diào)用ARCore或ARKit的底層庫原生接口。
注意:由于Google ARCore需要GMS服務(wù)(Google
Play),國內(nèi)的安卓手機(jī)和平板安裝GSM很不友好,有些品牌的手機(jī)平板還無法安裝。
UE4 AR開發(fā)構(gòu)架與Apple ARKit非常類似,大家可以看一下ARKit幫助文檔,了解一下AR開發(fā)的一般流程。
https://developer.apple.com/cn/documentation/arkit/
UE4通過AR Session管理整個(gè)AR識(shí)別過程,AR Session生命期由底層庫管理,用戶并不能直接對(duì)AR Session進(jìn)行修改,調(diào)用AR函數(shù)族時(shí)也不需要傳遞AR Session變量。用戶只能通過AR Session Config對(duì)AR掃描和識(shí)別進(jìn)行配置。
UE4 Augmented Reality的一般開發(fā)流程和主要藍(lán)圖函數(shù):
打開AR
StartARSession藍(lán)圖有一個(gè)輸入?yún)?shù) - ARSessionConfig,通過參數(shù)設(shè)置管理即將打開的AR Session識(shí)別屬性。
Session Type - AR識(shí)別類型,掃描采集AR點(diǎn)云模板用Object Scanning模式,三維識(shí)別用World模式,其他的還有平面圖案識(shí)別,人臉識(shí)別等等其他模式。
Cardidate Objects - 識(shí)別對(duì)象數(shù)據(jù)模板,該數(shù)據(jù)是識(shí)別模塊的點(diǎn)云二進(jìn)制數(shù)據(jù),通常需要通過藍(lán)圖或者C++代碼動(dòng)態(tài)添加
關(guān)閉AR
StopARSession沒有任何參數(shù),調(diào)用后結(jié)束AR識(shí)別,關(guān)閉攝像機(jī)
返回AR狀態(tài)
GetARSessionStatus藍(lán)圖返回當(dāng)前AR識(shí)別狀態(tài),可以根據(jù)狀態(tài)來確定目前AR識(shí)別情況
返回AR配置
GetARSessionConfig返回當(dāng)前AR識(shí)別配置,讀取配置屬性,修改ARSessionConfig并不確定有效,可能需要調(diào)用StopARSession后,用修改過的ARConfig重新調(diào)用StartARSession打開AR Session
返回所有識(shí)別物體
GetAllARGeometries是AR識(shí)別的核心,可以返回當(dāng)前攝像機(jī)范圍內(nèi)可識(shí)別的所有AR對(duì)象,包括AR Session Config配置的Candidate Object識(shí)別對(duì)象,也包括識(shí)別出的空間中其他平面對(duì)象等,可以通過對(duì)返回的Geometry類來判斷識(shí)別物體的類型。
也可以直接通過GetAllARGeometriesByClass返回特定識(shí)別類型的對(duì)象數(shù)組
Geometry類型在ARSessionConfig配置中也有對(duì)應(yīng)屬性,可以修改派生對(duì)象類型,生成自己自定義的Geometry對(duì)象
生成點(diǎn)云識(shí)別模板
GetARCandidateObject是AR掃描的核心。函數(shù)有兩個(gè)輸入?yún)?shù):創(chuàng)建點(diǎn)云識(shí)別對(duì)象的矩形中心坐標(biāo)和矩形框大小,函數(shù)將用指定的矩形范圍內(nèi)已識(shí)別點(diǎn)云信息生成三維識(shí)別對(duì)象(如果點(diǎn)云數(shù)量不夠則會(huì)生成失敗)。建立的點(diǎn)云識(shí)別對(duì)象可以加入到ARSessionConfig的Candidate Objects列表,作為三維物體識(shí)別的模板。
可以將Candidate Object存儲(chǔ)下來(保存Candidate Object的Data點(diǎn)云二進(jìn)制數(shù)組),供AR識(shí)別程序讀取,之后通過填充創(chuàng)建Candidate Object并加入ARSessionConfig實(shí)現(xiàn)。
GetARPointCloud返回當(dāng)前已識(shí)別的點(diǎn)云數(shù)組。AR掃描系統(tǒng)可以通過繪制Box掃描框和范圍內(nèi)點(diǎn)云,幫助用戶進(jìn)行AR識(shí)別物掃描,建立AR Candidate識(shí)別模板。
返回?cái)z像機(jī)畫面
GetARTexture返回?cái)z像機(jī)畫面,函數(shù)接受一個(gè)參數(shù),可以返回需要的攝像機(jī)貼圖(彩色、深度畫面等,需要硬件支持)。需要在調(diào)用StartARSession之后才能獲得攝像機(jī)表面。
以上就是UE4 AR識(shí)別程序開發(fā)的整個(gè)過程,通過以上藍(lán)圖函數(shù)即可實(shí)現(xiàn)一個(gè)從AR掃描到AR識(shí)別的完整應(yīng)用程序。
總結(jié)
以上是生活随笔為你收集整理的UE4移动平台AR开发快速预览的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 自动点赞_python实现
- 下一篇: cocos2d video视频层放置ui