什么是最好的方式,如果有的话,使用苹果的新ARKit多用户/设备?
似乎每个设备都有各自的场景理解。到目前为止,我的最佳猜测是使用原始功能点位置,并尝试在设备之间匹配它们,将不同的视图组合在一起,因为ARKit没有提供任何绝对的参考引用。
===Edit1,我有tried===的东西
1)特征点
我玩过暴露的原始特征点,现在我确信,在它们当前的状态下,它们是死胡同:
所以总的来说,我认为尝试以某种有意义的方式使用它们是不合理的,不能在一个设备内进行任何好的点匹配,更不用说几个了。Alternative将实现我自己的特征点检测和匹配,但这将更多地取代ARKit而不是利用它。
2) QR码
正如@Rickster建议的那样,我也尝试过识别像QR代码这样容易识别的对象,并从不动点(参见这个问题)获得相对的参考更改--这有点困难,并暗示我使用一些openCV来估计相机的姿态。但更重要的是
发布于 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 )。
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格式)放置在与上一次保存的会话相同的位置。
发布于 2017-08-18 12:59:35
不是防弹的答案更像是解决办法,但也许你会发现这些方法很有用。所有的人都假设球员在同一个地方。
发布于 2017-09-25 16:26:10
我正在更新我的游戏控制器框架(https://github.com/robreuss/VirtualGameController),以支持共享控制器功能,因此所有设备都将接收来自所有设备屏幕上的控制元素的输入。此增强的目的是支持基于ARKit的多人功能。我假设开发人员将使用diviaki提到的第一种方法,在这种方法中,虚拟空间的一般定位是通过从物理空间中的一个公共点开始每个设备上的会话来定义的,这是一个共享的引用,具体来说,我想到的是在一个表的对立面。所有设备都会同时启动游戏,并利用一个相对于物理大小的公共坐标空间,并且利用来自所有控制器的输入,游戏理论上将保持所有设备的同步。还在测试。显而易见的潜在问题是网络的延迟或中断,同步崩溃,除非重新开始游戏,否则很难恢复。这种方法和框架可以很好地适用于某些类型的游戏--例如直截了当的街机式游戏,但对其他许多游戏来说肯定不行--例如,任何具有重大随机性的、无法跨设备协调的游戏。
https://stackoverflow.com/questions/44529350
复制相似问题