ARKit和Vuforia - 标记识别

时间:2017-10-16 00:33:31

标签: c# ios unity3d vuforia arkit

我正在开发iOS应用程序,我需要识别一个标记(很可能是QR代码)并使用ARKit在其上放置一些3D内容。

我在考虑Vuforia和ARKit的组合。

是否可以仅使用Vuforia识别标记并获取其位置,然后将此数据“传递”到ARKit?

  • 我需要识别标记才能选择相应的3D内容。
  • 我需要获取标记的位置,以便在那里放置3D内容,之后我想使用ARKit进行跟踪。

有可能吗?
是否有其他可用于ARKit的标记识别解决方案?

1 个答案:

答案 0 :(得分:3)

Q1: 您可以处理标记的识别(在Vuforia中称为图像目标) 创建一个脚本:

public class CustomTrackableEventHandler : MonoBehaviour,
                                           ITrackableEventHandler
{
    ...

    public void OnTrackableStateChanged(
                                    TrackableBehaviour.Status previousStatus,
                                    TrackableBehaviour.Status newStatus)
    {
        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            OnTrackingFound(); 
            // **** Your own logic here ****
        }
        else
        {
            OnTrackingLost();
        }
    }
}

然后你可以用这个脚本替换DefaultTrackableEventHandler。

enter image description here

Q2:为了在那里放置3D内容,我需要仅获取标记的位置,之后我想使用ARKit进行跟踪。

您可以添加一个空的游戏对象作为标记的子项(ImageTarget),层次结构将为:

YourMarker(ImageTarget)
     |__EmptyPlaceHolder

识别标记后,您可以编程方式获取其位置:

var placeHolder = GameObject.Find("EmptyPlaceHolder");
if(placeHolder != null){
    Debug.Log(placeHolder.transform.position); // all the location, localPosition, quaternion etc will be available to you

}