ARKit 和 Vuforia - 标记识别

ARKit and Vuforia - marker recognition

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

我在考虑 Vuforia 和 ARKit 的组合。

是否可以只使用Vuforia来识别标记并获取其位置,然后"pass"将此数据传给ARKit?

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

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。

Q2:我需要获取marker only的位置,以便放置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

}