拿到iPadPro,我只关心一个问题:LiDAR离让我们拍出3D立体照片,还有多远。
这是LiDAR内部真实的样子。
本质上它和我们在安卓上见过很多次的ToF相似,通过计算光打到物体上再返回来的时间来计算距离(d=(t×c)/2),通常用的是红外光。
而在红外相机下,我们能够看到iPadPro的LiDAR投射出的是一片光点。从苹果的专利文件中可以看到,使用光点是为了增加亮度以盖过环境光,此外光源也换成了激光,接收端再加上特定波长的滤镜,来提升检测的信噪比。
至于苹果所说的「它可从光子层面进行探测」并不仅是一句宣传语而已,而是SPAD阵列,真的一个光子(SinglePhoton)就能触发信号。
但是我们能看到LiDAR的分辨率不高,远不如FaceID,用ARKit中的debug选项扫描三维结构时,较小的物体、或者结构比较复杂的物体就比较粗糙了。但LiDAR的探测距离达到5米,几乎可以覆盖整个房间。有趣的是,因为使用光线来探测空间,LiDAR会认为镜子里还有另一个世界。
在此之前,ARKit利用摄像头和AI只能大致检测到平面的位置,但现在LiDAR已经可以绘制出相对精确的空间3D模型了。这意味着我们不再需要「左右移动iPad来检测平面」,现在一下子就能找到;而且识别更加精准,比如在自带的「测距」app中,在物体边缘会出现锚点和线,离近了会有更精细的刻度。更重要的是AR模型终于可以被物体遮挡了。
此前在ARKit3上,摄像头可以利用AI来抠出人像,实现人物遮挡,但对人物以外的物体束手无策。有了LiDAR之后,任何物体都可以遮挡AR模型,更加真实。App中想要实现这个功能,加一行代码就OK。
但我们发现,LiDAR系统的帧率其实很低,在建模之后,视角的移动仍然依赖摄像头、陀螺仪和加速计。因此当遮挡物不动、镜头动时,问题不大;一旦遮挡物移动,就开始露馅。所以即使有了LiDAR,人物的遮挡目前还是要主要依靠摄像头数据和AI抠图。
这可能也是iPadPro没有把LiDAR用于人像模式拍照的原因之一。另一个原因是,在LiDAR眼里,人类不过是这样的一坨……
一个有意思的对比是,谷歌的ARCore已经实现了用一颗摄像头检测出空间3D结构,根本没用到ToF。这个API现在还没有完全开放,不过已经有一些软件用上了,但精准度达不到LiDAR的水平。有ToF的手机可以利用深度信息进一步提升遮挡效果,但至少在Note10+上,还存在比较严重的错位问题。
我在翻阅开发文档的时候还发现,苹果已经做到了结合3D和2D数据来识别场景,比如官方的Demo中就可以识别地板、桌子、座椅、墙面等等。
所以LiDAR对现有AR体验上的提升基本仅限于更快放置以及更好的遮挡,真正要发挥3D空间检测的能力需要软件主动适配,比如增加一些物理效果。我猜测这也是苹果提前半年在iPadPro上率先搭载LiDAR的原因,这样半年之后iPhone12Pro上市的时候才不会一个软件都没有。
至于激光对人眼是不是有伤害,苹果在随附的提示中表示iPad为1类激光产品,符合FDA的标准。FDA的