首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多用户ARKit

多用户ARKit
EN

Stack Overflow用户
提问于 2017-06-13 18:50:11
回答 4查看 6.8K关注 0票数 26

什么是最好的方式,如果有的话,使用苹果的新ARKit多用户/设备?

似乎每个设备都有各自的场景理解。到目前为止,我的最佳猜测是使用原始功能点位置,并尝试在设备之间匹配它们,将不同的视图组合在一起,因为ARKit没有提供任何绝对的参考引用。

===Edit1,我有tried===的东西

1)特征点

我玩过暴露的原始特征点,现在我确信,在它们当前的状态下,它们是死胡同:

  • 它们不是原始的特征点,它们只公开位置,但是没有在跟踪的特征点中发现的任何属性。
  • 它们的实例化不会从一个帧传递到另一个帧,位置也不完全相同。
  • 当摄像机的输入几乎没有变化时,经常会发生报告的特征点发生很大的变化,要么出现很多,要么消失。

所以总的来说,我认为尝试以某种有意义的方式使用它们是不合理的,不能在一个设备内进行任何好的点匹配,更不用说几个了。Alternative将实现我自己的特征点检测和匹配,但这将更多地取代ARKit而不是利用它。

2) QR码

正如@Rickster建议的那样,我也尝试过识别像QR代码这样容易识别的对象,并从不动点(参见这个问题)获得相对的参考更改--这有点困难,并暗示我使用一些openCV来估计相机的姿态。但更重要的是

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-07 16:02:40

现在,在2018年发布ARKit 2.0之后,可以为2.6用户制作游戏了。

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

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

代码语言:javascript
复制
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应用程序变得不活跃,那么您可以在下一次应用程序的启动中以及在相同的物理环境中轻松地恢复它。您可以从恢复的ARAnchors中使用world map将相同的虚拟3D内容(以USDZ或DAE格式)放置在与上一次保存的会话相同的位置。

票数 4
EN

Stack Overflow用户

发布于 2017-08-18 12:59:35

不是防弹的答案更像是解决办法,但也许你会发现这些方法很有用。所有的人都假设球员在同一个地方。

  1. DIY ARKit在AR会话启动后迅速建立起它的世界坐标系。所以,如果你能让所有玩家,一个接一个,把他们的设备放到同一个物理位置,让他们在那里开始练习,你就开始了。想象一下,L方尺的内部边缘固定在任何可用的东西上。或者任何有洞的平面:再拿着手机,用相机从洞里往里看,(再来一次)。
  2. marker保存播放器手动对位电话,而是用图像分析检测真实世界的标记,就像@Rickster描述的那样。
  3. 涉及到训练一个核心ML模型来识别iPhones和iPads以及它们的相机位置。就像人类的脸和眼睛一样。将数据聚合到服务器上,然后关闭ML以节省电源。注意:确保你的模型是防封面的。:)
票数 1
EN

Stack Overflow用户

发布于 2017-09-25 16:26:10

我正在更新我的游戏控制器框架(https://github.com/robreuss/VirtualGameController),以支持共享控制器功能,因此所有设备都将接收来自所有设备屏幕上的控制元素的输入。此增强的目的是支持基于ARKit的多人功能。我假设开发人员将使用diviaki提到的第一种方法,在这种方法中,虚拟空间的一般定位是通过从物理空间中的一个公共点开始每个设备上的会话来定义的,这是一个共享的引用,具体来说,我想到的是在一个表的对立面。所有设备都会同时启动游戏,并利用一个相对于物理大小的公共坐标空间,并且利用来自所有控制器的输入,游戏理论上将保持所有设备的同步。还在测试。显而易见的潜在问题是网络的延迟或中断,同步崩溃,除非重新开始游戏,否则很难恢复。这种方法和框架可以很好地适用于某些类型的游戏--例如直截了当的街机式游戏,但对其他许多游戏来说肯定不行--例如,任何具有重大随机性的、无法跨设备协调的游戏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44529350

复制
相关文章

相似问题

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