VOID SLAM (Markerless)
Note
支持:Android / iOS
說明:VOID SLAM是太虛AR自主研發的多元融合的技術,需使用慣性測量單元(簡稱IMU)。因PC端沒有IMU,故無法進行調試,需要打包至手機端(Android或iOS)才能體驗到實際效果。
導言 (★★★非常重要★★★)
Important
VOID SLAM技術應用時,一定要將“模型的底面貼著地面”,獲得更好的貼地效果,以達到更好的體驗。
請仔細閱讀并參照本教程中[ 第八步、模型底面貼著地面,獲得更好的貼地感 ]
對比圖效果示意:
動態圖效果示意:
一、簡介
VOID SLAM技術,不需要Marker圖像,就能在現實環境中自由放置虛擬內容,創造身臨其境的AR體驗。
二、閱讀指南
本教程主要介紹如何在Unity環境下進行操作。
默認讀者您擁有一定的軟件使用、應用開發經驗。
教程中只會對Unity的基礎使用進行簡要說明,有關Unity使用的更多信息,請訪問Unity官網查看。
三、搭建環境
在進行具體操作前,您需要安裝下列軟件,準備如下環境:
操作系統
- Windows 7 或更高版本
- OS X 10.10 或更高版本
Unity版本支持
Unity 3D版本 | 太虛AR SDK功能 |
---|---|
5.6.x | 全部支持 |
2017.x | 全部支持 |
2018.x | 全部支持 |
2019.1.x | 全部支持 |
2019.2.0 | 全部支持 |
Note
本教程中使用的Unity版本為:Unity 2017.4.13
Unity 3D下載地址:https://unity3d.com/cn/get-unity/download/archive
四、實現流程
第一步、新建Unity工程
打開Unity,新建一個工程。填寫Project name為“VOID SLAM
”、選擇保存的位置,點擊[ Create project ]
。
第二步、導入太虛AR SDK
選中[ Assets ] -> [ Import Package ] -> [ Custom Package... ],導入太虛AR SDK。
選擇下載好的SDK文件(.unitypackage),點擊[ 打開 ]
按鈕。
彈出界面,點擊[ Import ]
,導入過程需要耐心等待一段時間。
如果彈出“API Update Required”界面,請點擊[ I Made a Backup, Go Ahead! ]
。
第三步、刪除Main Camera
Note
Unity3D打開時默認是新的Scene,新的Scene自帶一個Main Camera和Directional Light對象,我們需要用SDK的ARCamera,故將默認的Camera刪除。
右鍵選中場景中自帶的“Main Camera
”,點擊[ Delete ]
刪除。
第四步、拖入預制件“ARCamera”
展開[ Assets ] -> [ VoidAR ] -> [ Prefabs ]目錄,
將預制件“
ARCamera
”拖至場景中。
操作成功后顯示如下。
第五步、設置ARCamera
選中ARCamera,查看右側的“Inspector
”欄,設置“Void AR Behaviour (Script)”組件屬性。
設置MarkerType
= "Markerless"
第六步、設置App License Key
打開云平臺網址,注冊賬號并登錄
。
進入云平臺,左側點擊[ 創建SLAM應用 ]
。
點擊[ 創建應用 ]
。
彈出界面填寫AppId,填寫完成后點擊[ 保存 ]
。
Note
因AppId屬于唯一值,所以此處請您自行設置AppId,比如 "com.VOIDAR.SLAM"
Warning
打包時設置的Bundle Identifier,必須與此處設置的AppId相同,否則后續當您需要移除水印時,將無法正常進行。
完成后,獲得“AppKey
”。
返回Unity,選中ARCamera,查看右側的Inspector
欄,繼續完成“App License Key”的設置。
第七步、添加模型
右鍵點擊場景,彈出列表中點擊[ Create Empty ]
。
創建了一個“GameObject
”。
選中“GameObject
”,并將其坐標調整為(0,0,0)。
右鍵點擊“GameObject
”,列表中選中“3D Object
”,點擊[ Sphere ]
。
在GameObject下方,創建了一個3D模型“Sphere
”。
為了生成模型的時候,模型大小及位置比較合適,需要進行調整。
調整位置
選中“
Sphere
”,將Position設置為(X , Y , Z = 0 , 0 , 0)調整大小
調整的方式有2種
:單獨調整
:選中模型直接調整大小。適用于模型較少、或者需要針對性調整的情況。選中“
Sphere
”,將Scale設置為(X , Y , Z = 0.1 , 0.1 , 0.1)整體調整
:從整體上對AR內容的大小進行調整。適用于模型較多,場景較復雜的情況。選中“
ARCamera
”,調整SceneScale屬性。Note
本教程采用第1種方式進行調整,故此處
設置保持默認值
=1。
第八步、模型底面貼著地面,獲得更好的貼地感
Important
VOID SLAM技術應用時,一定要將模型的底面貼著地面,獲得更好的貼地效果,以達到更好的體驗。
Warning
要使得模型的底面貼著地面,有2種方法:
調整模型的中心點
:使用3d Max等軟件,將3D模型的中心點,調整至“模型底部中心”。
本教程不詳細介紹,具體的操作可以參考:改變模型軸心點的方法
添加參照平面,Unity中直接調整模型坐標位置
Unity中新建的模型,中心會默認在模型正中。通過添加一個Plane平面做參照,將模型底面貼著Plane平面即可。
下文將按照方法2進行設置。
新建的“Sphere”模型,中心默認在模型正中。
創建一個Plane作為參照,右鍵點擊場景,列表中選中“3D Object
”,點擊[ Plane ]
。
選中“Plane
”,將其坐標調整為(0,0,0)。
選中3D模型“Sphere
”,拖動坐標軸調整其位置,讓其底面貼著Plane。(X , Y , Z = 0 , 0.05 , 0)
底面緊貼Plane,模型的坐標位置就調整完成了。
右鍵選中“Plane
”,點擊[ Delete ]
,刪除參照物,調整完成。
第九步、設置觸發事件
先選中“ARCamera
”,然后再鼠標左鍵點擊“GameObject
”,按住不放,將其拖入“MakerlessNode
”變量中。
設置完成后,顯示如下。
選中“GameObject
”,點擊[ Add Compoent ]
,添加“Markerless Help“腳本組件。
腳本綁定成功后,顯示如下。
第十步、保存場景
選中[ File] -> [ Save Scenes ]
,進行場景保存。
設置文件名為“VOID SLAM
”,點擊[ 保存 ]
按鈕。
第十一步、打包發布
打包流程分為“Android
”、“iOS
”。
Android
打包Android,需要將Unity切換至Android平臺,點擊[ File ] -> [ Build Settings... ]
。
選中Android標簽,如果左下的[ Switch Platform ]按鈕為灰色,需要下載Unity Android Support
,請點擊右側的[ Open Download Page ]
按鈕,下載并安裝。
點擊[ Switch Platform ]
按鈕,完成Android平臺的切換。
切換完成后,先關閉Build Settings界面,繼續搭建打包環境。
選中[ Edit ] -> [ Preferences... ]
,設置參數。
彈出界面選中“External Tools
”選項,設置Android SDK和JDK。
Note
如果本地沒有SDK和JDK,可以點擊后方的[ Download ]
,在彈出的網頁上進行下載即可。
也可以用鏈接下載安裝:
SDK
(要科學上網才能打開):https://developer.android.com/studio/index.html
JDK
:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安裝完成后,設置好SDK和JDK的路徑就可以了。
選中ARCamera,查看右側的“Inspector
”欄,設置“Void AR Behaviour (Script)”組件屬性。
設置Camera
= "后置攝像頭"
選中[ File ] -> [ Build Settings... ]
,取消默認場景前方的勾選。然后點擊[ Add Open Scenes ]
,添加當前的場景。
添加完成后,如下所示。
設置屬性參數
點擊[ Player Settings... ]
按鈕,查看右側的“Inspector
”欄,設置屬性參數,您可以自定義。
設置Company
= "VOIDAR"設置Product Name
= "VOID SLAM"-
Important
取消“Multithreaded Rendering”的勾選!
-
Important
設置Bundle Identifier
= "com.VOIDAR.SLAM"(必須與第六步設置的AppId相同,否則后續當您需要移除水印時,將無法正常進行)
完成設置后,點擊[ Build ]
按鈕。
設置文件名為“VOID SLAM
”,點擊[ 保存 ]
按鈕,開始打包。
打包過程需要耐心等待一段時間。
完成后,將生成一個“VOID SLAM.apk
”文件,安卓打包完成。
iOS
iOS打包需要在Mac OS系統中完成,需要準備Mac設備(如MacBook Pro、MacBook、iMac、Mac mini等)。
在Unity中,將開發平臺切換至iOS,然后Build生成Xcode工程。
Warning
推薦使用Mac設備的Unity軟件來生成Xcode工程。如果之前是在Windows環境下編輯的,可以將Unity工程輸出成unitypackage,或拷貝至Mac電腦中進行編輯處理。
啟動Unity,打開
之前保存的、或者拷貝過來的VOID SLAM工程文件
(工程已經打開的,跳過這步)
點擊[ Open ]
按鈕打開工程。
將Unity切換至iOS平臺,點擊[ File ] -> [ Build Settings... ]
。
選中iOS標簽,如果左下的[ Switch Platform ]按鈕為灰色,需要下載Unity iOS Support
,請點擊右側的[ Open Download Page ]
按鈕,下載并安裝。
點擊[ Switch Platform ]
按鈕,完成iOS平臺的切換。
切換完成后,點擊[ Player Settings... ]
按鈕。
Important
取消“Multithreaded Rendering”的勾選!
關閉Build Settings界面,選中ARCamera,查看右側的“Inspector
”欄,設置“Void AR Behaviour (Script)”組件屬性。
設置Camera
= "后置攝像頭"
選中[ File ] -> [ Build Settings... ]
,取消默認場景前方的勾選。然后點擊[ Add Open Scenes ]
,添加當前的場景。
添加完成后,如下所示。
完成設置后,點擊[ Build ]
按鈕。
準備生成Xcode工程,命名為“Output
”,點擊[ Save ]
。
打開
生成的Xcode文件。
設置屬性參數
填寫配置,將自己的證書、iOS適應版本都正確選上:
左側點擊[ Unity-iPhone ]
,配置參數,您可以自定義。
設置Display Name
= "VOIDAR_Test"-
Important
設置Bundle Identifier
= "com.VOIDAR.SLAM"(必須與第六步設置的AppId相同,否則后續當您需要移除水印時,將無法正常進行) 設置Version
= "1.0"設置Build
= “1.0”設置Team
= “您自己的證書”設置Deployment Target
= “8.1”
添加Accelerate.framework
General頁面往下拉,在Linked Frameworks and Libraries中,點擊“+
”。
彈出界面,選中“Accelerate.framework”,點擊[ Add ]
。
添加完成,Linked Frameworks and Libraries下方出現“Accelerate.framework”。
添加攝像機權限
選中“Info”標簽,點擊Supported interface orientations后面的“+”。在彈出列表中選中“Privacy - Camera Usage Description
”。
設置Enable Bitcode = “No”
選中”Build Settings”標簽,設置Enable Bitcode = “No
”。
打包取消armv7
選中“Build Settings”標簽,展開Architectures,選擇 “Other...
”。
彈出界面,選中“armv7”后點擊“-
”。
取消后顯示如下即可。
數據線連接iphone或者ipad,點擊[ 運行 ]
,即可打包。
完成后,iphone或者ipad上,將生成一個“VOIDAR_Test
”的APP,iOS打包完成。
五、操作說明
打包完成后,即可在移動設備上運行。
- 對準平面:為了得到更好的體驗效果,點擊[ Start ]前,請先將攝像頭對準一個平面
- 點擊[ Start ]:啟動VOID SLAM (Markerless),初始化虛擬物體。如果需要切換環境,請將攝像頭對準新平面后,再次點擊[ Start ]進行初始化。
至此,VOID SLAM制作完成。