摘要:
首先你上傳圖片到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攝像頭的攝像頭組件,並以正向方向從它進行光線投射。檢查你的命中並做你的動作。
這是一個有用的信息,但你解釋理論和所有這些工作。我期望學到的是如何在實踐中使用Vuforia工具。我知道如何使用Unity設置AR項目,以及如何在設備上運行它,但是例如在Unity將其導出到Android之後很難理解生成的代碼。即使我使用Vuforia SDK for Android Studio並且可以運行它的樣本,仍然有太多代碼需要詳細解釋。 –