美文网首页iOS 收藏iOS开发iOS Developer
EasyAR在iOS原生上的简单使用

EasyAR在iOS原生上的简单使用

作者: hmj1993 | 来源:发表于2017-05-03 17:10 被阅读1710次

    这是本小白第一次写技术类的文章 好慌好慌

    公司目前这个项目中有用到ar的需求 所以就去找到了easyar ,但是可能是目前ar发展的还不够完善,所以网上的相关资料并不是很多,更想吐槽的是easyar的技术顾问感觉很水,问题也回答不到点上,动不动就甩个官网的链接给你,社区里的帖子回复的也不是很多,幸好加进了easyar的qq群,里面的人很热心也很厉害,在他们的帮助下我也解决了我自己的需求,现在就写这个文章希望可以帮到和我有一样疑问的同道中人。另外,因为我不会unity3d,所以我都是用的原生解决的。

    首先,最基础的配置问题

    1.新建一个工程项目,获取bundleID,因为注册的时候需要用到。

    点击开发开始注册,图片标注做错了 点击创建应用,在弹出的框中输入项目的bundleID,注意1个key对应一个bundleID,注册好了就不能修改了 ,点击显示就会出现一串key,之后这个key会用到。

    2.导入项目所需的各种包。

    下图中箭头指向的是我在官方demo中拖过来的,也可以直接下载官方sdk获取。接着再导入右边红色框中的包

    无话可说

    3.在build setting中搜bitcode,并且把值改为no

    无话可说

    4.在plist文件中添加相机权限和上网权限,因为在demo中我用到了网络

    好了,现在基本的功课做好了,可以开始表演了。

    讲一下,官方的demo是将target图片直接放在了项目中,然而肯定与大部分的项目不合。所以我的这个demo实现的是从网络下载一张图片,然后将图片存在本地沙盒文件中,然后加载沙盒中的文件使之成为target图,从而开始扫描配对。

    因为我不会c++,所以并没有做太多的改变,直接在官方 demo中修修改改的。

    2.show time:

    2.1 在appdelegate.h文件中加入一个属性

    @property (atomic) bool active;

    2.2 导入蓝色阴影部分的文件,我是直接拖的官方demo里的

    2.3 将之前获得的key粘贴到这里

    2.4 官方demo中扫描成功后是在图片上显示彩色色块,我不想要这个效果,我想实现的是扫描成功后在界面上显示一张图片,所以我在helloar函数中做了一些调整,我让扫描成功或是失败后抛出一个通知,对了,记得在dealloc中撤销通知(这一步好像有些提前了)

    2.5 我在主界面加了两个按钮,一个是下载图片的按钮,一个是扫描的按钮,

    我天 图片好大 别急 后面还会有几张同样大的 😄

    2.6 点击下载图片按钮,便会通过链接下载图片,并显示在界面,如下图所示,并且这张图片就是我们的target图

    2.7 对于这张图片 我是这样处理的

    1.获取本地沙盒文件下的documents文件夹的路径 2.在以上获得的路径下建立一个新的文件夹 叫 ios 3.将图片写入文件

    当然,你要是不放心图片是否写入成功,可以找到你的测试真机上的对应的沙盒文件去看看 是否写入成功

    2.8 到上一步为止,我们已经把网络上下载的图片写入本地沙盒中了,接着我们就要使这张图片成为目标图,在openglview.mm文件的start函数中加载图片,我的方法是遍历沙盒中刚刚建立的ios文件夹,毕竟不会只有一张图片

    2.9 到上一步我们的工作就做得差不多了 就可以开始扫描图片了,具体的写法看我的demo中的arviewcontroller.m文件

    注意的是,因为我的项目中当时是要和地图配合使用的,当我扫描成功后两秒退回到上个包含地图的界面,但是地图会抽风,一直闪还会黑屏,这应该是相机还在活跃的原因,当时这个bug搞得我相当心烦,幸好没多久就解决了,解决方法如下图

    2.10 好了 ,效果就是这样的,顺便夸一下我的达康书记

    好了 基本上就是这些步骤了,至少我的脑子中想不起来还有什么需要额外重点介绍的了

    虽然功能是实现了,但是图片多了之后每次加载都要等上个几秒钟,虽然时间不久,但是也不爽,因为安卓的就比我稍微快些,不过他们用的是高通的,我是先看的easyar,等我知道他们使用高通后我已经研究了一大半了,不想换了,当然最主要的是高通的都是英文,难度太大,我还是比较心水中文的,但是以后图片多了加载时间一定会影响用户体验的,所以看到这篇文章并且有所研究的请联系我好吗?我需要你的帮助😄

    好了 我的第一篇技术文章到此结束🔚

    诶呀 忘了放上demo的地址了,幸好可以更新

    在这在这github.com/hmj0930/EasyUseOfEasyAR.git 

    相关文章

      网友评论

      • 无忌不悔:如何实现脱卡呢?
      • 香烟不灭:不知道楼主有没注意到 有个问题,每次进入扫描 好像都会重新创建target 打印出来 每次的 target.id() 不一样

        load target: /var/mobile/Containers/Data/Application/B56FDAB4-AF6E-4F42-A329-0CFF50688B1D/Documents/MyiOSAR/ios0 (21) success
        load target: /var/mobile/Containers/Data/Application/B56FDAB4-AF6E-4F42-A329-0CFF50688B1D/Documents/MyiOSAR/ios1 (22) success
        load target: /var/mobile/Containers/Data/Application/B56FDAB4-AF6E-4F42-A329-0CFF50688B1D/Documents/MyiOSAR/ios2 (23) success
        香烟不灭:这样每次都走 loadFromImage 多次之后会有内存问题。 如果写个判断只走一次 下次进入相机扫描就 没法识别了。
      • brance:如何扫描之后,图片上面播放视频呢,大佬可否交流一下?
        Sun_666:@brance 我也遇到了相同的问题,请问您有解决办法了嘛,要是解决了麻烦能教我一下吗谢谢!
        brance:@hmj1993 可是我现在扫描本地沙盒的图片页扫描不出来,提示我invalid trackable 2: /var/mobile/Containers/Data/Application/0BDEE017-5AB0-4FCD-AE7F-4D941FAAD87F/Documents/ios/idback,不知道是啥原因,因为你的demo和官方有点不一样呢,也不知道怎么改。
        hmj1993:@brance 不是大佬:joy:播放视频的话你可以跳转一个链接啊 其实我觉得只是操作的事情不一样 对了 官方demo里有跳转视频的好像 如果我没记错的话
      • slimsallen:在cocos 2d 中 集成 打开摄像头 是黑屏 不知道是什么原因 能交流下吗
        slimsallen:@hmj1993 key 对着呢 我换成自己的了 应该是cocos2d 渲染的问题吧
        hmj1993:@音乐君 是key
        hmj1993:@音乐君 我没用cocoa 你检查一下是不是申请了注册号
      • 素酥:你好。我也是要结合地图来做的,但不知怎么下手。。可以留下qq我加你吗
        hmj1993:@素酥 915660592
      • 冯半仙儿:怎么更换彩色长方体模型呢
        hmj1993:@冯半仙儿 我是把彩色方块删掉了换成了图片

      本文标题:EasyAR在iOS原生上的简单使用

      本文链接:https://www.haomeiwen.com/subject/cfoktxtx.html