ARKit 和 Vuforia - 标记识别

Posted

技术标签:

【中文标题】ARKit 和 Vuforia - 标记识别【英文标题】:ARKit and Vuforia - marker recognition 【发布时间】:2017-10-16 00:33:31 【问题描述】:

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

我在考虑 Vuforia 和 ARKit 的组合。

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

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

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

【问题讨论】:

【参考方案1】:

第一季度: 您可以处理标记的识别(在 Vuforia 中称为 Image Target) 创建脚本:

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:我只需要获取标记的位置,以便在那里放置 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


【讨论】:

上面的UI从何而来?我在 Target Manager 或 Xcode 中没有看到类似的东西。 将一个图像目标预制件拖到场景中,你就会看到它。 非常感谢!!!这似乎是一个完美的解决方案,但由于某种原因,它对我不起作用。这是我创建的一个简短示例代码,所以如果我检测到一个标记,我想显示一个带有按钮的简单 UI 画布。 csharppad.com/gist/82e2573f674f1d42b413d3fb8b0b9b60 我禁用了 DefaultTrackableEventHandler,并添加了 Debug.Log() 进行测试,但我在控制台中没有看到任何消息(所以 OnTrackingFound() 从未到达),但我仍然看到对象,以图像预制为父对象当标记被识别时!奇怪我在哪里弄错了?我使用 Unity 2017.2.0f3 你能在其他地方看到Debug.log吗,例如开始() ?您是否隐藏了日志/错误面板?从代码中,如果您看到切换的 UI,则表明 OnTrackingfound() 已被触发。 @Rumata 我也在寻找类似的解决方案。你能破解这个吗?

以上是关于ARKit 和 Vuforia - 标记识别的主要内容,如果未能解决你的问题,请参考以下文章

带有 ARkit 和 CoreML 的视觉框架

用于对象识别的 ARKit 和 Vision 框架

ARKit vs. ARCore vs. Vuforia vs. D'Fusion Mobile vs. Layar SDK [关闭]

Unity-Hololens-Vuforia开发(图片识别和模型识别)

Hololens Vuforia 物体识别

Unity ARKit XR 插件 – 人脸追踪