在 AR 中缩放和定位虚拟对象涉及环境理解、坐标系和用户交互的结合。要定位对象,像 ARKit 或 ARCore 这样的 AR 框架首先使用相机数据和传感器检测真实世界的表面(例如,地板或桌子)。这通过诸如平面检测和特征点跟踪等技术完成,这些技术创建了环境的空间地图。然后,开发人员使用命中测试(从设备的屏幕到 3D 场景的射线投射)将对象放置在特定坐标处。例如,点击屏幕可能会投射一条射线,找到它与检测到的平面相交的位置,并将虚拟对象锚定在该交点处。定位还考虑了设备的朝向和移动,并在用户移动时实时更新对象的位置。
缩放确保对象以相对于物理世界的真实大小出现。AR 框架通常使用真实世界的单位(米、厘米)来表示对象尺寸。例如,虚拟椅子模型可能被定义为 1 米高,以确保它在渲染时与真实椅子的大小相匹配。开发人员可以以编程方式调整缩放比例(例如,设置统一的缩放因子),或者让用户通过手势(例如,捏合缩放)来调整对象大小。但是,缩放还必须考虑深度感知:远离相机的对象应该显得更小。这由 AR 框架的投影矩阵自动处理,该矩阵将 3D 坐标转换为 2D 屏幕空间。物理交互,例如碰撞,也需要精确的缩放;缩放比例不佳的对象可能会穿透真实表面或表现不自然。
其他考虑因素包括持久性和环境变化。持久锚点(例如,ARKit 的 ARAnchor)允许对象即使在应用程序重新启动时也保持固定在世界中,这依赖于保存的空间数据。遮挡(使虚拟对象出现在真实对象后面)需要深度缓冲区或 LiDAR 传感器来映射环境的几何形状。例如,放置在真实桌子后面的虚拟灯将使用深度测试来隐藏被遮挡的部分。开发人员还必须处理边缘情况,例如不均匀的照明影响平面检测或突然的环境变化(例如,门的打开)。跨具有不同传感器功能的设备(例如,具有/不具有 LiDAR 的 iPhone)进行测试可确保行为一致。通过结合这些技术,开发人员可以创建无缝的 AR 体验,其中虚拟对象以令人信服的方式与现实世界互动。