【问题标题】:How can I only allow entering my virtual scene from a portal?我如何只允许从门户进入我的虚拟场景?
【发布时间】:2019-08-08 03:41:54
【问题描述】:

我有一个应用程序,它将渲染一个增强现实场景和一个您可以进入该场景的门户。场景被一架飞机挡在视野之外,但如果你穿过那架飞机,你就会“闯入”虚拟环境。

我不是在寻找代码,而是在寻找如何解决这个问题的帮助。我想让它让你进入虚拟场景的唯一方法是穿过我创建的门口。我首先考虑跟踪摄像头的位置,并确保您在跨过阈值以启用渲染之前非常靠近入口,但似乎如果我这样做,用户将无法看穿接近/进入虚拟场景之前的门口。

【问题讨论】:

  • 建议:在门口使用一个碰撞器,当用户通过时触发它会执行您希望它执行的事件(即启用渲染等)
  • 投了反对票,因为这看起来不像是一个编程问题。这似乎更像是一个逻辑/美学问题。 (“如果我的用户穿过我不希望他们穿过的 AR 墙,对他们最好的做法是什么?”

标签: swift augmented-reality arkit coreml apple-vision


【解决方案1】:

首先看How to create a Portal effect in ARKit just using the SceneKit editor?Stack Overflow 的帖子如何自己制作门户。

防止用户穿过虚拟墙的可靠方法是拥有与真实墙相同的虚拟墙配置(物理墙所在的位置——虚拟墙也存在)。

您还需要对象检测工具。要在真实物理墙上精确定位虚拟墙,只需使用 Core ML 框架和预训练的小型 mlmodel 以及 ARKit 框架的类,如 ARImageTrackingConfiguration()ARWorldTrackingConfiguration()

如果您没有机会构建与构建真实墙相同的虚拟墙配置,您可以在用户与虚拟墙碰撞时让用户的 iPhone 振动。这是一个代码:

import AudioToolbox.AudioServices

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate)

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我能想到一些方法。

    1. 做到这一点,当一个人穿过墙壁时,整个屏幕变为空白,除了一条消息告诉他们需要从墙外后退,也许还有一个箭头告诉他们往哪个方向走移动。

    2. 让撞墙改变整个场景。

    3. 将两者结合起来,询问他们是否愿意在他们撞到墙上时转移场景。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      相关资源
      最近更新 更多