太虛AR(VOID AR)
官方網站:https://www.voidar.net
官方QQ羣:277574712
技術支持:[email protected]
商務合作:[email protected]
微信公衆號:voidar
一、簡介
動態加載模塊,是指運行時通過代碼添加刪除標識物(Marker)和模型數據。
二、閱讀指南
本教程主要介紹如何在Unity環境下進行操作。
默認讀者您擁有一定的軟件使用、應用開發經驗。
本教程只會對Unity的基礎使用進行簡要說明,如果希望更深入的瞭解,您可以訪問Unity官網查看更加詳細的教程。
三、搭建環境
在進行具體操作前,您需要安裝下列軟件,準備如下環境:
操作系統
- 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位)
四、實現流程
第一步、新建Unity工程
打開Unity,新建一個工程。填寫Project name爲“VOIDAR_Test”、選擇保存的位置,點擊[ 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
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 = “Image”,代表識別類型爲圖像
-設置Simultaneous Tracking = “1”,代表同時跟蹤的識別Marker數量爲1個
第六步、設置資源
本教程所需的資源,都是SDK自帶的內置資源。
-識別圖(Marker):Assets / StreamingAssets / 1yuan.jpg
-顯示模型:Assets / VoidARDemo / Prefabs / CubeTarget.prefab
其中,顯示模型需要用Unity打包成AssetBundle資源。
在[ VoidARDemo] -> [ Prefabs ]文件夾下,選中“CubeTarget.prefab”,點擊[ VoidAR ] -> [ AssetBundleBuilder ]。
彈出界面中,點擊[ BuildAssetBundles ],不同平臺的AsssetsBundle包不一致,本教程中全部勾選。
生成過程需要一定時間,請耐心等待。
生成完成後,請關閉該界面。
將在StreamingAssets下生成“Assetbundle資源”,每個平臺對應一個同名的子文件夾,如下圖:
資源準備完畢。
第七步、編寫腳本加載資源
ARCamera上新建腳本組件“MyTest”。
選中“ARCamera”,先點擊[ Add Compoent ],搜索框中輸入“MyTest”,然後點擊[ New Script ]。
點擊[ Create and Add ],添加腳本。
腳本添加成功後,顯示如下。
點擊設置按鈕,彈出界面點擊[ Edit Script ],編寫腳本。
自動打開VS2015(MonoDevelop等其它編輯器也可以)
用以下腳本替換,並保存。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class MyTest : MonoBehaviour {
void OnGUI()
{
var btnHeight = Screen.height * 0.1f;
var btnWidth = btnHeight * 2f;
var gap = 20;
if (GUI.Button(new Rect(Screen.width - btnWidth, gap, btnWidth, btnHeight), "添加目標"))
{
Debug.Log(" add marker");
string markerURL = VoidARUtils.GetStreamDirForWWW() + "1yuan.jpg";
string targetURL = VoidARUtils.GetStreamingAssetbuddleResourcePath() + "CubeTarget.assetbundle";
StartCoroutine(LoadGameObjects(markerURL, targetURL));
}
}
private IEnumerator LoadGameObjects(string markerURL,string targetURL)
{
if (!VoidAR.GetInstance().isMarkerExist(markerURL))
{
WWW file = new WWW(markerURL);
yield return file;
if (file.error != null)
{
Debug.Log("Can not Load " + markerURL);
}
else
{
WWW bundle = new WWW(targetURL);
yield return bundle;
if (bundle.error != null)
{
Debug.Log("Can not Load " + targetURL);
}
else
{
VoidAR.Image2ImageTarget obj = new VoidAR.Image2ImageTarget();
obj.imageUrl = markerURL;
obj.isMarkerLocal = true;
obj.ImageTarget = (GameObject)Instantiate(bundle.assetBundle.mainAsset);
Texture2D tex = new Texture2D(2, 2);
tex.LoadImage(file.bytes);
obj.imagewidth = tex.width;
obj.imageheight = tex.height;
obj.imagedata = VoidARUtils.Color32ArrayToByteArray(tex.GetPixels32());
List<VoidAR.Image2ImageTarget> image2ImageTargetes = new List<VoidAR.Image2ImageTarget>();
image2ImageTargetes.Add(obj);
VoidAR.GetInstance().addTargets(image2ImageTargetes);
bundle.assetBundle.Unload(false);
}
}
}
}
}
代碼編寫完成。
第八步、保存場景
選中[ File] -> [ Save Scenes ] ,進行場景保存。
設置文件名爲“VOIDAR_Test”,點擊[ 保存 ]按鈕。
第九步、進行調試
確保您的PC已經連接了攝像頭,然後點擊[ 運行 ]按鈕。
運行後,點擊窗口的右上角按鈕“添加目標”(代碼中OnGUI繪製),然後攝像頭對着識別圖後,很快會顯示出模型。
第十步、打包Android或iOS
打包流程分爲“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。
如果本地沒有SDK和JDK,可以點擊後方的[ Download ],在彈出的網頁上進行下載即可。
也可以用鏈接下載安裝:
SDK(要科學上網才能打開):https://developer.android.com/studio/index.html#Other
JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html
安裝完成後,設置好SDK和JDK的路徑就可以了。
選中ARCamera,查看右側的“Inspector”欄,設置“Void AR Behaviour (Script)”組件屬性。
-設置Camera = “後置攝像頭”
選中[ File ] -> [ Build Settings… ],取消默認場景前方的勾選。然後點擊[ Add Open Scenes ],添加當前的場景。
添加完成後,如下所示。
點擊[ Player Settings… ]按鈕,查看右側的“Inspector”欄,設置屬性參數,您可以自定義。
-設置Company = “VOIDAR”
-設置Product Name = “VOIDAR_Test”
-設置Bundle Identifier= “com.VOIDAR.Test”
注:Bundle Identifier不能使用默認值,否則無法打包。
完成設置後,點擊[ Build ]按鈕。
設置文件名爲“VOIDAR_Test”,點擊[ 保存 ]按鈕,開始打包。
打包過程需要耐心等待一段時間。
完成後,將生成一個“VOIDAR_Test.apk”文件,安卓打包完成。
- iOS打包
iOS打包需要在Mac OS系統中完成,需要準備Mac設備(如MacBook Pro、MacBook、iMac、Mac mini等)。
在Unity中,將開發平臺切換至iOS,然後Build生成Xcode工程。
注:推薦使用Mac設備的Unity軟件來生成Xcode工程。如果之前是在Windows環境下編輯的,可以將Unity目錄下的整個工程文件,拷貝至Mac電腦中進行編輯處理。
啓動Unity,打開之前保存的、或者拷貝過來的VOIDAR_Test工程文件(工程已經打開的,跳過這步)
點擊[ Open ]按鈕打開工程。
將Unity切換至iOS平臺,點擊[ File ] -> [ Build Settings… ]。
選中iOS標籤,如果左下的[ Switch Platform ]按鈕爲灰色,需要下載Unity iOS Support,請點擊右側的[ Open Download Page ]按鈕,下載並安裝。
點擊[ Switch Platform ]按鈕,完成iOS平臺的切換。
切換完成後,先關閉Build Settings界面。
選中ARCamera,查看右側的“Inspector”欄,設置“Void AR Behaviour (Script)”組件屬性。
- 設置Camera = “後置攝像頭”
選中[ File ] -> [ Build Settings… ],取消默認場景前方的勾選。然後點擊[ Add Open Scenes ],添加當前的VOIDAR_Test場景。
添加完成後,如下所示。
完成設置後,點擊[ Build ]按鈕。
準備生成Xcode工程,命名爲“Output”,點擊[ Save ]。
打開生成的Xcode文件。
填寫配置,將自己的證書、iOS適應版本都正確選上:
左側點擊[ Unity-iPhone ],配置參數,您可以自定義。
-設置Display Name = “VOIDAR_Test”
-設置Bundle Identifier = “com.VOIDAR.Demo”
-設置Version = “1.0”
-設置Build = “1.0”
-設置Team = “您自己的證書”
-設置Deployment Target = “8.1”
General頁面往下拉,在Linked Frameworks and Libraries中,點擊“+”。
彈出界面,選中“Accelerate.framework”,點擊[ Add ]。
添加完成,Linked Frameworks and Libraries下方出現“Accelerate.framework”。
添加攝像機權限。
選中“Info”標籤,點擊Supported interface orientations後面的“+”。在彈出列表中選中“Privacy - Camera Usage Description”。
選中”Build Settings”標籤,設置Enable Bitcode = “No”。
數據線連接iphone或者ipad,點擊[ 運行 ],即可打包。
完成後,iphone或者ipad上,將生成一個“VOIDAR_Test”的APP,iOS打包完成。
至此,動態加載製作完成。