锚定使内容在重新进入时保持位置
别名: 空间锚点 · 重新进入 · world map · 持久位姿
概念解释
昨天把一张便签贴在厨房门框上,今天再戴上头显,便签还应该在那扇门上,而不是出现在开机时鼻子对着的方向。空间锚点(spatial anchor)把内容绑在房间的可再识别结构上,而不是绑在这一次会话的原点。会话原点每次启动都可以换;锚点的工作是让「重新进入」不等于「重新摆放」。
它回答的是同一台设备、下一次走进同一处时位置还在不在,不是多人、多设备、跨天运营那一层。
机制
每次会话的跟踪原点是任意的:头显从哪醒来,哪就是临时的零点。虚拟物如果只记住相对这个零点的坐标,下一次零点一转,物体就跟着转。锚点在放置时同时存一份局部外观签名(特征、网格片段)和相对那份签名的位姿。重新进入时,先在当前画面里找回这份签名,再把物体按记下的位姿挂回去。找回成功,门框上的便签才是同一张;找回失败,系统手里只有一个对不上房间的旧坐标。
所以「保持位置」不是把坐标写进磁盘就结束,是一次「存签名 → 再匹配 → 再挂上」的闭环。没有再匹配,磁盘上的数字只是上一次会话的遗物。
怎么研究
标准做法是退出再进入:在房间里放置若干物体,记下它们相对真实标记(门把手、插座)的距离与朝向,杀掉应用或摘下头显,过一段时间再启动,测量每件物体相对同一标记的平移和偏航误差,以及找回成功的件数。HoloLens 的空间锚点与 ARKit 的 World Map 都按这个闭环验收。
自变量:离开时长、放置时的观察是否充分、重新进入时的起始朝向。 因变量:平移误差、偏航误差、再匹配成功率。
只在同一次会话里把物体藏到背后再转回来,测的是跟踪连续性,不是重新进入。
边界
一次性体验、明确不要求下次还在的内容,不需要锚点;硬做持久化只会在下次启动时弹出一堆过期物体。完全黑暗或特征被布帘盖住的房间,再匹配没有签名可对,重新进入会失败,这不是锚点概念错了,是这一次没有可识别结构。同一会话内的暂停(切出去接电话)通常还在当前原点里,不必当成重新进入。3DoF 设备没有位置,锚点保不住「在门上」这种平移含义。
怎么落地
- 只有「下次进来还要在那儿」的对象才写成锚点;一次性演示、跟随身体的工具不要持久化。
- 放置时强迫一次环视或在目标表面停留,让签名够用,不要在瞥一眼之后就承诺能找回。
- 重新进入先找锚点再显示内容;找不到就不要把物体按旧坐标丢在当前原点附近冒充还在。
- 验证:贴在门框上,退出应用,从房间另一头再打开。物体仍贴在同一门框上才算通过;出现在开机朝向的正前方,就是绑在了会话原点上。