“谁是咱们的敌人?谁是咱们的朋友?这个问题是革命的首要问题。”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 应用。至少,也要作好这四项中的两项,而不是目前不少只是将原来的 3D 内容简单改成 AR 形式。app
考虑到第一项 SLAM 实际上是 AR 平台或硬件提供的功能,实际上大部分 AR 应用只要作好后面三项中的两项,就是一个很棒的 AR APP 了。 框架
我心目中对于 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 产品的 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 这个框架。
苹果的各类态度已经很明确,AR 就是将来,是下一代的计算平台。微软、Facebook、华为也都在作 AR 研发。虽然如今并不成熟,问题也不少,可是做为开发者,提早学起来老是没有错的。
总结一下:
这就是我对本身在 AR 学习过程当中的思考与展望。AR 将来的路还很长,要学的知识也不少,生命不熄学习不止,才能走得更好更远。