想象一支探险队走进同一片森林,队长在空地中央插下一根红白相间的旗标,旗杆上刻着一个数字“0“。然后,每个队员都掏出自己的地图,在旗标位置画一个原点。接下来奇妙的事情发生了:队员A在旗标东边三步发现一棵老槐树,他在地图上标记”(3, 0)“;队员B在旗标北边两步也看到了同一棵老槐树,他的地图上标注的也是”(3, 0)”。虽然两个人站的方位不同、看树的视角不同,但因为大家都以同一根旗标为参照系,他们其实描述的是同一个物理位置。 这就是“空间锚点”(Spatial Anchor)的本质:它不是什么神秘硬件,而是一根虚拟的“数字旗标”——一组环境特征和位姿数据,被钉在现实世界的某个坐标上。当多台 AR 设备都以这根旗标为世界原点,并共享同一套坐标换算规则时,它们就能在各自屏幕上“看到同一个世界”:你看到的虚拟花瓶放在茶几上,我换了个角度走过去,花瓶依然在那个茶几上,而不是漂移到天花板上。这篇内容将带你从旗标怎么插、如何让所有队员认出旗标,到多设备如何换算坐标、如何防止“走偏”,完整走一遍共享 AR 的技术链路。
对 AI 从业者而言,空间锚点是连接物理世界与数字世界的“地基”:掌握它,你才能做出真正多人同步、可落地的 AR 协作产品,而非只能各自为战的单机 Demo。
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
\u7a7a\u95f4\u951a\u70b9: \u865a\u62df\u5750\u6807\u7cbe\u786e\u7ed1\u5b9a\u5230\u771f\u5b9e\u4e16\u754c AR\u8bbe\u5907\u7a7a\u95f4\u951a\u70b9\u5de5\u4f5c\u539f\u7406AR\u8bbe\u5907AR\u8bbe\u5907\u7a7a\u95f4\u951a\u70b9\u5de5\u4f5c\u539f\u7406AR\u8...</sp...
锚点概念基础
队长在森林空地插下旗标后,告诉所有队员:“从现在起,你们地图上的原点就是这根旗杆。”空间锚点做的事完全一样——它要在真实世界中选定一个有辨识度的位置,把它登记为虚拟世界坐标系的“原点”。虚拟物体放在“原点往东 3 米、往上 0.5 米”,任何设备读到这个坐标,都知道该去哪里找它。
从技术上看,一个空间锚点数据包里装着两类信息:位姿(这个旗标在世界里的位置和朝向)和环境特征(旗标周围的长什么样)。位姿回答“旗标在哪、歪没歪”,环境特征回答“别人怎么认出这根旗标”。两者合在一起,锚点才具备“共享”的资格——因为另一台设备要凭借这两条信息,在它的世界里重新找到同一个位置。
以锚点为原点,任意一个虚拟物体在锚点坐标系中的位置,可以通过一套简单的变换公式换算到世界坐标系:
一把旗杆,让所有队员的地图有了共同的“原点”。同样,一个锚点,让所有 AR 设备的三维空间有了统一的度量衡。明白了锚点是什么,下一步要解决的是:设备凭什么在复杂的房间里认出“这棵树就是地图上那棵树”?这就轮到了环境特征提取。
- 锚点局部坐标 \(\mathbf{P}_{anchor}\)虚拟物体在以旗杆为原点的坐标系中的位置,比如“沿旗杆东边 3 步、高 0.5 米”。
- 旋转矩阵 \(\mathbf{R}\)锚点自身的朝向,类似旗杆上刻的指北箭头,告诉设备“锚点的东边对应世界的哪个方向”。
- 平移向量 \(\mathbf{t}\)锚点在世界地图上的绝对位置,等于旗杆插在大地上的经纬坐标。
- 相加合成 \(\mathbf{P}_{world}\)先让对方设备“转个身”对齐方向,再挪到旗标所在位置,最终得到虚拟物体在真实世界中的准确坐标。
环境特征提取
探险队员第一次来到一片陌生的森林,想在这里插旗标。他不能随手乱插,得先环顾四周,记住几棵形态特别的歪脖子树、一块泛红的大岩石、一条浅溪的转角。这些“长得很特别、换个角度看依然认得出来”的景物,就是环境特征点。插下的旗标之所以能被后人找到,靠的正是它们。
在 AR 设备里,这活儿由 SLAM(同时定位与建图)来做。设备举起摄像头扫过房间,算法会从画面中提取数百个特征点——门框的直角、海报的边角、沙发的花纹——并为每个特征点算出一个“指纹”(特征描述子)。同时,设备通过多帧画面的三角测量,推断出这些特征点在三维空间中的位置,边移动边把地图越建越完整。
判断地图建得准不准,工程师们用一个叫重投影误差的指标:把三维特征点按当前的相机位姿投影回图像平面,和相机实际拍到的像素位置比一比,差距越小,说明定位越准。公式如下:
特征点就是锚点世界的“指纹”。地图建得越准,旗标就认得越牢。有了可信的环境地图,探险队接下来要正式举行“插旗仪式”——创建锚点。
- 特征点总数 \(N\)环境中被选中的可区分地标的数量,好比队长记下的歪脖子树和红岩石的个数。
- 三维空间点 \(\mathbf{P}_i\)第 i 个地标在真实世界中的 3D 坐标,由 SLAM 三角测量得出。
- 投影函数 \(\pi(\cdot)\)模拟“用相机给地标拍张照”的数学过程,把 3D 点投到 2D 图像上。
- 观测像素 \(\mathbf{p}_i\)相机照片中地标实际出现的像素位置,是“真实答案”。
- 误差聚合对全部点求平方差再取平均,衡量整体定位精度,误差越小说明设备对自己在哪这件事越有把握。
锚点创建流程
插旗仪式有一套规范动作:先选一片平坦开阔的空地,确定旗杆插下的具体位置;再丈量旗杆相对周围地标的距离和角度;最后把这一切记录成档案,交给传令兵送去营地备案。创建空间锚点正是这三个步骤。
第一步,设备扫描环境,识别出可用的平面或特征簇(相当于选定插旗点);第二步,SLAM 解算出设备相机此刻在世界中的位姿,再结合锚点相对相机的偏移,计算出锚点在世界坐标系中的最终位姿;第三步,把锚点数据——位姿 + 环境特征描述子——打包上传到云服务存档。这一步完成后,锚点就有了唯一的 Anchor ID,像旗杆上刻的编号。
锚点在世界上定位的数学过程,本质上是一次位姿矩阵的链式相乘:
旗标插好了,档案也归档了。但探险队马上遇到新问题:传令兵 A 说“旗杆在我左手边 5 步”,传令兵 B 说“旗杆在我正前方 3 步”——他们该怎么把各自的语言翻译成同一种地图语言?这就要靠坐标系统的变换。
- 相机世界位姿 \(T_{cam}^{world}\)设备相机在世界坐标系中的位置和朝向,由 SLAM 实时解算,相当于“传令兵现在站在地图的哪个位置”。
- 锚点相机位姿 \(T_{anchor}^{cam}\)锚点相对相机坐标系的偏移,来自平面检测或特征点云拟合,相当于“旗杆在传令兵面前多远、偏哪个方向”。
- 矩阵连乘两个 4×4 齐次矩阵依次作用,把锚点从“相机眼里的位置”一步步换算成“世界地图上的位置”。
坐标系统变换
每个探险队员都有自己的“身体坐标系”:我朝哪边算是“前”、哪边算是“左”,完全取决于我面朝的方向。同一棵老槐树,在 A 眼里是“右前方 20 度、10 米”,在 B 眼里可能是“左后方 30 度、15 米”。如果两人只报自己的视角坐标,谁也听不懂谁。解决办法是:先把各自视角坐标换算到旗标世界坐标,再用旗标坐标转给对方。
AR 设备之间完全复刻了这套逻辑。设备 A 把虚拟物体放在自己视角坐标 (0.5, 0, -1),它先乘上锚点逆矩阵,换算成世界坐标;设备 B 要渲染这个物体,再把世界坐标乘上自己的锚点变换矩阵,得到 B 视角下的局部坐标。这中间的桥梁,就是锚点的 4×4 齐次变换矩阵。
设备 A 局部坐标到设备 B 局部坐标的完整换算公式:
每个队员都用自己的尺子量世界,但只要都先对齐到旗标这同一把“标准尺”,各说各话也能严丝合缝。坐标变换解决了眼前的多设备对齐,可如果探险队明天再来这片森林,旗标还在吗?这就引出了持久化与同步。
- A 的局部坐标 \(\mathbf{P}_A\)设备 A 看到的物体位置,以 A 的相机为原点,如“眼前半米、偏右一点”。
- 锚点 A 矩阵求逆 \(\left(T_{anchor}^{A}\right)^{-1}\)把 A 的局部坐标“翻译”回世界坐标,相当于 A 放下自己的尺子,拿起世界的尺子。
- 锚点 B 矩阵 \(T_{anchor}^{B}\)把世界坐标再“翻译”成 B 的局部坐标,相当于 B 用自己的尺子重新量一遍。
- 两步串联A 局部 → 世界 → B 局部,任何设备间坐标互转都走这条“世界语言”中转站,保证大家描述的是同一棵树、同一个坐标点。
持久化与同步
探险队晚上回营地,队长把今天的旗标档案画成一张“地标速写本”存在营地资料库里:旗杆在哪儿、周围有几棵歪脖子树、岩石长什么样。第二天来了新队员,没到过现场,但他翻开速写本,循着上面的特征描述,一到森林就认出了那根旗标。这就是锚点的持久化——让锚点在设备重启、App 关闭后依然能被找回,而不是一断电就消失。
云服务在其中扮演“营地资料库”。设备创建锚点时,把锚点位姿和一组环境特征描述子上传到云端,云端给它分配唯一 ID;另一台设备需要共享时,只要拿着这个 ID 向云端请求数据,然后用摄像头扫描周围环境,把实时拍摄的特征和下载的描述子做比对。比对的数学工具是描述子余弦相似度——它衡量两段“特征指纹”有多像:
有了云端资料库,新队员也能隔天找回旗标。可探险队还面临一个更磨人的问题:队员在森林里走久了,脚下的步伐计算会越来越不准——明明走的是直线,地图上却画出了一道弧线。这种“走偏”在 AR 里叫漂移,下一节就看队员怎么把自己拉回正轨。
- 描述向量 \(\mathbf{d}_a\)、\(\mathbf{d}_b\)两组环境特征向量的数值编码,一组来自当前摄像头画面,一组来自云端存储的锚点档案。
- 向量点积 \(\mathbf{d}_a \cdot \mathbf{d}_b\)计算两组特征在方向上的吻合程度,完全同向则点积最大。
- 模长归一化两边各除以自身长度,消除特征数量多少带来的偏差,只比较“长相风格”是否一致。
- 相似度判定Sim > 阈值(如 0.9)即判定匹配成功,设备完成重定位,锚点世界回归。
漂移校正策略
探险队员戴着眼罩走路,靠数步伐估算自己走了多远。一开始很准,走 100 步大约就是 100 步的长度;但走到 500 步时,因为每一步的微小误差不断累计,他可能已经偏离真实路线五六米。AR 设备里的陀螺仪和加速度计(IMU)正是这个“数步伐”的角色,它的积分误差会随使用时间不断累积,导致虚拟物体悄悄从茶几上滑到地板上。
对付漂移,工程师们采用“多传感器互相纠正”的思路。IMU 给出短期平滑但长期会飘的估计;视觉特征匹配给出短期略抖但长期不飘的估计。把两者按置信度加权融合,就是经典的视觉-惯性融合策略:
除了每时每刻的融合,还有一记“杀手锏”:当设备久用漂移明显时,主动扫描环境并和已存锚点特征做全局匹配,一旦命中就一把拉回正确位置——这相当于探险队远远望见那根熟悉的红白旗标,立刻修正了方向。校正完毕,队伍终于可以安心开展真正的团体任务了。
- 惯性估计 \(\mathbf{x}_{IMU}\)由 IMU 积分得到的位置,短时间精准,长时间缓慢漂移。
- 视觉估计 \(\mathbf{x}_{vis}\)由特征点匹配解算的位置,单帧可能抖动,但不会长期偏离。
- 权重 \(w\)每个估计的置信度,通常由协方差或误差大小动态调节,越靠谱的权重越高。
- 加权平均合成两个估计按权重融合,得到比任一单一来源都稳定的综合位置,抑制漂移。
共享AR应用实战
一切准备就绪:旗标插好了、地标认得了、坐标能互换了、档案存进云端了、漂移也有人看着了。现在,整支探险队可以在同一片森林里真正协作了——你在这头勘探,我在那头搭帐篷,但咱们讨论的都是同一块地皮。共享 AR 应用,就是让多台设备在同一物理空间里干同一件事。
实际工程落地时,通常要组建一个共享会话(Shared Session):一台设备作为 Host 创建锚点,其他设备作为 Client 加入会话,从云端拉取锚点数据并逐一执行重定位。会话管理器负责同步成员的进出,设备数量越多,需要处理的并发同步就越多。衡量一次共享体验好不好,最核心的指标是重定位成功率——所有参与设备中,能成功找回既有锚点并稳定跟踪的比例:
从插旗、认树、到交换坐标、对抗漂移,探险队靠一根旗标把整个团队拧成了一个人。到了实战环节,这根旗标的真正价值才彻底绽放——它让“你看到的世界”和“我看到的世界”之间,只隔着一份共享的坐标协议。
- 尝试次数 \(N_{attempts}\)参与设备加入会话后尝试重定位的总次数,每一次设备重启、回到场景都是一次尝试。
- 成功次数 \(N_{relocalized}\)其中成功匹配到既有锚点并进入统一坐标系的次数。
- 成功率计算两者相除,直观度量多人共享 AR 的稳定性和可用性,指导优化方向。
AI 应用场景
多人 AR 看房与室内设计
阶段:多人协作与共享交互
解决的问题:传统看房时全家只能轮流戴一台设备,讨论家具摆放时你说东我说西,谁也看不见彼此所指的虚拟沙发。通过空间锚点,所有家庭成员的手机进入同一个共享坐标系,沙发“坐”在该坐的位置,每个人从自己的角度看到同一个画面。
具体案例:设计师、业主、工长各持一台平板走进毛坯房。设计师创建锚点并放置虚拟沙发模型后,业主绕着客厅走动,从自己视角看到沙发稳稳立于窗边;工长则从另一侧测量沙发与墙面的距离。三人讨论的是同一个虚拟空间里的同一个物体。
远程 AR 工业协同维修
阶段:远程标注与空间定位
解决的问题:异地专家通过视频指导维修时,口头描述“那个螺栓”往往让现场技师一头雾水。借助共享锚点,远程专家的标注能够“钉”在真实设备的三维位置上,而不是飘在屏幕上。
具体案例:工厂技师佩戴 AR 头显发起共享会话,端侧创建锚点并同步给远程专家端。专家用鼠标在虚拟空间中圈出故障齿轮、画上拆解箭头,技师转头巡视设备,发现标注依然精确挂在那个齿轮上方,仿佛专家亲临现场用激光笔指引。
共享 AR 棋牌桌游
阶段:空间同步与多端渲染
解决的问题:传统手机 AR 游戏各自为战,物理棋盘上的棋子无法在两人屏幕间同步移动。空间锚点让同一张真实桌面成为两台的“共享棋盘”。
具体案例:两人在咖啡馆同坐一张桌前打开 AR 象棋 App,桌面中央锚点被双方识别后,棋盘以同一坐标呈现。A 推动一枚虚拟棋子,B 屏幕上的对应棋子同步移动,翻转手机的视角也只会改变镜头,不会改变棋局。
Python 演示
import numpy as np def quaternion_to_matrix(q): """四元数 (w,x,y,z) 转 3x3 旋转矩阵.""" w, x, y, z = q return np.array([ [1 - 2*(y*y + z*z), 2*(x*y - z*w), 2*(x*z + y*w)], [2*(x*y + z*w), 1 - 2*(x*x + z*z), 2*(y*z - x*w)], [2*(x*z - y*w), 2*(y*z + x*w), 1 - 2*(x*x + y*y)] ]) class SpatialAnchor: """空间锚点: 设备间共享的位姿参照物.""" def __init__(self, anchor_id, position, quaternion): self.anchor_id = anchor_id self.position = np.array(position, dtype=float) self.quaternion = np.array(quaternion, dtype=float) def pose_matrix(self): """返回 4x4 齐次矩阵: 锚点局部 -> 世界.""" mat = np.eye(4) mat[:3, :3] = quaternion_to_matrix(self.quaternion) mat[:3, 3] = self.position return mat class ARDevice: """AR 设备: 持有锚点并据此进行坐标换算.""" def __init__(self, device_id, anchor): self.device_id = device_id self.anchor = anchor def to_world(self, local_point): """锚点局部坐标 -> 世界坐标.""" p = np.append(local_point, 1.0) return (self.anchor.pose_matrix() @ p)[:3] def to_local(self, world_point): """世界坐标 -> 锚点局部坐标.""" inv = np.linalg.inv(self.anchor.pose_matrix()) p = np.append(world_point, 1.0) return (inv @ p)[:3] def shared_ar_demo(): """两台设备通过同一锚点共享虚拟物体.""" anchor = SpatialAnchor( "anchor_room1", [1.0, 0.5, 0.0], [1.0, 0.0, 0.0, 0.0] # 单位四元数: 无旋转 ) device_a = ARDevice("device_A", anchor) device_b = ARDevice("device_B", anchor) # A 在锚点坐标系中放置一个虚拟花瓶 a_local = np.array([0.8, -0.2, 0.4]) world_pos = device_a.to_world(a_local) # B 读取同一个世界坐标 b_local = device_b.to_local(world_pos) print("锚点ID :", anchor.anchor_id) print("A 放置 :", a_local) print("世界坐标:", world_pos) print("B 读到 :", b_local) print("坐标一致:", np.allclose(a_local, b_local)) if __name__ == "__main__": shared_ar_demo()
mat[:3, :3] = quaternion_to_matrix(self.quaternion)把四元数换成人好懂的旋转矩阵,填补齐次变换矩阵的左上角。mat[:3, 3] = self.position把锚点在世界里的坐标填入矩阵最后一列,完成“局部 → 世界”的全部信息准备。(self.anchor.pose_matrix() @ p)[:3]一行代码完成齐次变换:先矩阵乘点,再丢掉齐次分量取 xyz。np.linalg.inv(self.anchor.pose_matrix())求逆矩阵,实现“世界 → 局部”的逆向变换,相当于从世界地图切回设备视角。np.allclose(a_local, b_local)断言两台设备换算结果一致,验证共享锚点的坐标闭合回路。
常见误区
误区我刚学 AR 时以为空间锚点像蓝牙信标一样,是一个能发射信号的物理小盒子,必须在房间里放几个硬件才能实现位置共享。
正解空间锚点不是硬件,而是一组数据:位姿(位置 + 朝向)加上环境特征描述子。它“锚”在环境中靠的是视觉匹配,不是无线电信号。就像探险队插的旗标,重要的不是旗杆本身,而是“旗杆在世界上的位置 + 周围地标照片”这份数字档案。
为何常见:“锚点”这个词自带物理联想,加上 AR 设备中确实有 IMU、摄像头等硬件,初学者很容易把数据概念和硬件实体画等号。
误区我以为锚点一旦创建成功,它的坐标就是绝对真理,无论环境怎么变、设备怎么重启,它都纹丝不动。
正解锚点数据在每次定位、每次同步时都会引入估计误差。设备重启后需要通过特征匹配做重定位,光照变化、物体移动都会让重定位失败或偏差。所谓“持久化”指的是锚点数据被云端保存、可被找回,而不是“坐标永远精确”。旗标还在原地,但队员们每次找到它都要重新核对自己站的位置。
为何常见:“持久化”在数据库语境里意味着“数据不丢”,容易让人望文生义,误以为锚点也彻底免于误差。
误区我以为既然两台设备“看到同一个世界”,那虚拟物体应该出现在两台屏幕的相同像素位置,画面完全一样。
正解共享的是世界坐标系,不是屏幕坐标系。两台设备处在不同物理位置、不同朝向,虚拟物体在各自屏幕上的投影自然不同——A 看起来物体在左边,B 看起来在右边,但二者指向的是同一个世界坐标。就像两个人从左右两侧看同一棵树,树在各自视野中的位置不同,但树还是那棵树。
为何常见:“看到同一个世界”这句话太有画面感,容易被直觉理解成“看到同一帧画面”。
误区我以为只要两台 AR 设备能联网,锚点数据就能自动同步,共享就完成了,不需要任何额外条件。
正解网络只负责搬运数据,真正的难点在于“对方设备能否认出这组特征”。跨设备共享必须同时满足:双方持有同一 Anchor ID、都能识别同一组环境特征、坐标变换链路正确。哪怕云同步成功,如果第二台设备在完全不同的环境里,它依然无法重定位到锚点。
为何常见:互联网时代的一切应用似乎都是“联网即所得”,让人低估了空间感知环节的复杂性。
误区我以为定位漂移完全由陀螺仪、加速度计的硬件品质决定,软件算法再怎么写也救不了。
正解硬件传感器噪声确实贡献了漂移,但软件层面大有可为:视觉-惯性融合(VIO)用特征匹配修正 IMU 积分漂移;回环检测在设备回到曾到过的位置时一键修正累计误差;锚点重定位更是能彻底把设备拉回正确位姿。算法与硬件是一对搭档,而不是硬件的“背锅侠”。
为何常见:“误差累积”听起来像物理定律,让人误以为只有更换硬件才能解决,忽视了算法补偿这条主线。
面试题
Q1. 空间锚点最核心的数据内容是什么?
- A.一个 GPS 经纬度坐标值
- B.位姿数据加环境特征描述← 正确答案
- C.一张完整的环境全景照片
- D.AR 设备的型号与传感器参数
答案:B。锚点的本质是“位置 + 朝向”的位姿数据,以及让其他设备能认出它的环境特征描述子。GPS 坐标精度太低且室内无效,全景图和设备型号都不足以支撑跨设备定位。
Q2. 环境特征提取在锚点技术中的主要作用是什么?
- A.提高虚拟物体的贴图分辨率
- B.让设备识别当前所处的物理位置← 正确答案
- C.节省设备的电池电量消耗
- D.压缩云端存储的锚点体积
答案:B。特征提取是设备“认路”的眼睛——它把周围环境转成特征点与描述子,用于 SLAM 定位和后续锚点重定位。贴图分辨率、电量、存储压缩都与特征提取的核心目的无关。
Q3. 公式 \(\mathbf{P}_{world} = \mathbf{R} \cdot \mathbf{P}_{anchor} + \mathbf{t}\) 中,\(\mathbf{t}\) 表示什么?
- A.虚拟物体相对设备的距离
- B.锚点在世界坐标系中的位置← 正确答案
- C.设备相机传感器的曝光时间
- D.云服务器传输数据的耗时
答案:B。\(\mathbf{t}\) 是平移向量,代表锚点在世界坐标系中的绝对位置。它回答“旗杆插在地图上的哪个点”,而旋转矩阵 \(\mathbf{R}\) 回答“旗杆朝哪边歪”,两者合成锚点的位姿。
Q4. 设备 A 要把自己局部坐标的点共享给设备 B,正确的换算顺序是什么?
- A.先经锚点逆矩阵转世界,再乘锚点 B 矩阵转 B← 正确答案
- B.直接把局部坐标发送给 B,无需任何变换
- C.先乘锚点 B 矩阵,再乘锚点 A 的逆矩阵
- D.将局部坐标与设备 ID 拼接,由云端自动换算
答案:A。跨设备坐标互转的通用路径是“局部 → 世界 → 局部”,即先用锚点 A 的逆矩阵把 A 的局部坐标送进世界坐标系,再用锚点 B 的矩阵转入 B 的坐标系。直接发坐标或拼接 ID 都缺失了坐标变换的必要环节。
Q5. 以下哪些因素会导致 AR 定位漂移?
- A.IMU 传感器积分误差的持续累积← 正确答案
- B.环境光照变化导致特征匹配失败← 正确答案
- C.设备后台运行了多个高耗电应用
- D.光滑镜面反射干扰视觉特征提取← 正确答案
答案:ABD。漂移源于位置估计误差的累积——IMU 积分是经典误差源;光照变化让特征匹配不稳定;镜面反射制造假特征点。后台耗电应用与定位漂移没有直接因果,故 C 不选。
Q6. 锚点持久化时,云端存储的最关键附加数据是什么?
- A.创建锚点时设备的余电百分比
- B.锚点周围的环境特征描述子← 正确答案
- C.创建锚点用户的登录昵称
- D.当前 AR 引擎的版本号信息
答案:B。持久化的核心价值是“日后能被找回”,而找回依赖环境特征描述子做重定位匹配。电量、昵称、版本号都与空间定位无关,保存它们无法帮助任何设备重新认出这个锚点。
Q7. 多人共享 AR 会话中,保证所有人看到同一个虚拟物体需要满足哪些条件?
- A.各设备分别创建独立锚点互不干扰
- B.所有参与者共享同一个锚点 ID← 正确答案
- C.建立统一的坐标系变换链路← 正确答案
- D.设备重启动时执行锚点重定位← 正确答案
答案:BCD。共享的前提是共同锚点 ID、统一坐标变换、以及重启后重定位恢复。若各设备各自创建锚点,坐标系互不相通,“同一个世界”便无从谈起,故 A 错误。
Q8. 设备重启后找回既有锚点的核心技术原理是?
- A.重新搜索附近的 Wi-Fi 热点名称
- B.实时特征与云端特征描述子匹配← 正确答案
- C.强制重启 AR 引擎重建全部数据
- D.下载更高精度的离线城市地图
答案:B。重定位的本质是“用眼睛认路”——当前摄像头提取的特征应当与云端保存的锚点特征描述子高度相似,匹配成功即恢复锚点坐标。Wi-Fi、引擎重启、城市地图都不是空间锚点的工作方式。
Q9. 空间锚点技术的典型应用场景包括哪些?
- A.多人协同摆放与预览虚拟家具← 正确答案
- B.跨设备共享同一场 AR 对战← 正确答案
- C.自动压缩用户的聊天图片
- D.远程专家在设备上做空间标注← 正确答案
答案:ABD。多人看房、共享 AR 游戏、远程标注都需要多设备对齐坐标,正是锚点的用武之地。聊天图片压缩是普通的图像处理任务,与空间定位无关,故 C 不选。
Q10. 已知锚点变换矩阵为 \(T\),设备 A 的局部点 \(p_A\) 变换为世界点 \(p_W\) 的正确公式是?
- A.\(p_W = T \cdot p_A\)← 正确答案
- B.\(p_A = T \cdot p_W\)
- C.\(p_W = T^{-1} \cdot p_A\)
- D.\(p_A = p_W \cdot T\)
答案:A。锚点变换矩阵 \(T\) 的定义就是“锚点局部坐标系 → 世界坐标系”,因此世界点等于矩阵左乘局部点,即 \(p_W = T \cdot p_A\)。B 拿世界点当输入、C 用逆矩阵、D 右乘点,都颠倒了变换方向和运算顺序。