• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift - 具有多个用户的ARKit

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:00:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

与多个用户/设备一起使用Apple的新ARKit的最佳方法是什么?

似乎每个设备都可以分别了解自己的场景。到目前为止,我最好的猜测是使用原始特征点位置,并尝试在设备之间进行匹配以将不同的视图点粘合在一起,因为ARKit没有提供任何绝对参考引用。

===编辑1,我尝试过的事情===

1)特征点

我一直在玩耍,并且暴露了原始特征点,现在我确信在它们的当前状态下它们是死胡同:

  • 它们不是原始特征点,它们仅公开位置,但通常不会在跟踪的特征点中找到任何属性
  • 它们的实例化不会在帧之间继续,位置也不完全相同
  • 通常会发生这样的情况,即当摄像机输入几乎没有变化时,报告的特征点变化很大,要么出现很多,要么消失很多。

  • 因此,总的来说,我认为尝试以某种有意义的方式使用它们,而不能够在一台设备(更不用说多个设备)内进行任何类型的良好点匹配是不合理的。
    另一种方法是实现我自己的特征点检测和匹配,但是与其取代ARKit,还不如取代ARKit。

    2)二维码

    正如@Rickster所建议的那样,我还尝试了识别易于识别的对象(如QR码)并从该固定点获取相对参照更改(请参阅this question)。这有点困难,这暗示我使用一些openCV来估计相机姿态。但更重要的是非常有限



    Best Answer-推荐答案


    现在,在WWDC 2018上发布ARKit 2.0之后,可以为2至6个用户制作游戏。

    为此,您需要使用ARWorldMap类。通过保存world maps并使用它们开始新的 session ,您的iOS应用程序现在可以添加新的增强现实功能:多用户和持久的AR体验。

    AR多用户体验。现在,您可以通过将存档的ARWorldMap对象发送到附近的iPhone或iPad来创建参考的共享框架。使用多个设备同时跟踪相同的world map时,您可以建立一种体验,使所有用户(最多6个)可以共享并看到相同的虚拟3D内容(在Xcode 10和iOS 12中使用全新的Pixar的3D格式的USDZ文件格式)。

    session.getCurrentWorldMap { worldMap, error in 
        guard let worldMap = worldMap else {
            showAlert(error)
            return
        }
    }
    
    let configuration = ARWorldTrackingConfiguration()
    configuration.initialWorldMap = worldMap
    session.run(configuration)
    

    AR持久性体验。如果保存world map,然后iOS应用程序变为非 Activity 状态,则可以在下次启动应用程序时和在同一物理环境中轻松还原它。您可以使用恢复的ARAnchors中的world map将相同的虚拟3D内容(以USDZ或DAE格式)放置在上一个保存的 session 中的相同位置。

    关于swift - 具有多个用户的ARKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753535/

    回复

    使用道具 举报

    懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关注0

    粉丝2

    帖子830918

    发布主题
    阅读排行 更多
    广告位

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap