点击测试会将虚拟对象放置在现实世界中

平台专用指南

Android(Kotlin/Java)

Android NDK (C)

Unity (AR Foundation)

AR 内容必须正确放置和调整大小,才能融入场景。与现实世界中的物体一样,较远的虚拟物体应显得较小。 您可以执行点击测试 (或在 AR Foundation for Unity 中执行光线投射 )来确定 3D 物体在场景中的正确放置位置。正确放置可确保 AR 内容以适当的(表面)大小呈现。

点击测试可以找到现实世界中的 3D 几何图形与由原点和方向组成的虚拟光线之间的交汇处。虽然 ARCore 包含一个 API,用于使用世界空间坐标中的任意光线执行点击测试,但最常用的光线是以设备摄像头为原点的光线。

假设有一条光线从用户的设备摄像头发出,并向前延伸,直到击中场景的 3D 几何图形(例如地板、墙壁或物体)。发生这种情况后,您会收到一个命中结果列表,或与检测到的场景几何图形的交汇处。该列表按与设备的距离排序,最近的交汇处排在最前面。这一点很重要,因为通常您无法看到被其他物体遮挡的物体,因此大多数情况下,第一个结果是最重要的。

命中结果的内容

单个点击结果以列表形式返回,其中包含每个结果的以下信息:

  • 与光线原点的距离(以米为单位)
  • 点击结果的姿势(位置和方向)
  • 您击中的 3D 几何图形,以 Trackable 的形式

然后,您可以使用所需的点击结果,通过锚点真实地放置 3D 内容

命中结果类型

点击结果有四种类型:深度、平面、特征点和即时放置结果。每种类型都有自己的使用场景和权衡取舍,如下表所示。

命中结果类型 说明 屏幕方向 使用场景
深度 使用整个场景的深度信息来确定点的正确深度和方向 垂直于 3D 表面 在任意表面(不仅限于地板和墙壁)上放置虚拟物体
平面 击中水平和/或垂直表面,以确定点的正确深度和方向 垂直于 3D 表面 使用平面的完整几何图形将物体放置在平面(地板或墙壁)上。需要立即获得正确的比例。深度点击测试的回退方案
特征点 依赖于用户点按点周围的视觉特征来确定点的正确位置和方向 垂直于 3D 表面 在任意表面(不仅限于地板和墙壁)上放置物体
即时放置(持久光线投射) 使用屏幕空间放置内容。最初使用应用提供的估计深度。可立即运行,但姿势和实际深度会在 ARCore 能够确定实际场景几何图形后发生变化 +Y 向上,与重力相反 使用平面的完整几何图形将物体放置在平面(地板或墙壁)上,其中快速放置至关重要,并且体验可以容忍未知的初始深度和比例

设备兼容性

点击测试适用于所有 支持 ARCore 的设备,但深度点击测试需要 支持深度的设备

使用命中结果放置 AR 内容

获得点击结果后,您可以使用其姿势作为输入,在场景中放置 AR 内容