2016-08-24 65 views
4

如果有人能夠提供任何可以幫助我理解Android的工作原理Vuforia samples的資源,我將不勝感激。我安裝了所有東西,並可以在手機上運行它們,但很難理解項目結構。Vuforia Android SDK解釋樣本?

如果有關於如何使用Android Studio(未Unity)創建簡單的AR應用程序的任何教程這將是巨大的。

我還學會了如何創建AR場景與團結,將其導出到Android和設備上運行,但還是不明白如何與Android Studio中進一步導出的項目工作。

我的目標是擁有一個圖像目標和多個3D對象。我想要有像ListView這樣的簡單用戶界面來選擇放置在目標上的對象。

而且,是有可能建立ListView Android和在團結創造了一個單一場景,它的另一個項的點擊事件切換3D對象?我知道我可以使用Unity C#腳本動態加載3D模型,那麼我可以通過Android觸發該腳本中的某些功能嗎?

我真的很感激任何意見。

回答

3

摘要:

首先你上傳圖片到Vuforia雲所以它返回一個XML和.dat文件。那些存儲在流式資產中的。 dat文件包含有關您標記的二進制格式的所有信息。 xml包含有關名稱和大小的信息,並鏈接到C#組件。

Vuforia允許創造運行標記或標記雲,但我們要離開那些出去了。這個想法依然如此。

當你運行應用程序,攝像頭硬件CH(不是統一的攝像頭,記住區別),提供飼料。該提要在Unity場景中的紋理上呈現,Unity照相機UC正面臨該紋理。那些在空間中是固定的,只有紋理的內容用CH提供每幀的內容來更新。 這是你的應用程序的現實。

與此同時,Vuforia掃描CH飼料和執行模式識別https://en.wikipedia.org/wiki/Pattern_recognition試圖找到與您提供的dat文件匹配。 找到一個模式後,它會執行第二次運行以定義該模式相對於CH的距離和旋轉。這是可能的,因爲xml文件包含真實標記的尺寸。如果xml表示50x50並且您的標記是25x25,那麼它會比預期的小兩倍,因爲系統理解標記比實際距離更遠。

當標記被識別,Vuforia上DefaultTrackableEventHandler狀態偵聽器調用(檢查對模型的父級的腳本),它實現了該方法:

public void OnTrackableStateChanged(
           TrackableBehaviour.Status previousStatus, 
           TrackableBehaviour.Status newStatus) 
{ 
    if (newStatus == TrackableBehaviour.Status.DETECTED || 
     newStatus == TrackableBehaviour.Status.TRACKED || 
     newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED) 
    { 
     OnTrackingFound(); 
    } 
    else 
    { 
     OnTrackingLost(); 
    } 
} 

基本上,如果Vuforia檢測到改變,它會調用該方法。然後你可以傳播事件進一步使OnTrackingFound /丟失公共事件到任何事物都可以註冊。或者創建一個實現ITrackableEventHandler的新腳本。這只是關於如果模型找到或丟失了聽。在這個例子中,當找到它時,它會顯示模型,反之亦然。這是最可能的和基本的情況,但任何事情都可能被觸發。

的計算的結果表示變換(位置,旋轉)。該變換被傳遞給場景中的第二個Unity相機。座標用(0,0,0)定義爲標記的位置。它很可能針對您放置在那裏的3D模型。請注意,您可以將模型放置在場景中的任何位置,它只會被抵消。 Vuforia相機無法控制,如果您嘗試將值傳遞給變換,它們將被Vuforia覆蓋。你只是不打算玩這些價值觀。另一方面,您可以將其設置爲關閉,影響一些渲染等。

第一個UC的深度較低,所以它先呈現真實場景,第二個呈現在頂部,它用3D模型增強了現實感。使用一組圖層蒙版,第二臺攝像機忽略場景的其餘部分,因此只考慮模型。

你並不是真的想玩弄後臺提要,但你一定想與模型交互,這樣做,就像任何普通的場景一樣。抓取Vuforia攝像頭的攝像頭組件,並以正向方向從它進行光線投射。檢查你的命中並做你的動作。

+0

這是一個有用的信息,但你解釋理論和所有這些工作。我期望學到的是如何在實踐中使用Vuforia工具。我知道如何使用Unity設置AR項目,以及如何在設備上運行它,但是例如在Unity將其導出到Android之後很難理解生成的代碼。即使我使用Vuforia SDK for Android Studio並且可以運行它的樣本,仍然有太多代碼需要詳細解釋。 –