ARKit和Vuforia – 标记识别

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

我正在考虑Vuforia和ARKit的组合。

是否有可能只使用Vuforia来识别标记并获得它的位置,然后将这些数据“传递”给ARKit?

  • 我需要识别标记以select相应的3D内容。
  • 我需要获得只有标记的位置,才能放置3D内容,之后我想使用ARKit进行跟踪。

可能吗?
是否有另一种可用于ARKit的标记识别解决scheme?

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

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(); } } } 

然后你可以用这个脚本replaceDefaultTrackableEventHandler。

在这里输入图像说明

问题2:我需要获取标记的位置,以便在其中放置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 }