我目前正在开发一个混合现实游戏,目标是 Quest 3,到目前为止,我们面临的一个最难的技术问题是房间网格和场景理解准确性。

在纸上,Meta 场景理解听起来很了不起:你可以得到标记的锚点,如墙壁、沙发、桌子、地板等。

但是在实际生产中,真正的挑战是,当你依赖这些网格来为游戏中的关键系统提供支持时。

我们迅速遇到了以下问题:

  • 敌人卡在墙壁上
  • AI 在家具中生成
  • 地板网格不准确导致浮动实体
  • 错误的包围盒导致碰撞不准确

最大的问题是场景理解数据在不同用户环境中并不是总是可靠的。

一些例子:

  • 薄薄的物体,如椅子腿或灯台,经常会被完全忽略
  • 反射表面会降低扫描质量
  • 不良照明会导致房间网格不完整
  • 包围盒很少与实际物理尺寸完全匹配
  • 动态对象在扫描后不会被跟踪(移动一个椅子,系统仍然认为它在原来的位置)

对于 MR 恐怖/战斗体验,如果敌人在现实世界的墙壁上飘浮了一半,沉浸感就会立即破裂。

因此,我们开始在其上构建多层验证,而不是盲目信任场景理解。

一些帮助我们的事情:

  • 增加了墙壁锚点的安全边距
  • 在生成实体之前进行实时表面验证
  • fallback “安全生成区域”
  • 使用重建几何体进行二次射线检测
  • 忽略非常薄或不可靠的网格区域
  • 动态地修正浮动演员以防止浮动

我们也将一些游戏逻辑从精确的物理精确性转向“感知空间正确性”。

这一个设计变化大大提高了可靠性。

我意识到,在开发 MR 时:

你不仅仅是在设计一个游戏。

你是在设计为百万个不可预测的现实世界房间。

而且,诚实地说,这改变了工程决策的几乎一切。

我很想听听其他 Quest 3 / MR 开发者是如何处理不靠谱的房间网格和场景理解边缘情况的。