代码之家  ›  专栏  ›  技术社区  ›  Rumata

ARKit和Vuforia-标记识别

  •  7
  • Rumata  · 技术社区  · 7 年前

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

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

    • 我需要识别标记以选择相应的3D内容。

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

    1 回复  |  直到 7 年前
        1
  •  4
  •   David rakar    7 年前

    您可以处理标记的识别(在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();
            }
        }
    }
    

    enter image description here

    问题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
    
    }