太虛AR(VOID AR)
官方網(wǎng)站:https://www.voidar.net
官方QQ群:277574712
技術(shù)支持:ar@voidar.net
商務(wù)合作:bd@voidar.net
微信公眾號(hào):voidar
導(dǎo)言[ ★★★非常重要★★★ ]
VOID SLAM技術(shù)應(yīng)用時(shí),一定要將“模型的底面貼著地面”,獲得更好的貼地效果,以達(dá)到更好的體驗(yàn)。
請(qǐng)仔細(xì)閱讀并參照本教程中[ 四、實(shí)現(xiàn)流程 ] -> [ 第八步、模型底面貼著地面,獲得更好的貼地感 ]
對(duì)比圖效果示意:
動(dòng)態(tài)圖效果示意:
一、簡介
VOID SLAM技術(shù),不需要Marker圖像,就能在現(xiàn)實(shí)環(huán)境中自由放置虛擬內(nèi)容,創(chuàng)造身臨其境的AR體驗(yàn)。
二、閱讀指南
本教程主要介紹如何在Unity環(huán)境下進(jìn)行操作。
默認(rèn)讀者您擁有一定的軟件使用、應(yīng)用開發(fā)經(jīng)驗(yàn)。
本教程只會(huì)對(duì)Unity的基礎(chǔ)使用進(jìn)行簡要說明,如果希望更深入的了解,您可以訪問Unity官網(wǎng)查看更加詳細(xì)的教程。
三、搭建環(huán)境
在進(jìn)行具體操作前,您需要安裝下列軟件,準(zhǔn)備如下環(huán)境:
操作系統(tǒng)
- Windows 7 或更高版本
- OS X 10.10 或更高版本
Unity版本
支持Unity 3D版本為:5.2.x - 5.6.x(32位或者64位)、2017.1
推薦使用5.4以后的版本(渲染效果提升)
下載地址:https://unity3d.com/cn/get-unity/download/archive
本教程中使用的Unity版本為:5.5.2(64位)
太虛AR SDK
官方網(wǎng)站:https://www.voidar.net
下載地址:https://www.voidar.net/downloads.php
四、實(shí)現(xiàn)流程
第一步、新建Unity工程
打開Unity,新建一個(gè)工程。填寫Project name為“VOID SLAM”、選擇保存的位置,點(diǎn)擊[ Create project ]。
第二步、導(dǎo)入太虛AR SDK
選中[ Assets ] -> [ Import Package ] -> [ Custom Package... ],導(dǎo)入太虛AR SDK。
選擇下載好的SDK文件(.unitypackage),點(diǎn)擊[ 打開 ]按鈕。
彈出界面,點(diǎn)擊[ Import ],導(dǎo)入過程需要耐心等待一段時(shí)間。
如果彈出“API Update Required”界面,請(qǐng)點(diǎn)擊[ I Made a Backup, Go Ahead! ]。
第三步、刪除Main Camera
Unity3D打開時(shí)默認(rèn)是新的Scene,新的Scene自帶一個(gè)Main Camera和Directional Light對(duì)象,我們需要用SDK的ARCamera,故將默認(rèn)的Camera刪除。
右鍵選中場景中自帶的“Main Camera”,點(diǎn)擊[ Delete ] 刪除。
第四步、拖入預(yù)制件“ARCamera”
展開[ Assets ] -> [ VoidAR ] -> [ Prefabs ]目錄,將預(yù)制件“ARCamera”拖至場景中。
操作成功后顯示如下。
第五步、設(shè)置ARCamera
選中ARCamera,查看右側(cè)的“Inspector”欄,設(shè)置“Void AR Behaviour (Script)”組件屬性。
- 設(shè)置MarkerType = "Markerless"
第六步、設(shè)置App License Key
打開云平臺(tái)網(wǎng)址,注冊(cè)賬號(hào)并登錄。
網(wǎng)站地址:http://cloud.voidar.net
進(jìn)入云平臺(tái),左側(cè)點(diǎn)擊[ 創(chuàng)建SLAM應(yīng)用 ]。
點(diǎn)擊[ 創(chuàng)建應(yīng)用 ]。
彈出界面填寫AppId,填寫完成后點(diǎn)擊[ 保存 ]。
- 因AppId屬于唯一值,所以此處請(qǐng)您自行設(shè)置AppId,比如 "com.VOIDAR.SLAM"
- 注:打包時(shí)設(shè)置的Bundle Identifier,必須與此處設(shè)置的AppId相同,否則SLAM將無法正常使用。[ ★★★非常重要★★★ ]
完成后,獲得“AppKey”。
返回Unity,選中ARCamera,查看右側(cè)的Inspector欄,繼續(xù)完成“App License Key”的設(shè)置。
第七步、添加模型
右鍵點(diǎn)擊場景,彈出列表中點(diǎn)擊[ Create Empty ]。
創(chuàng)建了一個(gè)“GameObject”。
選中“GameObject”,并將其坐標(biāo)調(diào)整為(0,0,0)。
右鍵點(diǎn)擊“GameObject”,列表中選中“3D Object”,點(diǎn)擊[ Cube ]。
在GameObject下方,創(chuàng)建了一個(gè)3D模型“Cube”。
為了生成模型的時(shí)候,模型大小比較合適,選中“Cube”,調(diào)整模型的位置和大小。
Position調(diào)整為(X , Y , Z = 0 , 0 , 0)
Scale調(diào)整為(X , Y , Z = 0.3 , 0.3 , 0.3)
第八步、模型底面貼著地面,獲得更好的貼地感[ ★★★非常重要★★★ ]
VOID SLAM技術(shù)應(yīng)用時(shí),一定要將模型的底面貼著地面,獲得更好的貼地效果,以達(dá)到更好的體驗(yàn)。
要使得模型的底面貼著地面,有2種方法:
1. 調(diào)整模型的中心點(diǎn):
使用3d Max等軟件,將3D模型的中心點(diǎn),調(diào)整至“模型底部中心”。本教程不詳細(xì)介紹,具體的操作可以參考:改變模型軸心點(diǎn)的方法
2. 添加參照平面,Unity中直接調(diào)整模型坐標(biāo)位置
Unity中新建的模型,中心會(huì)默認(rèn)在模型正中。通過添加一個(gè)Plane平面做參照,將模型底面貼著Plane平面即可。
下文將按照該方法進(jìn)行設(shè)置。
新建的“Cube”模型,中心默認(rèn)在模型正中。
創(chuàng)建一個(gè)Plane作為參照,右鍵點(diǎn)擊場景,列表中選中“3D Object”,點(diǎn)擊[ Plane ]。
選中“Plane”,將其坐標(biāo)調(diào)整為(0,0,0)。
選中3D模型“Cube”,拖動(dòng)坐標(biāo)軸調(diào)整其位置,讓其底面貼著Plane。(X , Y , Z = 0 , 0.15 , 0)
底面緊貼Plane,模型的坐標(biāo)位置就調(diào)整完成了。
右鍵選中“Plane”,點(diǎn)擊[ Delete ],刪除參照物,調(diào)整完成。
第九步、設(shè)置觸發(fā)事件
先選中“ARCamera”,然后再鼠標(biāo)左鍵點(diǎn)擊“GameObject”,按住不放,將其拖入“MakerlessNode”變量中。
設(shè)置完成后,顯示如下。
選中“GameObject”,點(diǎn)擊[ Add Compoent ],添加“Markerless Tracking“腳本組件。
腳本綁定成功后,顯示如下。
接著,需要?jiǎng)?chuàng)建一個(gè)腳本,實(shí)現(xiàn)Markerless跟蹤功能。在Assets目錄下,創(chuàng)建一個(gè)“Folder”。
修改文件名為“Scripts”。
右鍵選中“Scripts”文件夾,創(chuàng)建一個(gè)新的C#腳本。
修改文件名為"SLAM"。
雙擊“SLAM”腳本,復(fù)制粘貼如下代碼,并保存腳本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SLAM : MonoBehaviour {
? ? ? ?void OnGUI()
? ? ? ?{
? ? ? ? ? ? ? var btnHeight = Screen.height * 0.1f;
? ? ? ? ? ? ? var btnWidth = btnHeight * 3.0f;
? ? ? ? ? ? ? var gap = 20;
? ? ? ? ? ? ? GUI.skin.button.fontSize = 36;
? ? ? ? ? ? ? if (GUI.Button(new Rect(Screen.width - btnWidth, gap, btnWidth, btnHeight), "Start"))
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? VoidAR.GetInstance().startMarkerlessTracking();//開始跟蹤
? ? ? ? ? ? ? }
? ? ? ? ? ? ? if (GUI.Button(new Rect(Screen.width - btnWidth, gap * 2 + btnHeight, btnWidth, btnHeight), "Reset"))
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ?VoidAR.GetInstance().resetMarkerless();//重置
? ? ? ? ? ? ? }
? ? ? ?}
}
選中“ARCamera”,點(diǎn)擊[ Add Compoent ],添加“SLAM”腳本。
腳本綁定成功后,顯示如下。
第十步、保存場景
選中[ File] -> [ Save Scenes ] ,進(jìn)行場景保存。
設(shè)置文件名為“VOID SLAM”,點(diǎn)擊[ 保存 ]按鈕。
第十一步、打包Android或iOS
VOID SLAM是太虛AR自主研發(fā)的多元融合的技術(shù),需使用慣性測量單元(簡稱IMU)。
因PC端沒有IMU,故無法進(jìn)行調(diào)試,需要打包至手機(jī)端(Android或iOS)才能體驗(yàn)到實(shí)際效果。
打包流程分為“Android打包”、“iOS打包”。
- Android打包
打包Android,需要將Unity切換至Android平臺(tái),點(diǎn)擊[ File ] -> [ Build Settings... ]。
選中Android標(biāo)簽,如果左下的[ Switch Platform ]按鈕為灰色,需要下載Unity Android Support,請(qǐng)點(diǎn)擊右側(cè)的[ Open Download Page ]按鈕,下載并安裝。
點(diǎn)擊[ Switch Platform ]按鈕,完成Android平臺(tái)的切換。
切換完成后,先關(guān)閉Build Settings界面,繼續(xù)搭建打包環(huán)境。
選中[ Edit ] -> [ Preferences... ],設(shè)置參數(shù)。
彈出界面選中“External Tools”選項(xiàng),設(shè)置Android SDK和JDK。
如果本地沒有SDK和JDK,可以點(diǎn)擊后方的[ Download ],在彈出的網(wǎng)頁上進(jìn)行下載即可。
也可以用鏈接下載安裝:
SDK(要科學(xué)上網(wǎng)才能打開):https://developer.android.com/studio/index.html#Other
JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html
安裝完成后,設(shè)置好SDK和JDK的路徑就可以了。
選中ARCamera,查看右側(cè)的“Inspector”欄,設(shè)置“Void AR Behaviour (Script)”組件屬性。
- 設(shè)置Camera = "后置攝像頭"
選中[ File ] -> [ Build Settings... ],取消默認(rèn)場景前方的勾選。然后點(diǎn)擊[ Add Open Scenes ],添加當(dāng)前的場景。
添加完成后,如下所示。
點(diǎn)擊[ Player Settings... ]按鈕,查看右側(cè)的“Inspector”欄,設(shè)置屬性參數(shù),您可以自定義。
- 設(shè)置Company = "VOIDAR"
- 設(shè)置Product Name = "VOID SLAM"
- 設(shè)置Bundle Identifier= "com.VOIDAR.SLAM"(必須與第六步設(shè)置的AppId相同,否則SLAM將無法正常使用。[ ★★★非常重要★★★ ])
注:Bundle Identifier不能使用默認(rèn)值,否則無法打包。
完成設(shè)置后,點(diǎn)擊[ Build ]按鈕。
設(shè)置文件名為“VOID SLAM”,點(diǎn)擊[ 保存 ]按鈕,開始打包。
打包過程需要耐心等待一段時(shí)間。
完成后,將生成一個(gè)“VOID SLAM.apk”文件,安卓打包完成。
- iOS打包
iOS打包需要在Mac OS系統(tǒng)中完成,需要準(zhǔn)備Mac設(shè)備(如MacBook Pro、MacBook、iMac、Mac mini等)。
在Unity中,將開發(fā)平臺(tái)切換至iOS,然后Build生成Xcode工程。
注:推薦使用Mac設(shè)備的Unity軟件來生成Xcode工程。如果之前是在Windows環(huán)境下編輯的,可以將Unity目錄下的整個(gè)工程文件,拷貝至Mac電腦中進(jìn)行編輯處理。
啟動(dòng)Unity,打開之前保存的、或者拷貝過來的VOID SLAM工程文件(工程已經(jīng)打開的,跳過這步)
點(diǎn)擊[ Open ]按鈕打開工程。
將Unity切換至iOS平臺(tái),點(diǎn)擊[ File ] -> [ Build Settings... ]。
選中iOS標(biāo)簽,如果左下的[ Switch Platform ]按鈕為灰色,需要下載Unity iOS Support,請(qǐng)點(diǎn)擊右側(cè)的[ Open Download Page ]按鈕,下載并安裝。
點(diǎn)擊[ Switch Platform ]按鈕,完成iOS平臺(tái)的切換。
切換完成后,先關(guān)閉Build Settings界面。
選中ARCamera,查看右側(cè)的“Inspector”欄,設(shè)置“Void AR Behaviour (Script)”組件屬性。
- 設(shè)置Camera = "后置攝像頭"
選中[ File ] -> [ Build Settings... ],取消默認(rèn)場景前方的勾選。然后點(diǎn)擊[ Add Open Scenes ],添加當(dāng)前的VOID SLAM場景。
添加完成后,如下所示。
完成設(shè)置后,點(diǎn)擊[ Build ]按鈕。
準(zhǔn)備生成Xcode工程,命名為“Output”,點(diǎn)擊[ Save ]。
打開生成的Xcode文件。
填寫配置,將自己的證書、iOS適應(yīng)版本都正確選上:
左側(cè)點(diǎn)擊[ Unity-iPhone ],配置參數(shù),您可以自定義。
- 設(shè)置Display Name = "VOIDAR_Test"
- 設(shè)置Bundle Identifier = "com.VOIDAR.SLAM"(必須與第六步設(shè)置的AppId相同,否則SLAM將無法正常使用。[ ★★★非常重要★★★ ])
- 設(shè)置Version = "1.0"
- 設(shè)置Build = “1.0”
- 設(shè)置Team = “您自己的證書”
- 設(shè)置Deployment Target = “8.1”
General頁面往下拉,在Linked Frameworks and Libraries中,點(diǎn)擊“+”。
彈出界面,選中“Accelerate.framework”,點(diǎn)擊[ Add ]。
添加完成,Linked Frameworks and Libraries下方出現(xiàn)“Accelerate.framework”。
添加攝像機(jī)權(quán)限。
選中“Info”標(biāo)簽,點(diǎn)擊Supported interface orientations后面的“+”。在彈出列表中選中“Privacy - Camera Usage Description”。
選中”Build Settings”標(biāo)簽,設(shè)置Enable Bitcode = “No”。
數(shù)據(jù)線連接iphone或者ipad,點(diǎn)擊[ 運(yùn)行 ],即可打包。
完成后,iphone或者ipad上,將生成一個(gè)“VOIDAR_Test”的APP,iOS打包完成。
五、操作說明
Start:啟動(dòng)VOID SLAM(Markerless),初始化虛擬物體(為了得到更好的體驗(yàn)效果,點(diǎn)擊啟動(dòng)時(shí),請(qǐng)對(duì)準(zhǔn)一個(gè)近處、特征豐富的平面)
Reset:重置VOID SLAM(Markerless),移除虛擬物體,停止跟蹤。
點(diǎn)擊[ Start ]已經(jīng)生成了虛擬物體的情況下,如果需要切換環(huán)境,請(qǐng)先點(diǎn)擊[ Reset ],再點(diǎn)擊[ Start ]進(jìn)行初始化。
平面要求:
1. 特征豐富
2. 近處取景
平面示意:
至此,VOID SLAM制作完成。