EasyAR4.0使用說明(五)----3D物體跟蹤

3D物體跟蹤總體上是和平面圖像跟蹤差不多的,設置,包括程序控制,識別多個對象。區別只是目標對象的不同。

總體說明

3D物體跟蹤對3D物體的紋理,也就是表面的圖案的豐富程度是有要求的,紋理如果是簡單的色塊組成的效果並不很好。官方對被跟蹤的3D物體的詳細要求可以查看官方網站的文檔

地址:https://help.easyar.cn/EasyAR%20Sense/v4/Guides/EasyAR-3D-Object-Tracking.html

3D物體跟蹤主要是ObjectTracker和ObjectTarget這兩個遊戲對象,每個ObjectTarget對應一個被跟蹤的3D物體,場景中也可以同時出現多個ObjectTracker。

總體說明

ObjectTracker遊戲對象相關

  • enable屬性可以用於獲取當前跟蹤器狀態,也可以用於啓用/禁用當前跟蹤器。
  • Simultaneous Target Number設置指定當前的跟蹤器同時跟蹤目標的最大數量。

ObejctTarget遊戲對象相關

  • Tracker設置, 每個ObjectTarget遊戲對象必須指定一個ObjectTracker遊戲對象才能被跟蹤,可以通過修改該設置實現對3D物體的加載和卸載。
  • Active Control選項用於設置ObjectTarget遊戲對象是否激活。
  • Source Type選項用於設置跟蹤類型,通常情況下使用Object File即可。
  • ObjectTargetController類提供了4個事件,分別是3D物體被識別TargetFound,被識別的3D物體從視野消失TargetLost,3D物體加載完成TargetLoad和3D物體卸載完成TargetUnload。

跟蹤3D物體

導入官方示例中的內容。

  • 將hexagon.obj、hexagon.mtl、hexagon.jpg文件拖到StreamingAssets目錄下,作爲跟蹤用的內容。

  • 將hexagon.obj文件拖到Models目錄下,作爲識別後顯示用的模型。

  • 將hexagon.jpg文件拖到Textures目錄下,作爲模型紋理。

  • 將hexagon_hexagonMat.mat文件拖到Materials目錄下,作爲材質文件,並設置材質的紋理爲hexagon.jpg。

  • 設置Main Camera遊戲對象清除標誌Clear Flags爲Solid Color。

  • 將EasyAR/Prefabs/Composites目錄下的EasyAR_ObjectTracker-1_CloudRecognizer-1預製件拖到場景中。

跟蹤3D物體

  • 將EasyAR/Prefabs/Primitives目錄下的ObjectTarget預製件拖到場景中。
  • 設置Obj Path屬性爲hexagon.obj即要跟蹤的.obj文件的路徑。
  • 修改Extra File Paths的Size值爲“2”,並添加另外2個文件的路徑,即hexagon.mtl和hexagon.jpg。
  • 設置Name屬性和Scale屬性。

Scale屬性爲模型的縮放比例。其值爲模型在空間中的物理大小與在模型座標系中的大小的比值,默認值爲1。

跟蹤3D物體

  • 將hexagon模型拖到ObjectTarget遊戲對象下作爲跟蹤後顯示的模型。
  • 修改Rotation的值爲“0,180,0”,選擇模型以保持方向一致。

跟蹤3D物體

選中hexagon:hexagon遊戲對象,設置其材質是導入的材質。

跟蹤3D物體

運行效果如下:當識別到3D物體以後就會顯示模型,模型正好覆蓋原有物體。直觀上就是黑白的變成彩色的了。

跟蹤3D物體

當然也可以繼續添加其他模型,在ObjectTarget遊戲對象下添加一個方塊後的效果。

跟蹤3D物體

物體跟蹤也可以同時跟蹤多個物體,跟蹤多個物體的邏輯和平面圖像跟蹤多個圖像是一樣的。包括程序的使用,只是參數類型有所改變,使用方法是一樣的。

自制3D物體跟蹤

當想要製作一個可以跟蹤的3D物體,通常用2種辦法,一種是根據實際物體,重新建模,然後實現3D物體跟蹤。EasyAR官方並沒有給出更好的解決辦法,所以,如果是有一個物體想要實現3D物體跟蹤的話,只能老老實實建模。

另外是根據3D模型做個物體出來,最簡單的當然是聯想到3D打印。不過,對於學習使用EasyAR,更推薦使用紙模。

接下來介紹如何將一個3D模型變成可識別的物體。

  • 在Unity商城選取一個3D模型。
  • 修改合適後保存成prefab。
  • 將prefab導出成fbx。
  • 將fbx轉換成obj。
  • 將obj轉換成紙模。

首先,從Unity商城(當然也可以是其他途經)選取一個不太複雜的模型。

跟蹤3D物體

  • 修改模型內容,去掉一些零碎的東西,減小製作難度。
  • 修改紋理貼圖使其更容易被跟蹤。
  • 將修改好的內容保存成一個prefab。

跟蹤3D物體

  • 在Unity3D的商城中找到FBX Exporter插件並導入。
  • 選中之前生成的Prefab文件,選擇菜單GameObject-Export To FBX…
  • 在彈出窗口中,選擇導出的路徑Export Path,在Include選項中選擇只導出模型,不導出動畫,點擊Export按鈕即可。

跟蹤3D物體

跟蹤3D物體

  • 下載紙藝大師軟件。下載並安裝。地址:https://tamasoft.co.jp/pepakura-cn/download/index.html
  • 點擊打開圖標,找到obj文件,選中並打開。
  • 調整輸出模型的大小和拆分方式。
  • 將結果輸出爲pdf。
  • 將pdf打印出來,剪開粘好。

跟蹤3D物體

  • 將模型文件FireTruckII.obj、firetruckii.mtl和FireTruckII.png導入到StreamingAssets目錄,作爲識別內容。
  • 將模型文件FireTruckII.obj、firetruckii.mtl和FireTruckII.png導入到Models目錄,作爲識別後顯示的內容。
  • 選中ObjectTarget遊戲對象,設置Obj Path屬性爲FireTruckII.obj即要跟蹤的“.obj”文件的路徑。
  • 修改Extra File Paths的Size值爲“2”,並添加另外2個文件的路徑,即FireTruckII.mtl和FireTruckII.jpg。
  • 設置Name屬性和Scale屬性,將跟蹤物體改爲FireTruckII。

跟蹤3D物體

  • 將FireTruckII模型拖到ObjectTarget遊戲對象下成爲其子游戲對象。
  • 修改FireTruckII遊戲對象的角度爲“90,0,-180”。

跟蹤3D物體

運行效果如下:

跟蹤3D物體

視頻版地址:https://www.bilibili.com/video/BV1yZ4y1W7JL/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章