2

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

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

4

2 回答 2

1

首先看一下如何只使用 SceneKit 编辑器在 ARKit 中创建 Portal 效果?Stack Overflow 发布如何自己制作门户。

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

在此处输入图像描述

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

在此处输入图像描述

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

import AudioToolbox.AudioServices

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate)

希望这可以帮助。

于 2019-03-30T21:01:45.830 回答
1

我能想到一些方法。

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

  2. 让它撞到墙上会改变整个场景。

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

于 2019-03-31T06:15:06.937 回答