增强现实AR

超详细介绍AR增强现实发展总结

最近,有朋友向Relax询问如何在QQ群或微信公众号后台进行AR应用开发。 我想以后一定会有很多人问这样的问题。 我只是根据我所知道的来写一篇系统的文章。 介绍性文章供您参考。

这是第一篇关于 AR 应用程序开发入门的文章。 我先给大家大概讲一下,然后在后续的文章中详细讲一下。

1. AR发展现状

在做AR开发之前,有必要先讲一下AR开发的现状。 AR目前在军事和工业领域有很多应用。 大多数硬件设备都是基于AR眼镜的。 因为都是军事、工业方面的专业应用,都是企业做的,一般没有个人开发者。

另一方面,2017年,苹果和谷歌都相继推出了ARkit和ARCore。 这两个是AR开发的SDK。 苹果和谷歌分别是Android和苹果手机系统制造商,因此推出这两个SDK的意图很明显。 ,只是想在手机上使用AR。 现在每个人都有手机。 如果有AR应用,AR很快就会走进我们的生活。 所以目前来说AR应用开发主要是指手机AR应用开发;

目前AR眼镜也开始进入消费级发展阶段,所以我们很快就能开发基于AR眼镜的应用。 手机受到屏幕尺寸的限制。 手机AR应该只是AR发展的一个过渡阶段。 AR眼镜是AR应用的主流。 平台; 当然,这是稍后的话题,我们的系列文章只会讲移动AR应用的开发。

2、开发环境的选择

上面提到,我们说的是手机AR应用的开发,所以如果要为苹果手机开发AR应用,自然会选择苹果自己的ARkit,但对于Android来说,这个选择就比较复杂了,由于Android的碎片化,换句话说就是开放性。 Android手机厂商有很多,AR SDK也有很多。 以下是Relax整理的国内外AR SDK表,供大家参考。

在这里插入图片描述/

就ARCore而言,目前并不是所有的安卓手机都支持,因为每个手机厂商的配置不同,ARCore需要和手机硬件厂商进行适配和调整,所以目前只有部分机型支持,目前还可以支持ARCore的手机型号如下。 详情请参阅官网实时更新页面。

Relax目前正在用华为nova 3i学习AR,并下载了一些AR应用进行测试。 如果拿来做测试机的话,完全没有问题。 考虑到性价比,可以考虑。

在这里插入图片描述/

上表中还有其他SDK。 从功能上来说,各个SDK可能会有一些差异,但AR的基本环境理解、运动追踪、光照估计等都是肯定支持的。

Relax目前使用的是ARCore,也简单了解了一下华为AR Engine。 从文档来看,Huawei AR Engine支持骨骼、手势识别等,但Huawei AR Engine对华为手机肯定更友好。 如果您希望您的手机支持更多型号。 目前来说,还是选择ARCore比较好。 彻底理解了ARCore之后,理解其他SDK其实也很容易,只是API函数的接口名称变了。

另外,值得一提的是,由于AR SDK太多,3D游戏开发引擎厂商Unity开发了AR Foundation。 简单来说,它所做的就是重新封装ARCore和ARkit。 众所周知,Unity是跨平台的,同样的代码可以打包发布到windows、android、Apple等各个平台。 因此,对于AR开发,Unity也希望能够简化开发者的工作。 开发者基于AR Foundation进行开发,并选择发布不同的平台。 使用相应的SDK可以节省开发者学习多平台SDK的成本。 预计Unity后续会集成其他SDK,不久的将来就有可能开发基于Unity的AR眼镜应用。

ARCore目前发布了Android、Android NDK、Unity、Unreal、IOS(ARCore其实也支持苹果手机)等平台的SDK。 由于Relax之前使用Android Studio开发应用,所以最初选择AS来学习ARCore,而ARCore之前并不支持AR。 我参考官方网站使用模拟器运行HelloSceneform。 感觉AS的配置和开发还是比较麻烦的,也遇到过一些坑。 前段时间写了一篇文章,记录下来。 有需要的朋友也可以阅读。 因此,我个人觉得AS不太适合初学者入门AR。

目前Relax选择学习基于Unity的ARCore开发。 后面的文章会写如何基于Unity搭建ARCore开发环境。

另外,Relax在写这篇文章的时候还有一个想法,那就是Relax想要建立一个博客系统。 目前Relax独自只写基于Unity的AR开发教程,这显然是不够的。 可能有很多很多的朋友会因为各种原因而这么做。 出于同样的原因,我们选择其他平台或SDK。 不同的平台、不同的SDK有不同的操作步骤和API,所以Relax想要建立一个AR开发者自己的技术博客,让大家可以学习AR开发的过程或者遇到的所有问题都记录在我们自己的博客空间中,以便后来者能够快速通过我们写的博客学习AR,也方便技术交流,避免到处寻找资料。

通过这样一个平台,大家可以共同努力,为AR的发展做出贡献。 不知道大家对于Relax的想法有什么看法。 等博客系统搭建好了我再告诉你。 (PS:AR博客平台目前已搭建完毕,可留言获取)

3.基础知识的准备

Relax之前从未使用过Unity,也没有做过3D开发。 Unity工具的使用和3D模型的基础知识都比较缺乏,所以像我这样的朋友熟悉Unity的使用和3D的基础知识。 如果有需要,Relax主要阅读Unity官网的用户手册。 本用户手册Relax已上传至开发群,有需要的朋友可以下载。

4. 学习资料

学习资料的问题也是刚开始学习AR开发的朋友关心的问题。 目前,关于ARCore开发的信息还比较少。 Relax目前主要在阅读《ARCore之路——Unity开发从入门到实践》一书,以及《ARCore从0到1》视频教程。

其实从原理上来看,AR涉及到数学、计算机视觉、机器学习、图像识别等各个方面,对于开发者来说,掌握深层次的原理对于学习AR开发肯定有很大的帮助,但是在想要在短时间内掌握这些知识显然是不可能的。 建议您根据自己的实际情况考虑。 我们学习AR开发一定要有自己的目标。 我们必须掌握我们的目标要求我们掌握的知识。

5、应用开发方向

根据你想要实现的AR功能,AR其实可以细分为一些场景。 例如,目前扫描卡片然后显示3D模型是很常见的。 这就是AR的图像识别功能。 如果是AR特效相机,那就是AR人。 人脸增强功能,如果是多人AR游戏,那么必须使用共享云主播功能;

根据你需要做的应用类型来关注这些即可,但是基本的功能,比如特征点和可视化平面的检测,以及模型大小、声音和动画的调整和放置,都是必须的掌握了。

学习是为了使用。 建议大家先有一个目标,比如要开发什么类型的AR应用,然后一点点去学习AR。 它就像一个雪球。 它越大,您掌握的知识就越多。 学得越多,越是一头扎进AR广阔的蓝海(陷阱很多),你会感觉有点不知所措,不知道从哪里开始。

我想把这个想法分享给所有正在学习AR开发的朋友。