首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有可能像Vuforia那样在ARKit中跟踪物体?

有没有可能像Vuforia那样在ARKit中跟踪物体?
EN

Stack Overflow用户
提问于 2017-06-29 14:03:55
回答 3查看 13.9K关注 0票数 16

如果苹果的ARKit像Vuforia那样支持3D对象跟踪(甚至图像跟踪),我找不到任何信息。我不想把3D模型放在世界的任何地方。相反,我希望检测一个特定的3D对象,并将AR对象放在该对象的前面和顶部。

简单的例子:我想在现实世界中跟踪一辆特定的玩具车,并在AR场景中在它的顶部添加一个扰流板。

有没有人能给我提供一些可能或不可能的信息?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-30 11:40:45

iOS 12的更新:"ARKit 2“中的(在iOS 12或更高版本上也称为ARKit )...

  • 图像检测已扩展到图像跟踪,因此最多四个图像不仅会被检测到一次,而且每帧都会进行更新,即使它们是相对于世界空间移动的。因此,您可以将可识别的2D图像附加到您的玩具上,并让虚拟AR内容跟随玩具周围的on-screen.
  • There's以及对象检测-在您的开发过程中,您可以使用一个ARKit应用程序来扫描真实世界的3D对象并生成“参考对象”文件。然后,您可以在您的应用程序中发布该文件,并使用它来识别用户环境中的对象。这可能适合你的“玩具车”箱子..。但请注意,3D对象识别功能是检测,而不是跟踪: ARKit不会在玩具车移动时跟踪它。

详情请参见the WWDC18 talk on ARKit 2

iOS 11.3的更新:在"ARKit 1.5“(在iOS 11.3或更高版本上也称为ARKit )中,ARKit中有一个新的图像检测功能。如果您有一个已知的图像(如海报或扑克牌等),您可以将其包含在您的Xcode项目中和/或从其他地方将其作为ARReferenceImage加载,并将其放入会话配置的detectionImages数组中。然后,当ARKit在用户环境中找到这些图像时,它会向您提供ARImageAnchor对象,告诉您它们的位置。

请注意,这不太像你在其他工具包中看到的“基于标记的AR”- ARKit只找到一次参考图像,它不会告诉你它是如何随着时间的推移而移动的。因此,它有利于“触发”AR内容体验(就像那些促销活动中,你把手机对准商店里的“星球大战”海报,一个角色就会走出来),但对于AR棋盘游戏来说,就不是这样了,因为在AR棋盘游戏中,虚拟角色仍然依附在游戏棋子上。

否则..。

可以访问每个捕获的ARFrame中的相机图像,因此,如果您有其他软件可以帮助完成这类任务,您可以将它们与ARKit结合使用。例如,Vision framework ( iOS 11中的新功能)为这类任务提供了几个构建块-您可以检测条形码并找到它们的四角,在手动识别图像中的感兴趣区域后,跟踪其在帧之间的移动。

票数 30
EN

Stack Overflow用户

发布于 2018-03-05 06:36:54

注意:这绝对是一个黑客,但它增加了持久的图像跟踪到ARKit统一。同样的想法也可以应用于Native lib。

下载ARKit 1.5测试版https://bitbucket.org/Unity-Technologies/unity-arkit-plugin/branch/spring2018_update

在ARSessionNative.mm中,添加以下代码块:

代码语言:javascript
复制
extern "C" void SessionRemoveAllAnchors(void* nativeSession) {
    UnityARSession* session = (__bridge UnityARSession*)nativeSession;
    for (ARAnchor* a in session->_session.currentFrame.anchors)
    {
        [session->_session removeAnchor:a];
        return;
    }
}

在UnityARSessionNativeInterface.cs中,在SessionRemoveUserAnchor下添加以下代码:

代码语言:javascript
复制
private static extern void SessionRemoveAllAnchors (IntPtr nativeSession);

在RemoveUserAnchor下是这样的:

代码语言:javascript
复制
public void RemoveAllAnchors() {
        #if !UNITY_EDITOR

        SessionRemoveAllAnchors(m_NativeARSession);
        #endif
    }

然后从更新或协程调用以下代码:

代码语言:javascript
复制
UnityARSessionNativeInterface.GetARSessionNativeInterface().RemoveAllAnchors ();

当锚被移除时,图像可以再次被识别。它不是超级平滑,但它绝对有效。

希望这篇文章对你有用!如果你需要进一步的帮助,请告诉我。

票数 3
EN

Stack Overflow用户

发布于 2018-09-01 19:04:16

ARKit 2.0

iOS 12不仅支持Camera Tracking功能,还支持:

  • 3D Object Tracking
  • Face Tracking
  • Image Tracking
  • 图像检测
  • 3D Object Scanning

ARKit 3.0

iOS 13支持更复杂的功能:

实时人员跟踪(RGBAZ

  • compositing)
  • Body Tracking,也称为Motion Capture)
  • Multiple人脸跟踪(最多3个faces)
  • Simultaneous前后摄像头Tracking
  • Collaborative会话
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44817416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档