图钉功能总算做出来了,发现真的是因为没认真看手册导致的=。=【跪

最后的代码很简单,但是过程中看了不少camera/tracker相关的东西,感觉需要整理记录一下

图钉功能记录:

目标:实现用ARCamera扫描处物体后点击图钉实现物体固定,AR扫描功能暂停(但是摄像头还是开启的)

实现预想:将摄像头上关于AR的脚本禁用,根据easyAR数据流,应该集中在ARCamera/CameraDevice/imagetracker这三个的behavior中:

首先看看,在预设体文件夹中先看下ARcamera的结构

其中

那接下去看看

ARCameraBaseBehaviour Class

它的描述是这样的:

ARCameraBaseBehaviour是在AR场景中控制ARCamera的component。

带有ARCameraBaseBehaviour的物体是RenderCamera的父节点,ARCamera和跟踪到的Target之间的相对位置 (transform)由EasyAR控制。

通过在FrameUpdate事件中过滤Target pose(从Frame中获取的TargetInstance的Rotation和Position)可以降低target抖动。

可以通过关闭 RenderReality 来禁止 camera 背景显示。

他的类中函数大概有这些:

几个重要函数的功能如下:

看了一下,有几个地方还是很有意思的。

后面这两个是让我们更加理解easyAR的工作原理的,好像并不能帮我们的达成目的,而这个RenderReality中“camera图像不会显示”打动了我。

那就试试看咯。

【手机忘记截图了】

反正测试的结果是点击图钉后,摄像机都关了,和我们的目标效果不一致,那就先放一边。

好像ARcamera就没什么看的了,那接下去看看cameradevice有没有什么可能达成目标的语句可以用:

CameraDeviceBaseBehaviour Class

CameraDeviceBaseBehaviour是在AR场景中控制CameraDevice的component。

CameraDevice工作在它自己的线程上。你可以Open/Close camera,也可以在任意时间关闭并重新开启一个不同的camera 设备或是设置不同的参数。

StartCapture/StopCapture用来开始和停止camera预览,这两个操作不会影响之前所设置的camera参数。camera的控制方法与系统API提供的方法类似。

CameraDevice是tracker以及其它算法的输入源。CameraDeviceBaseBehaviour包含AR链条的入口, OpenAndStart 。

从介绍上看就感觉很有希望啊!再往下瞅瞅:

这四个函数有意思啊,试试看呗:

【忘记截图again】

OpenAndStart()/Close()与StartCapture()/StopCapture()虽然实际上的后台效果是不一样的,

但是但从我们想要的目标测试出来的效果是一样的——点击图钉后,手机画面会停留在捕获的最后一帧上,仿佛静态画面。并不是目标效果。

那怎么办,只能试试看imagetracker 看看能不能取消跟踪吧——

ImageTracker实现了image target的检测和跟踪。

ImageTracker检测和跟踪 ImageTarget 。你需要首先调用 attachStreamer 将 FrameStreamer 连接至ImageTracker,然后 FrameStreamer 的输出图像将被tracker使用。

你可以通过start/stop来开始和停止跟踪。start和stop是非常轻量的调用。

在Target可以被ImageTracker跟踪之前,你需要通过异步方法loadTarget/unloadTarget或同步方法loadTargetBlocked/unloadTargetBlocked将它载入。

如果需要非阻塞的调用,推荐使用异步的接口。可以通过传入接口的回调来获取load/unload的结果。

还真的有!瞬间感动哭了,而且是非常轻量的调用,代码之神一定是看我傻乎乎的看了那么多不相关的东西没忍住给我答案了哈哈哈

最后还是没有图=。=

必须要说easyAR的文档手册写的还是很通俗易懂好操作的,学习学习!

所以就这么达到了目标。回想起来还是感觉被自己蠢哭了【尴尬】

继续努力吧

