關于AR和Unity的基礎知識,請自行前往各自的文檔中心進行科普。
基于Hi AR1.2.0 ( hiar_sdk_unity_20160809_v1.2.0_3c0e908.zip ( 47.4 MB ) )
Unity3D 5.3.5f1 x64
Windows 7 x64
羅技攝像頭(硬體),攝像頭支架
1. 在SDK的管理背景建立一個新應用,擷取應用的Appkey和Secret,在Unity中會用到。
2. 在SDK的管理背景中建立圖集,并添加圖檔,完成之後釋出圖集
3. 把圖集和應用進行關聯
4. 在SDK的管理背景中下載下傳本地識别封包件,一般是以圖集為命名的unitypackage檔案。
我建立的圖集名稱:xxdata
圖集中有以下兩張圖檔:
battleboard.png
card.png
下載下傳的本地識别封包件(xxdata.unitypackage),在導入到Unity中的檔案如下:
總結一下就是:
1. 在Editor\ImageTargetTextures\下有以圖集命名的檔案夾,檔案夾中有圖集中的圖檔檔案
2. 在StreamingAssets\HiAR\目錄下有以圖集命名的xml檔案和圖集命名的檔案夾,檔案夾下有圖檔Id命名的db檔案
xxdata.xml檔案内容如下:
32位key值檔案名的db檔案
某種格式的檔案,從裡面可以看到HiScene AR Key,猜測db中存儲了圖檔的識别點資料
圖集中每個圖檔有對應的一個db檔案,可知此db檔案必然和圖檔有關聯關系。
場景層次(Hierarchy)結構:

HiAR Camera (SDK的核心,綁定了兩個腳本:HiAREngineBehaviour,TargetManagerBehaviour)
camera (3D相機,渲染3D GameObject,綁定的腳本:HiARCameraBehaviour)
Imager Target (識别點,可以有多個,綁定的腳本:ImageTargetBehaviour,實作這幾個接口ITrackableEventHandler, ILoadBundleEventHandler, IRelativeMoveTarget)
識别成功:識别圖移動時或者有遮擋時,Transform的屬性會發生改變,并且ImageTarget下的Child會顯示
識别失敗:Transform屬性無變化,并且ImageTarget下的Child會隐藏
camera source (一個MeshRenderer,硬體攝像頭攝像到的圖像實時渲染在此(類似于render texture?))
camera background (2D相機,渲染camera source的圖形)
重點解釋:
camera (3D相機 Clear Flags為Depth,拍攝場景中的3D GameObject)
camera background (2D相機,Clear Flags為Solid Clear,渲染物體攝像頭拍攝的畫面)
攝像頭拍攝的圖像顯示在camera source(mesh renderer)上
攝像頭拍攝的真實畫面和引擎生成的三維物體進行疊加。
當識别圖識别成功之後,執行一些操作,可以了解為Callback。
HiAR的例子是:識别成功之後,播放視訊。
當然你可以在識别成功之後,生成一些模型和場景出來,這樣就和開發其它遊戲一樣,可以對Scene中的GameObject進行控制,比如播放動畫,打鬥,特效之類的。
把識别圖上的圖像實時渲染在模型上(Material),類型塗鴉。
添加一個待塗包的模型,添加元件:HiARPaint,Shader:HiARPaint
硬體攝像頭拍攝識别圖(實時拍攝)
根據識别到的圖,提取圖像生成Material,動态地渲染。
期間會生成幾個識别點
過程中如果有拍攝到其它物體,新生成的材質會實時更新
多圖識别,就是在簡單識别的基礎上添加多個ImageTarget
步驟:
在HiAR Camera(HiAREngine元件) 的屬性面闆勾選 MuiltTarget
在場景中添加多個ImageTarget,并為每一個ImageTarget選擇識别圖
動态加載識别目标進行識别跟蹤的功能,繼承自TartgetDynamic
勾選 ImageTarget (ImageTargetBehaviour元件)的CenterPoint之後,帶有實體引擎效果的物體運動就有了中心點。
本文轉自趙青青部落格園部落格,原文連結:http://www.cnblogs.com/zhaoqingqing/p/5893923.html,如需轉載請自行聯系原作者
<a></a>