今天尝试AR技术,3D引擎为unity。
以前有看到别人用unity做一些AR效果,感觉很酷炫很高深。
内行看门道,其实很简单,使用EasyAR,轻松实现AR效果。
————————————————————————————
首先要准备好工具。
直到目前发帖,Unity版本的最新是 5.6.2, 发布于2017年7月21号。
EasyAR_SDK_2.0.0,发布于2017年5月30号
进入EasyAR网站http://www.easyar.cn/,进入下载,下载EasyAR_SDK_2.0.0_Basic_Samples_Unity注意这里下载的是unity用的。
在下载的时候,可以在网站上注册一个用户。注册之后,点击网站上“开发”进入个人的应用列表,创建一个应用。名称随意。
之后在操作一栏有“查看key”,这个key接下来有用。(必须要用到这个key)
————————————————————————————
现在应该下载完毕了,自行把它解压,打开unity,导入第一个样例。
建议看看入门指南,点击点击网站上“支持”。
(http://www.easyar.cn/doc_sdk/cn/Getting-Started/Compile-and-Run-EasyAR-Unity-Samples.html)
进入场景,并选中对象EasyAR_Startup
在这里填入你的key,不然无法运行。
好了,现在可以运行了,程序打开了电脑的摄像头。
现在,就算是我们现在根本不了解这个样例要怎么工作,但是我们在之前发现场景里面有几个东西:
很自然的可以想到“是不是有一个一样的图片进入摄像头,程序就会识别然后把模型画在上方?”
尝试一下,把项目中的图片搞到手机里(会用unity的都知道怎么找到图片的位置),然后用手机打开图片并且对准摄像头........................and
效果就出来了,是不是很神奇,我当然是一点也不奇怪。
————————————————————————————
样例实现了,现在尝试自己研究研究。
关于如何识别图片?
首先能找到的图片,在Textures里面,试着用替换的方式,我把上图用到的图片替换为了自己的校园卡图片,结果运行的时候,并不能识别,但是继续用上图的图片,就能够识别并且显示同样的效果。
说明用于识别的图片,并不放在Textures文件夹里面。那么它会在什么地方呢?
————————
在StreamingAssets文件夹里
我是从别人那知道的,如果我之前不知道的话,我会在项目文件夹里面搜索图片,就会发现这个文件夹里面也有图片!
————————
现在尝试替换里面的图片文件,使用一张同名图片去替换原有图片。
运行,直接拿着校园卡对准摄像头。
好的,现在识别了我们的图片!
那要增加可识别的图片怎么办?
————————————————————————————
除了要在刚刚提到的文件夹里面放入需要识别的图片以外,还要进行一些配置。
使用的是文件夹里面的targets.json,具体如何配置,可参考“支持”里边的“使用手册”里面的“EasyAR Target配置”。——另外其实不配置也行,但是不方便管理。
配置之后如何指定识别图片的时候对应何种模型?
那来看看unity场景里面的3个实例。他们都挂有同样的一个脚本,只是里面参数有些不同。
英语稍微不差的可看出,Path路径,Name名字。可以看到上边的截图里面Path指向的就是上文提到的json文件,Name则是在json里面设置好的图片的名字。
另外:
可以看到这个脚本里面路径直接指向图片,没有指向配置文件,所以说,不配置也是可以的。
————————————————————————————
当把我们需要添加的图片放好,修改好配置后。
我们观察样例的那些对象,发现他们在父对象里挂脚本,子对象是需要显示出来的模型,父对象平面就对应于识别出图片之后的图片平面。其实父对象平面可以不渲染,只要把它材质设为空,那么渲染的时候只有模型,没有那个平面了。
现在我们新建一个对象(空对象也可以,当挂上脚本后会自动给上面片(父对象平面)),添加和样例一样的脚本,设置好脚本参数,然后新建一个模型添加到子对象。
尝试一下。
效果没有出现?!
好吧,虽然不知道为什么,但是继续尝试。
我们复制一个样例的对象,一样的,修改参数,改模型。另外父对象的名称是可以随意改的。而且我把父对象的材质设为了空。
之后我们尝试一下.........................
这样却可以了。
对比新建对象,和复制的对象:
我自己新建的:
复制修改的:
区别仅仅是一个是预设一个不是........吗?
注意看Storage一项,我一开始不仔细看,浪费了好多时间,把它设置为assets,尝试。成功。
另外如果直接把预设拖到场景里面实例化它的话(怎么通过一个实例找它的预设对象?点击上图的黄字Prefab旁边的Select),它的Loader项是空,记得给它选上。
————————————————————————————
好了,现在我们已经明白如何添加我们要识别的图形并增加显示的模型了。
另外它无法同时识别两种图片(或许可以但是只显示一个模型)
之后就可以自己随便修改做出更好的效果,比如换个好看的模型,并且有模型动画。
上图我这个角度是无法直接识别的,先在一个合适的位置进行识别,然后在慢慢调整到我这个角度。
————————————————————————————
今天主要研究了一下官方的第一个样例HelloAR,并做了一些小修改。
对于具体的实现还有应用,还没有进行深入了解。