easyAR图钉功能实现相关的更多相关文章

  1. 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox

    原文 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox 很久没自己写写心得日志与大家分享了,一方面是自己有点忙,一方面是自己有点懒,没有及时总结.因为实践是经验的来源,总结 ...

  2. 【翻译】Tusdotnet中文文档(3)自定义功能和相关技术

    自定义功能和相关技术 本篇按照如下结构翻译 自定义功能 自定义数据仓库 相关技术 架构和总体概念 自定义数据仓库 tusdotnet附带一个存储库TusDiskStore,它将文件保存在磁盘上的一个目 ...

  3. Netsharp快速入门(之18) 平台常用功能(工作区相关)

    作者:秋时  转载须说明出处 第6章     平台功能 6.1     部件二次开发设置 6.1.1  工具栏管理 1.从单据二次开发-工具栏管理进入 2.主要设置显示,对应的方法名或设置权限相关操作 ...

  4. vi代码智能提示功能及相关配置

    vim是一款支持插件.功能无比强大的编辑器,无论你的系统是linux.unix.mac还是windows,都能够选择他来编辑文件或是进行工程级别 的coding.如果能把vim用好了,不仅编程效率能得 ...

  5. Burp Suite之截断代理功能及相关设置(一)

    Burpsuite 1.burpsuite 简介2.设置代理3.Target4.爬网模块5.扫描模块6.扩展模块7.intrude8.Repeater9.Sequencer10.Decoder11.C ...

  6. sqlserver2012的审计功能的相关理解

    1.sqlserver2012可以做实例的审计,以及数据库的审计,基本包括了所有的操作.可以符合我们的要求.   2.审计功能需要实例级别的配置数据库级别的配置,实例上建立“审核”,数据库上建立“数据 ...

  7. IOC功能以及相关的配置

    功能: 控制反转,将对象的创建权反转给Spring可以解决程序耦合性高的问题,大概的意思就是将程序运行时所需要的资源.数据,全部让Spring供给,防止程序与程序之间联系过高,而出现耦合性高的问题. ...

  8. NodeJS系列~第一个小例子,实现了request.querystring功能

    返回目录 百度百科上: Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始,在Node中,Http是首要的.Node为创建http服务器作了优化,所以在网上 ...

  9. 私有Pods封装个推SDK功能(解决方案)

    一:运用场景 公司中同时有好几个APP在开发,而且每个APP都有使用到集成个推SDK来处理消息的功能,以前的做法是每个APP都去集成并在AppDelegate处理一些SDK的代码,包含个推基础配置.消 ...

随机推荐

  1. 开始学习机器学习,从Ng的视频开始

    时隔开5个月,忙完了考研和毕设后终于有时间搞自己想搞得,研究生导师方向是图像处理与机器学习结合,重新开工 何为机器学习? 对于机器学习(Machine Learning)的定义大体上有两种,第一种是美 ...

  2. Paxos Made Simple(译)

    The Paxos algorithm, when presented in plain English, is very simple. 我叫Leslie Lamport,我最屌. 1. 简介 用于 ...

  3. ecshop加入购物车效果(各个页面)

    ecshop中点击加入购物车出现下图 通过以下代码改成下图效果 1.后台网店设置 购物车确定提示  选择为“提示用户,点击“确定”进购物车” 2.打开js/common.js  104行就是funct ...

  4. java.toString() ,(String),String.valueOf的区别

    在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结. 常用的方法有Object#toString(),(String)要转换的对象,S ...

  5. 从Owin到System.Web.Http.Owin的HttpMessageHandlerAdapter看适配器模式

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  6. 阿里巴巴的datasource

    阿里巴巴的datasource:<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSourc ...

  7. StructureMap经典的IoC/DI容器

    StructureMap是一款很老的IoC/DI容器,从2004年.NET 1.1支持至今. 一个使用例子 //创建业务接口 public interface IDispatchService { } ...

  8. java中String与StringBuffer拼接的区别

    学习笔记: 1.String拼接会创建一个新的String对象,存储拼接后的字符串: StringBuffer拼接是直接在本身拼接,会即时刷新. 2.String只能拼接String类型的字符串: S ...

  9. php根据经纬度获取城市名

    /*php根据经纬度获取城市名*/ function get_my_addr_infos(){ $ch = curl_init(); $timeout = 5; $lat = $list['info' ...

  10. 利用 Traceview 精准定位启动时间测试的异常方法 (工具开源)

    机智的防爬虫标识原创博客地址:http://www.cnblogs.com/alexkn/p/7095855.html博客求关注: http://www.cnblogs.com/alexkn 1.启动 ...