Unity 高通AR
今天测试一下高通AR,使用Unity5.6.4。
首先下载高通SDK,下载地址:
https://developer.vuforia.com/downloads/sdk
下载完成后,把我们下载的unitypackage包导入unity中,
在unity中我会看到高通SDK文件夹。
接下来我们找到一张识别图,在高通AR官网新建一个工程,并上传识别图
然后点击
下载识别图数据,同样把得到的unitypackage我们导入unity,数据在这两个文件下
接下来设置VuforiaConfiguration文件,主要是这两个数据
AppLicenseKey需要在官网这里添加后获取
Datasets勾选添加当前工程即可。
准备工作到此完成。
我们在Unity中新建一个场景,删除原来的相机,找到高通SDK中的ARCamera和ImageTarget预设添加到场景中
选择ImageTargetBehaviour中项目数据和识别图
再看一下官方示例脚本DefaultTrackableEventHandler:
public class DefaultTrackableEventHandler : MonoBehaviour,
ITrackableEventHandler
{
#region PRIVATE_MEMBER_VARIABLES
private TrackableBehaviour mTrackableBehaviour;
#endregion // PRIVATE_MEMBER_VARIABLES
#region UNTIY_MONOBEHAVIOUR_METHODS
void Start()
{
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if (mTrackableBehaviour)
{
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
}
#endregion // UNTIY_MONOBEHAVIOUR_METHODS
#region PUBLIC_METHODS
/// <summary>
/// Implementation of the ITrackableEventHandler function called when the
/// tracking state changes.
/// </summary>
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();
}
}
#endregion // PUBLIC_METHODS
#region PRIVATE_METHODS
private void OnTrackingFound()
{
Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);
// Enable rendering:
foreach (Renderer component in rendererComponents)
{
component.enabled = true;
}
// Enable colliders:
foreach (Collider component in colliderComponents)
{
component.enabled = true;
}
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
}
private void OnTrackingLost()
{
Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);
// Disable rendering:
foreach (Renderer component in rendererComponents)
{
component.enabled = false;
}
// Disable colliders:
foreach (Collider component in colliderComponents)
{
component.enabled = false;
}
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
}
#endregion // PRIVATE_METHODS
}
这个脚本比较简单,检测识别状态,隐藏和显示子物体。
接下来新建一个cube 调整大小和ImageTarget合适,把cube保存为ImageTarget子物体。我们尝试运行一下:
OK识别出来了 今天的记录就到这里。