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