最新高通骁龙Spaces XR SDK带来空间映射和网格划分功能
空间映射和网格划分功能
(映维网Nweon 2023年04月10日)骁龙Spaces XR开发者平台是一个支持OpenXR的AR基础平台,支持一系列领先的3D引擎,如Epic Games的Unreal,Niantic的Lightship开发者平台,以及Unity AR基础套件(AR Foundation)和Unity MARS。这个套件能够提供环境和用户理解功能,从而帮助开发者打造可感知用户、可与用户智能互动、可适应用户所在室内物理空间的头戴式AR体验。
0.11.1 SDK版本为Spaces带来了空间映射和网格划分功能。下面这篇博文介绍了相关的工程团队方法、用例和使用时需要考虑的重要因素。
什么是空间映射和网格划分?
空间映射和网格划分为用户提供近似的3D环境模型。这一功能对于帮助智能眼镜理解和重建环境的几何形状至关重要。空间映射和网格划分提供了用户周围环境的详细三维表示和简化的二维平面表示。你需要网格化来计算遮挡遮罩或虚拟对象与现实世界之间的物理交互。骁龙Spaces开发者可以访问网格(顶点)的每一个元素,并请求对其进行更新。只要对环境有一个粗略的理解,应用程序就可以使用平面。
例如,当决定将对象放置在桌面或墙壁时。API只返回最重要的平面,因为在可以提取多少平面和使用来自新环境信息更新它们的速度之间存在权衡。
除了网格和平面,开发者同时可以使用碰撞检查来查看虚拟光线是否与现实世界相交。这对于在用户接近物理边界时警告用户非常有用。
为什么要在AR体验中使用空间映射?
用户体验在很大程度上取决于对环境的理解和应用程序的适应性。如果你努力为数字体验实现更高的真实感,空间映射和网格化是正确的选择。为什么?作为人类,我们可以通过视觉线索来理解空间的深度。遮挡是最明显的深度提示之一。当部分或整个对象隐藏在视图之外或被其他对象覆盖时,遮挡就会发生。
光线同时提供了大量其他自然深度线索,比如阴影和眩光。空间映射和网格可以模拟人类视觉,并为增强现实应用程序提供重要信息,以从现实世界中获取深度线索。
Sphere评价道:“Sphere团队对骁龙Space的空间映射和网格发布感到非常兴奋。Sphere是一个沉浸式协作解决方案,在一个交钥匙应用程序中提供劳动力用例、培训优化、远程专家协助和全息构建规划。正如你所能想象,空间网格是我们内容的基本组成。通过允许XR系统理解和解释其所在的物理环境操作,我们可以在现实世界中逼真地锚定虚拟对象和叠加。联想的ThinkReality A3智能眼镜是我们支持的硬件之一,采用所述设备的Sphere用户将特别受益于空间映射和网格化。”
骁龙Spaces工程团队是如何进行空间映射和网格划分?
高通的空间映射和网格划分方法基于两个并行组件:帧深度感知;3D深度融合。
帧深度感知:通过在大量不同训练数据集训练的神经网络,帧深度感知可以利用机器学习的力量。另外,相关数据集得益于在功能强大的骁龙神经处理器芯片高效运行。为了扩大训练数据集的多样性和可代表性,高通没有将训练数据限制为监督样本。相反,团队利用未标记的样本,并从自我监督的训练方案中受益。与基于传感器的深度感测相比,高通的机器学习模型经过了广泛的优化,并具有高度的准确性和计算效率,而这一切都归功于硬件感知的模型设计和实现。
3D深度融合:3D重建系统提供具有体三维表示的场景的3D结构。体三维表示将场景划分为大小相等的单元格(或立方体)网格。体三维表示中的立方体(又称为样本)存储从样本中心到场景最近曲面的Signed Distance。这种类型的三维结构表示称为SDF。自由空间用正值表示,正值随着距离最近曲面的距离而增加。占用的空间表示为具有相似但负值的样本。实际物理表面表示为采样距离的零交叉点。
3D重建系统通过将深度图像融合并集成到体三维重建中来生成三维表示。对于每个深度图像,系统同时需要其在采集时间戳处的姿势(camera位置和观看方向),其中姿势与全局参考坐标系相关联。3D重建系统进一步提取体三维重建中的表面的3D网格表示。这是使用行进立方体算法来完成,在网格样本中寻找有Signed Distance的零等值面。三维重建整体上是一项相当复杂和资源密集的操作,但XR应用程序中启用环境网格带来的优势值得这一计算成本。
通过空间映射和网格化实现真实感
虚拟对象遮挡:创建无遮挡的增强现实体验是很长一段时间以来的常见做法。具有近似的环境网格可以用于创建被真实对象遮挡的虚拟对象。通过将环境网格与场景中的所有其他虚拟对象一起渲染到缓冲区中来利用深度缓冲区,你可以轻松地创建遮挡效果。要实现所述效果,需要创建一个依然会写入深度缓冲区的透明着色器。
真实世界中的虚拟照明和阴影:类似地,真实环境的网格可以用于将虚拟照明效果应用于真实世界。当创建一个没有网格环境的虚拟光源时,只有虚拟对象会被这个虚拟光照亮。这可能会导致一定的视觉差异。当有一个真实世界的模型被点亮时,这种差异不会那么明显。阴影再次表现得非常相似。如果没有环境模型,来自虚拟对象的阴影将不会在现实世界中投射阴影。这可能会导致对对象深度的混淆,甚至给用户留下对象悬停的印象。若要实现所述效果,需要创建一个可以像不透明着色器一样接收照明和阴影的透明着色器。
虚拟世界中的真实照明和阴影:当结合虚拟和真实世界的内容时,你通常很容易发现虚拟对象的起点和终点。如果目标是拥有最逼真的增强效果,你需要将真实和虚拟的照明和阴影结合起来。可以通过让照明估计在场景中使用平行光模拟真实世界的照明条件来实现这一点。结合网格划分,光线估计可以将真实世界对象的阴影投射到虚拟对象上。
限制:根你您的硬件,检测到的网格的精度会有一定的限制。例如,联想ThinkReality A3使用基于单目推理的方法,这可能会产生某些不精确性。透明对象(如玻璃或有光泽的表面)将导致网格中出现孔洞。现实世界中的物体离眼镜越远,为其生成的网格就越不精确。如果你仔细想想,这很合乎逻辑:RGB传感器会随着距离的推移而丢失信息。网格可用于距离用户5米以内的距离。其他深度测量方法(如激光雷达)需要专门的硬件。另外,存在成本效应权衡。尽管激光雷达可以为某些用例提供更高的精度,但RGB摄像头已经在大多数设备中可用,而且价格更实惠。