最近有一些朋友在QQ群或者微信公众号后台问Relax关于AR应用开发如何入门的问题,我想后面肯定还有很多人会问这样的问题,干脆就自己所知道的,比较系统的写一篇入门文章出来,供大家参考一下。
这是AR应用开发入门的第一篇,先从整体上给大家讲一下,后面文章再分开来详细讲。
1、AR发展现状
在做AR开发之前,有必要说一下AR开发的现状。AR目前已经在军事和工业方面有比较多的应用,硬件设备大都是基于AR眼镜,因为都是军事和工业方面比较专业的应用,所以都是企业在做,一般都没个人开发者什么事;
另外一方面,在2017年,苹果和谷歌都相继推出了ARkit和ARCore,这两个是AR开发的SDK,苹果和谷歌分别是安卓和苹果手机系统厂商,所以推出这两个SDK的意图很明显,就是想让手机也能使用AR,手机现在人手一部,如果有了AR应用,那AR很快就会走进我们的生活中。所以就目前来说,AR应用开发主要还是指手机AR应用开发;
目前AR眼镜也开始进入消费级发展阶段,所以后面很快我们就可以基于AR眼镜开发应用,手机受限于屏幕大小,手机AR应该只是AR发展的一个过渡阶段,AR眼镜才是AR应用的主流平台;当然这是后话,我们这个系列的文章也只会讲手机AR应用的开发。
2、开发环境的选择
前面说了我们是讲手机AR应用开发,所以如果你是想做苹果手机的AR应用开发,那自然就选择苹果自己的ARkit,但是对安卓来说,这个选择就复杂一些,由于安卓的碎片化或者说开放性,安卓手机厂商众多,AR SDK也众多,下面是Relax整理的一张国内外的AR SDK的表,供大家参考。
就ARCore来说,目前也并不是所有的安卓手机都支持,因为每个手机厂商的配置不一样,ARCore需要与手机硬件厂商进行适配调校,所以目前只能是部分机型支持,目前支持ARCore的手机型号如下,详情可以参见官网这个实时更新的页面 https://developers.google.cn/ar/discover/supported-devices。
Relax目前入手的是华为的Nova 3i在学习AR,下载了一些AR应用做了测试,如果是作为测试机用,完全没问题,从性价比考虑,大家可以考虑一下。
上面的表里面还有其他的SDK,在功能方面,各个SDK可能会有一些差异,但是AR基础的环境理解、运动跟踪和光照估计肯定都是支持的。
Relax目前用了ARCore,也简单看了下华为AR Engine,从文档资料来看,华为AR Engine支持骨骼、手势识别等等,但是华为AR Engine肯定只对华为系的手机更友好,如果你想让你的手机支持更多的机型,目前来说还是选择ARCore吧,把ARCore理解透彻,再理解其他SDK其实就很容易了,只是API函数的接口名称变了。
另外要提到的是,正是由于AR SDK太多了,Unity这个3D游戏开发引擎厂商开发出了AR Foundation,做的事情简单来说就是把ARCore和ARkit再封装了一下,大家都知道,Unity是跨平台的,同一份代码可以打包发布到windows、android和苹果等各个平台,所以对于AR开发,Unity也希望简化开发者的工作,开发者基于AR Foundation开发,选择发布不同的平台,就选择使用对应的SDK,这样一来可以省去开发者需要学习多个平台SDK的成本,预计后期Unity还会整合其它SDK,再不久的将来可以基于Unity开发AR眼镜应用也是有可能的。
ARCore目前发布了Android、Android NDK、Unity、Unreal、IOS(ARCore其实也支持苹果手机)等平台的SDK,由于Relax之前使用Android Studio开发APP,所以一开始是选择AS学习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开发的朋友共勉。
如果你还有不清楚或者有疑问的地方,可以关注微信公众号:AR新世界,直接来问Relax吧。
想要Relax写出更精彩的文章?那么希望老铁别吝啬你的三连击哦
1、点赞,可以让更多的人看到这篇文章
2、关注我的原创微信公众号『AR新世界』,第一时间阅读我的文章。
3、也欢迎关注我的博客哦。