学 AR 到底学什么?个人 AR 之路反思与展望

“谁是咱们的敌人?谁是咱们的朋友?这个问题是革命的首要问题。”git

反思

作为一个写了不少文章,一直在鼓吹 AR 的AR 神棍,我对 AR 的兴趣开始于 2015 年,那时刚入门 iOS 开发一年左右,正是 AR/VR 又一次火起来的时候,当时苹果也尚未拿出 ARKit,只好先学开发基础知识和 SceneKit。 从 ARKit 推出后,我就利用业余时间不停学习这个框架,并尝试写一些 Demo 和基础文章,学习相关数学基础,整整三年从 ARKit 1 跟着学到了 ARKit 3。
在这四五年里,看到了 AR/VR 行业经历了一个完整的泡沫周期:概念普及 --> 引人瞩目 --> 指望太高骗子横行 --> 热情降低 --> 无人问津。github

到 2020 年中,虽然 AR 仍然没有火起来,但我已经在移动 AR 行业完整工做一年了,开发了 10 多个大大小小的 Demo 和几个完整的 AR 产品,对 iOS 平台的 ARKit 比较熟悉,对苹果新推出的 RealityKit 及 Unity 平台的 ARFoundation 也有必定了解。 可是,即便我在 AR 方面付出了这么多努力,有了很多经验,我却从没有认真深刻思考过革命的首要问题:AR 到底须要学什么?用 AR 又该作什么?markdown

AR 基本流程

要搞明白这些问题,就必须先来梳理一下 AR 的基本流程: 网络

  • 即时定位与地图映射(SimultaneousLocalizationAndMapping,SLAM):依靠 VIO+IMU+CV+TOF 等技术,实现特征点提取,场景重建,平面识别,图片识别等功能;
  • 场景感知和识别:依靠 CV 、ML 等技术,识别不一样场景和其中的物体,好比 ARKit 已经可以识别桌子、椅子、墙面、天花板、人体等;
  • 叠加 3D 图像和声音:依靠 3D 渲染技术,将虚拟的画面和声音,叠加在的场景中或者已识别的物体上。好比 ARKit 依赖于 SceneKit 提供渲染,而 Unity 则本身提供渲染(追踪和识别依然是对 ARKit 和 ARCore 的封装);
  • 多人协做与分享:依靠 GPS + 特征点 + 网络等技术,如苹果的MultipeerConnectivity + CollaborativeSession + WorldMap共享,2020年LocationAnchor,以及谷歌的云锚点等,实现多人共享 AR 效果。

可以同时把这些都作好,才是一个很完善的 AR 应用。至少,也要作好这四项中的两项,而不是目前不少只是将原来的 3D 内容简单改成 AR 形式。app

考虑到第一项 SLAM 实际上是 AR 平台或硬件提供的功能,实际上大部分 AR 应用只要作好后面三项中的两项,就是一个很棒的 AR APP 了。 框架

AR 产品的方向

我心目中对于 AR 产品有几个经典例子:三维建模软件shapr 3D,身体解剖软件Complete Anatomy,和沙雕风格的らくがきAR(RakugakiAR)(即涂鸦 AR)机器学习

下面是shapr 3D的演示 Demo,直接用 LiDar 扫瞄房间,生成房间和家具的三维图纸,编辑后,再以 AR 方式预览: ide

身体解剖软件Complete Anatomy则将动做捕捉和人体解剖模型关联起来,让人更清楚看到人体的动做状态: oop

涂鸦 AR识别平面图形,将其变成 3D 物体,并以 AR 方式展示: 性能

这几个 app 都作到了利用 CV+ML 来识别并提取场景中物体信息,并提供了有创意的或强大的 3D 渲染技术,来展示 AR 效果,这也是它们成功的缘由。

固然,也能够相似Pokémon Go那样,依靠 GPS+3D 渲染,来制做多人 LBS 类 app。

AR 学习路线

那么,了解 AR 产品的 4 个基本流程后,做为一个 AR 开发者,到底应该学什么?怎么学?我根据本身的理解,列举一个知识矩阵:

