github傳送門:https://github.com/dongzizhu/unity3DLearning/tree/master/hw10/ARtest
B站傳送門:https://space.bilibili.com/472759319
Vuforia安裝
在新建一個unity項目後,以此選擇File -> Build Settings -> Player Settings -> Player->XR Settings,勾選Vuforia Argumented Reality Support。
然後進入官網下載安裝文件,安裝給對應版本的項目即可。
創建數據庫
上官網:https://developer.vuforia.com註冊一個賬號,然後登陸後即可看到下圖
然後點擊右側Get Developmen Key,見到下圖。
在這裏創建一個新的License,創建後可以看到下圖。
然後進入Target Manager,點擊Add Database創建一個新的數據庫。
創建好之後就可以在Target Manager中找到了,點擊進入後選擇Add Target。
這裏上傳一張找好的用於定位的圖片即可。圖片應該儘量對比度高一些,紋理相對複雜,可以直接在黑白紋身圖照一張你喜歡的:)。上傳成功後就可以點擊右邊的Download Database下載了。而且這裏可以看到你上傳的圖片的評分,得分越高越便於識別。
虛擬按鍵
接下來在項目中,我們就可以直接新建Vuforia Engine對象Image和ARCamera了。其中在ARCamera中我們可以在Vuforia Behavior組件中打開configuration。
然後在App License Key中填上在官網中License Manager點開對應license找到的Key即可。
然後我們在新建的Image Target下新建一個動畫,這裏我選擇的是之前在Asset Store免費下載的StoneMonster。接着在Image Target Behaviour組件的Advanced欄下選擇Add Virtual Button,並改名字爲up。最後在up這個Button下新建一個plane作爲按鈕的實體,其名爲upPlane。
下面就可以來完成代碼邏輯了。這裏我們簡單地做一個demo:讓每次按下button,monster上升;鬆開button,monster下降。具體代碼如下。
using UnityEngine;
using Vuforia;
public class buttonBehaviour : MonoBehaviour, IVirtualButtonEventHandler
{
public GameObject vbs;
public Animator animator;
void Start()
{
VirtualButtonBehaviour vbb = vbs.GetComponent<VirtualButtonBehaviour>();
if (vbb)
{
vbb.RegisterEventHandler(this);
}
}
public void OnButtonPressed(VirtualButtonBehaviour vb)
{
Debug.Log("Pressed");
animator.transform.Translate(Vector3.up /100);
}
public void OnButtonReleased(VirtualButtonBehaviour vb)
{
Debug.Log("Released");
animator.transform.Translate(Vector3.down / 100);
}
}
我們將這個腳本掛載在ImageTarget上,然後將Vbs和Animator都選成對應的對象即可。
最後,我們只要讓圖片完整地出現在鏡頭前一次,就可以完成識別了。最終的效果截圖如下所示,演示視頻見文章開頭的傳送門。