我有一个可以渲染增强现实场景的应用程序,还有一个可以进入场景的门户。飞机将场景遮挡在视野之外,但是如果您穿过该飞机,则会“陷入”虚拟环境。
我不是在寻找代码,而是在如何解决此问题方面提供帮助。我要这样做,以便进入虚拟场景的唯一方法是走过我创建的门口。我首先想到的是跟踪摄像机的位置,并确保在跨过阈值以启用渲染之前确保您离入口很近,但是如果我这样做的话,用户将无法看穿进入/进入虚拟场景之前的门口。
答案 0 :(得分:1)
首先,在How to create a Portal effect in ARKit just using the SceneKit editor?堆栈溢出一文中介绍如何制作门户网站。
防止用户通过虚拟墙的可靠方法是使虚拟墙具有与真实墙相同的配置(物理墙在其中-虚拟墙也存在)。
还需要对象检测工具。为了将虚拟墙精确地定位在实际物理墙上,只需将Core ML框架与经过预先训练的小型mlmodel
以及ARKit框架的类ARImageTrackingConfiguration()或ARWorldTrackingConfiguration()一起使用。 / p>
如果您没有机会像建造真实墙那样构建虚拟墙的相同配置,则可以在用户与虚拟墙碰撞时使用户的iPhone振动。这是代码:
import AudioToolbox.AudioServices
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate)
希望这会有所帮助。
答案 1 :(得分:1)
我可以想到几种方法。
进行设置,以便当一个人穿过墙壁时,整个屏幕变为空白,除了一条消息告诉他们需要离开墙壁外,还有一条箭头告诉他们要往哪个方向走移动。
进行制作,以使撞到墙上都可以改变整个场景。
将两者组合在一起,问他们在撞墙时是否想改变场景。