我我的认为,应该从易到难,从具体看得见的,到抽象看不见的。也就是先学第三步,由于 3D 渲染能看获得,比较引起学习兴趣。 好比:从 3D 引擎基础知识出发,到 ARKit 相关,初中高级知识依次学习。

数学基础方面推荐3Blue1Brown的视频:线性代数的本质,B 站上有中文字幕和翻译。

图形学基础方面推荐Games101系列视频:现代计算机图形学入门-闫令琪,B 站上有中文版。

iOS 教程方面Raywenderlich家的几本教程就挺不错,适合 iOS 开发者入门。

Unity 方面也能够了解下,教程又多质量也比较高。好比 《AR 开发权威指南:ARFoundation》(该做者同时还在写做一本关于 RealityKit 的书籍,预计2021年发布),和 catlike coding 上面的教程。

还要学习的就是第二步:场景感知和识别,主要依靠 CV+ML 来实现,对于 iOS 开发者来讲,苹果对 ML 进行了封装,模型训练和使用都很是简单(固然,目前功能并不强大,性能也不够优秀),依靠 CreateML + CoreML+Vision 来实现整个 ML 过程,且很是容易和 ARKit 相结合,好比识别 AR 中的特定动做,触发 AR 效果。

除了场景感知会用到 ML 相关知识外,苹果实际上在第一步的 SLAM 阶段也用到了 ML 来提高追踪稳定性,在第三阶段渲染时,也可使用 ML 来完成风格迁移等视频效果(2020年 CreateML app 已经支持了这种模型的训练)。

其实咱们能够看到,Metal 在全部这些流程和技术中,都起到了底层支撑做用。不论是 3D 渲染,仍是机器学习框架,图像处理,都用到了 Metal。这也说明 Metal 在 Apple 生态中的重要做用,不可不学。

第四步位置和多人共享,则须要学习 GPS 和网络相关知识,这个更可能是从工做项目中学习。iOS 开发者能够参考 ARKit-CoreLocation 这个框架。

须要避免的错误

  • 简单搬运:将原来的 2D 或 3D 内容,简单转制后变成 AR 版的,虽然工做量比较少,但效果通常都很差。主要缘由是内容与现实世界没有联系,玩法没有结合新的形式,为了 AR 而 AR。
  • 左倾与右倾:左倾是激进冒险主义和机会主义,就是但愿花一两个月,读一两本书,就能学会 AR 并取得成就。右倾则是保守主义和投降主义,有畏难思想惧怕学不会,看见矩阵和数学公式就怂了,过早放弃。
  • 如今不成熟,等效果稳定、 AR 眼镜发布:根据目前状况,就算苹果的 AR 眼镜发布,前几代产品也会有各类限制和缺陷,手机 AR 虽然效果鸡肋,但在很长一段时间仍会是主流。正如当年 iPhone 第一代发布时,功能远不如诺基亚 S60 智能手机同样,对用户来讲差异很大,但对开发者来讲,其实技术是相似的,现代手机上的各类 app 均可以从当年找到技术原型和创意原型。当年有不少开发者从 S60 和 PPC 平台转到了 iOS、安卓平台,将来咱们能够也要经历相似的过程:从手机 AR 转到 AR 眼镜平台。

苹果的各类态度已经很明确,AR 就是将来,是下一代的计算平台。微软、Facebook、华为也都在作 AR 研发。虽然如今并不成熟,问题也不少,可是做为开发者,提早学起来老是没有错的。

总结

总结一下:

  • 学 AR 到底学什么?学四大步骤,尤为是 ML 和 3D 渲染相关知识,以及绕不开的 Metal 知识。
  • 用 AR 作什么?作相似涂鸦 AR这样的产品,理解场景,再以 AR 方式展现出来。考虑到如今的 AR 平台能力有限,稳定性不足,依靠创意去实现一些小而美的 app 是条很是好的路。

这就是我对本身在 AR 学习过程当中的思考与展望。AR 将来的路还很长,要学的知识也不少,生命不熄学习不止,才能走得更好更远。

相关文章
相关标签/搜索