美文网首页
iOS Vuforia ImageTargets官方demo的学

iOS Vuforia ImageTargets官方demo的学

作者: 笙笔记 | 来源:发表于2017-02-24 13:53 被阅读0次

             首先来说一下我们公司的需求:有雷同的码农可以往下看,我们公司比较坑想让我写一个AR识别博物馆藏品功能这个比较蛋疼,(就是类似与扫二维码然后弹出详细信息的功能)。

    当我看了官方demo的时候我发现有两个可以研究,说明一下我研究的是VuforiaSamples-6-2-61和vuforia-sdk-ios-6-2-6官方下载

    这个是demo跑起来的首页

    demo运行步骤:

    1.demo识别图片都在【vuforia-sdk-ios-6-2-6 ->media】文件里面(对于大神这些都不是个事,但对于我这种菜菜就是这个事)

    里面有没有功能的识别图片,对应的识别就可以了,再不行你就不要开发了回家种地吧。

    2.ImageTargets功能,这个功能官方的是上传一张图片,识别成功以后会显示一个3D模型,对于显示模型后面我给改成跳转到另一个Controller。(所以这个功能比较符合我们公司的需求)

    3VuMark功能这个比较神奇,我之所以没有采用,问题就处在.svg图上,我们美工不会,我也没办法,下面就介绍ImageTargets功能里面的一些简单方法

    官方的初始化方法啥的就不说了,照着写就行了,我说一个最关键的方法在ImageTargetsEAGLView.mm文件中

    4.这个方法是AR相机不停地识别扫描,然后渲染的方法

    - (void) renderFrameWithState:(const Vuforia::State&) state projectMatrix:(Vuforia::Matrix44F&) projectionMatrix {}

    在介绍之前我还要简单的说一下使用方法:在识别界面手指双击会弹出菜单有三个Switch其中Flash就是开启闪光灯,其他两个就是在这个方法面用到的。

    上面方法中有

    if (offTargetTrackingEnabled) {

    }else {}这一类的如果Switch(ExtendTracking)这个按钮出于开启状态,程序就会走if里面否则就是else,默认是else.

    (const Vuforia::State&) state:这个是识别跟踪到数据状态(个人理解,具体是啥我也不知道)里面包含了,你上传到高通服务器上图片的信息。

    (Vuforia::Matrix44F&) projectionMatrix:这个是将要显示的模型矩阵。(就是3D模型)

    解释一下这个for循环:      

    for (int i = 0; i < state.getNumTrackableResults(); ++i) {【当你去识别你的图片的时候state才会不为空for循环才会被执行,否则里面的代码是不会被执行的】

    其中state.getNumTrackableResults()这可是一个好东西呀是相机跟踪到的所有结果的数量(个人理解)

    打印NSLog(@"state%d",state.getNumTrackableResults());这个你会发现跟你上传到服务器上面识别的图片数量一样,此时作为开发人员你就应该有想法了。

    const Vuforia::TrackableResult* result = state.getTrackableResult(i);这一句

    const Vuforia::Trackable& trackable = result->getTrackable();

    这两句就是得到当前正在识别的可追踪的对象数据

    打印NSLog(@"state %s",trackable.getName());

    NSLog(@"state %d",trackable.getId());你会发现你上传的图片名字和id,这正是你正在扫描的那张图片OK,

    现在一个重大的问题解决了,首先你知道协议方法是哪一个,如何区分你所上传的图片。

    5.下面介绍一下

    识别以后每次回调更新AR的方法,这方法自然在ImageTargetsViewController.mm控制器中

    我理解成数据更新

    这个里面人家原有的看不懂,你可以不用动,直接在下面将上面的for循环写在后面

    报错

    会报错原因是少了头文件#import<Vuforia/TrackableResult.h>添加以后应该就没啥问题了,

    然后你就可以在控制区中拿到你想要区分数据。

    6.下面就可以实现我们自己的东西了首先你要干的事情就不要再demo定义的方法里面实现了,他扫描的速度很快,异步啥的人家已经搞好,你现在要做的就是再开一个线程,然后知道如何启动AR扫描,如何关闭AR,暂停等。

    启动:NSError *error = [[NSError alloc]init];

    [vapp startAR:Vuforia::CameraDevice::CAMERA_DIRECTION_BACK error:&error];

    停止:在- (void)viewWillDisappear:(BOOL)animated里面你可以参考一下,demo里面的

    暂停:- (void) pauseAR {}调这个

    恢复:- (void) resumer{}调这个

    7.最后重点是Trackable.h文件这里面都是识别到的信息。你都可以用trackable.getId()这种方式访问。

    时间匆忙来不及细细解说,都是我个人的看法,要是有不对的地方,请大家多多帮我指正,我是一个小菜菜,请不要用大神的标准来衡量,记住我很菜菜。

    相关文章

      网友评论

          本文标题:iOS Vuforia ImageTargets官方demo的学

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