美文网首页easyARiOS进阶指南
EasyAR的一次学习经历

EasyAR的一次学习经历

作者: 勇往直前888 | 来源:发表于2016-07-19 16:22 被阅读3322次

    产品经理有设想将AR元素引入到新的APP中。这是比较时髦的元素,但是iOS原生还没有支持。上gitHub也找不到star上千的库,搜百度,也没有很好的扫盲文章。在即将放弃的时候,“视+”应用和EasyAR这个免费的AR第三方库被发现了。

    资源下载

    • 下载SDK和样例代码
      分Unity和Native两种类型。不是纯游戏,而是在iOS应用中一个插件,所以Unity暂时不考虑。

    • EasyAR官网

    • 视+官网
      这个据说是用EasyAR库的,并且已经有APP了,也下载用了,感觉还是挺有意思的。

    简要过程

    • 整个SDK有212M,比较大。不过这个是支持N多平台的,其中iOS的framework大小为22M

    • Native的Sample包含Android和iOS两部分,最基础的HelloAR打包之后的大小为13.3M

    • 使用前需要在EasyAR的官网注册为开发者,需要用邮箱验证。对于下载的Sample,要运行起来,也要在网上创建应用,提供应用的名字和bundle id,生成一个key,写在程序中。整个过程和友盟差不多。

    • 需要真机调试,提供的framework不支持模拟器,链接会出问题。

    • 好在从XCode7开始,个人账号不交钱也能真机调试了。最低支持版本最好设定为iOS8,提供的是framework,不是以往的.a文件。

    • 提供的framework是一个C++库,很明显是做游戏的。主要的使用场景也是在摄像头拍摄界面加入自定义的动画。HelloAR中,类AR是对easyar.framework的第一层封装;类Render是用OpenGL写的一个立方体;看来还是做游戏的节奏。

    • 主要功能有两个,第一个功能是目标图像识别。目标图片都是jpg格式的,打包在程序中,读入内存,作为识别的目标。打开图片,用HelloAR的程序的摄像头对准图片,能够识别成功。这些目标图像视+APP也在用,也是能够正常识别的。

    目标图片.jpg
    • 第二个功能是将虚拟物体和实际的的拍摄场景合二为一,这是AR(增强现实)的核心功能。使用HelloAR识别之后,场景是摄像界面加了一个有色方块。而用视+APP识别之后,则是一个“打地鼠游戏了”。并且还提供了拍照片、拍视频的功能。
    HelloAR识别后的场景.jpg 视+APP识别后的场景.jpg
    • 在实际使用中,将HelloAR中那个有色方块替换成自己想要的内容就可以了。可以是静态图片,可以是CA动画,也可以是普通的按钮等控件,当然也可以是OpenGL游戏... .... 也就是替换HelloAR工程中那个Render类。

    • 如果想要互动,也可以提供自己的目标图片,替换掉工程中那些图片就可以了。当然,如果要改图片名字的话,读图片那部分代码的图片名字也要相应改改。重新编译运行,可以发现HelloAR可以识别自定义的图片,识别后照样在图片上面加一个有色方块;这个时候,视+APP就识别不出来了,怎么“扫描”都没有反应了。

    自定义目标图片.jpg HelloAR识别自定义图片.jpg
    • 简单讲,视+APP现在做的事情就是通过摄像头将实际的场景作为背景,然后在此基础上玩小游戏。达到的效果是好像游戏人物来到了现实之中,还是比较有趣的。也能符合AR(增强现实,虚拟和实际结合)这种热门概念,也是比较有创意的。为了减小APP的大小,小游戏都是在用户选定了特定场景之后,(选的方式有两种,一种是识别目标图片,前面已经讲过;另一种是用户选择),从网上下载,还能跟当前火热的“云计算”扯上关系,也是花了不少心思的。比如下面这张让大名鼎鼎的“巫妖王”在自己的键盘上跳来跳去,很有成就感吧。
    小游戏下载.jpg 小游戏(巫妖王)运行.jpg

    评估结果

    可行性

    • 提供的easyar.framework是C++库,可以用Object-C包一层,就可以在Swift的工程中使用。

    • 将计算机中的物体通过摄像头拍摄界面和实际的背景环境合二为一,这是核心功能,能够达到AR的需求。通过屏幕截图,就是当年很好玩的“PS”。

    • 提供了识别特征图片的接口,可以自定义一些交互的手段,这个功能也不错。

    • 自定义的场景最好是游戏和动画,可以做出比较有趣的内容。像视+APP这样的,就可以作为一个“以现实为背景的小游戏平台”。

    不足之处

    • easyar.framework对于工具类APP来说,还是大了一点,有22M

    • easyar.framework的C++接口,对于非游戏开发者,不够友好;最好能够提供Object-C接口,或者是Swift接口。

    • 游戏属于沉浸式应用,结合到普通工具类应用中总感觉气氛不对。最好能够提供适合工具类应用的framework。除了游戏,AR应该也有比较广泛的用武之地。

    • 通过摄像头将现实场景搬到手机里,这个主意不错。不过总感觉这是微缩版的“现实”,“现实感”不是很强,还是有点“只是游戏”的感觉。仅仅只是拍照场景,也有点受限。

    • 希望科幻片中虚拟光线的模式能够早日成为现实。虚拟人物通过光线的方式来到现实,可以互动;一关,又回去了,不见了;这样感觉更自然一点。键盘,显示屏......这些成本高,体积大、占地方的东西到时候都可以减掉了.......想想都激动。

    备注

    当时的资料链接

    • 做这个事情大概是2016年六七月份的样子吧,当时是作为研究可行性,在项目中引入AR功能,时间也不长,就折腾了一个星期左右,认识也是很浅的。后来想不到会有人问相关的技术问题,说实话,确实回答不了。
    • easyar的例子下载下来,记得当时是不能运行的,原因是他要像友盟一样,根据bundle id生成APPKey,所以,要让他提供的demo运行起来,这些相关的地方要修改一下的。也就一两个地方,当时也就花了半个小时左右就折腾出来了。
    • 另外一个就是要自定义,那么就要在入口代码里面,替换或者增加自己的图片,大的框架已经搭好了,稍微改改也就可以了。基本上是改图片名字,工程中加入自己的图片等很基础的工作,没有实际功能的修改。
    • 当时,时间大部分是花在easyar和视+相关文档的阅读,以及他们提供的例子的体验上,技术上花的时间也很少。当时,也确实感觉很好玩。不过,最后评估的结果,是不加入这块功能,所以也就没有继续了。
    • 很感谢大家的关注和关心。技术相关问题确实回答不了,请谅解。现在,也过去一年时间了,基本上忘记光了,要搞的话,也需要从零开始看文档。当时,用到的所有资料都在上面提到的链接里面了,现在能够正常运行起来都不知道,苹果每年都在更新,一个月不跟进就会落后,何况一年多没碰这一块了。不过当时是可以的,上面那些截图,都是通过实际的Demo拍照来的。

    相关文章

      网友评论

      • 90后大叔:大神,可以发下Demo吗?求教
      • 冯半仙儿:你好,可以加下qq吗,有问题请教谢谢417146146
        勇往直前888:@冯半仙儿 只是当时做demo的一次随手记,后来并没有应用于实际,你的问题可能回答不了啊。QQ745990824
      • hmj1993:简主 我不懂c++ 直接把demo照搬到实际开发中 其中ar界面的上个界面是地图界面 当扫描成功推出的时候 地图会闪屏 还会黑屏 不知道是什么原因
      • 这就是一个帅气的昵称好吧:将HelloAR中那个有色方块替换成自己想要的内容,具体要怎么做呢,比如我想在扫描之后显示一张图片
        余凡:for (int i = 0; i < frame.targets().size(); ++i) {
        AugmentedTarget::Status status = frame.targets()[i].status();
        if(status == AugmentedTarget::kTargetStatusTracked){
        // 加载模型成功

        Matrix44F projectionMatrix = getProjectionGL(camera_.cameraCalibration(), 0.2f, 500.f);
        Matrix44F cameraview = getPoseGL(frame.targets()[i].pose());
        ImageTarget target = frame.targets()[i].target().cast_dynamic<ImageTarget>();
        renderer.render(projectionMatrix, cameraview, target.size());
        }
        }
        这个方法里面 不过怎么写要看看
        hmj1993:简主 我不懂c++ 直接把demo照搬到实际开发中 其中ar界面的上个界面是地图界面 当扫描成功推出的时候 地图会闪屏 还会黑屏 不知道是什么原因
        hmj1993:你是怎么实现的呢 我是扫描成功之后抛出了一个通知 不知道有没有什么其他的方法

      本文标题:EasyAR的一次学习经历

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