天天看點

《AR與VR開發實戰》——第3章 AR内容互動 3.1 動态加載AR模型

在第2章中我們實作了通過vufoira預設方式識别并顯示三維模型。預設的加載模型是通過将3d物體直接放置在場景中并作為識别目标的子物體來實作的,這種實作方式的問題是,當場景中有很多識别目标後,需要一次性加載的模型内容會占用很大的記憶體。是以,在實際項目案例中需要動态加載識别目标對應的模型,在識别丢失之後删除模型,這樣可以保證同一時刻記憶體的占用是手機可以承受的。

本節将通過預制件執行個體化的方式實作ar模型的動态加載和顯示。

1.建立預制件

将imagetarget下調整好的模型拖到最上層,和imagetarget在層級視圖中保持平級關系。

《AR與VR開發實戰》——第3章 AR内容互動 3.1 動态加載AR模型

在assets目錄中建立resources檔案夾,并将層級視圖hierarchy中的模型sphere拖至resources檔案夾中,然後删除層級視圖hierarchy中的sphere模型。

《AR與VR開發實戰》——第3章 AR内容互動 3.1 動态加載AR模型

2.為需要加載的預制件添加腳本

在工程視圖project中建立一個新的c#腳本,命名為trackobject.cs,該腳本是為了更友善地找到識别後顯示的物體,将其拖到需要加載的預制件上。

在工程視圖project中找到defaulttrackableeventhandler.cs這個腳本,按住ctrl+d可以

複制一份相同的腳本,選中新複制出來的腳本并按f2快捷鍵将腳本改名為mytrackable eventhandler.cs。然後輕按兩下打開,将類名修改為mytrackableeventhandler,找到監聽識别成功和識别丢失的兩個方法ontrackingfound和ontrackinglost,預設代碼如下:

//識别成功時調用的方法

}

//識别丢失時調用的方法

private void ontrackinglost(){

在預設的這兩個方法實作中,ontrackingfound函數在識别圖像成功之後被調用,ontrackinglost函數在識别丢失之後被調用。該腳本利用了查找目前識别目标所有子物體的渲染器renderer元件,通過其打開或關閉來實作3d物體的顯示和隐藏。現在我們通過動态加載的方式來顯示3d模型,需要删除ontrackinglost和ontrackingfound兩個函數中的内容,并将代碼修改為動态加載的方式實作:

private void ontrackingfound()

{

private void ontrackinglost()

3.效果實作

選擇imagetarget,在inspector面闆上選擇remove component,并将defaulttrackable eventhandler腳本移除,同時把mytrackableeventhandler腳本添加到imagetarget上。

《AR與VR開發實戰》——第3章 AR内容互動 3.1 動态加載AR模型

最後,點選運作以測試最終效果,如下圖所示。

《AR與VR開發實戰》——第3章 AR内容互動 3.1 動态加載AR模型

以上為動态加載ar中3d物體的步驟和方法。

繼續閱讀