Vuforia笔记1(Vuforia8.0.10与Unity2018.3.6f1)
一丶ARCamera(AR的灵魂)
1.World Center Mode
- SPECIFIC_TARGET:制定一个物体作为世界中心坐标
- FIRST_TARGET:摄像机所照射到的第一个需要识别的目标为世界中心坐标
- CAMERA:摄像机为世界中心的坐标
2.Open Vuforia Engine Configuration
a.Camera Device Mode:
- MODE_OPTIMIZE_QUALITY:质量优先
- MODE_OPTIMIZE_SPEED:速度优先
- MODE_DEFAULT:默认
b.最大识别数量:
- MaxSimultaneous Tracked Images:最大识别的图片数量
- MaxSimultaneous Tracked Objects:最大识别的物体数量
c.Camere Direction:
CAMERA_DEFAULT:默认摄像机
CAMERA_BACK:指定后置摄像头
CAMERA_FRONT:指定前置摄像头
特别注意:电脑端调试时打开的都是前置摄像头
d.Device Type:
Handle:手持
Difital Eyewear:眼镜
Phone+Viewer:用于MR(混合现实)
二丶Default Trackable Event Handler脚本(后续的开发只需要继承ITrackableEventHandler接口即可)
// 找到了需要识别的物体
protected virtual void OnTrackingFound();
// 丢失了需要识别的物体
protected virtual void OnTrackingLost();
// 状态切换
public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
{
m_PreviousStatus = previousStatus;
m_NewStatus = newStatus;
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
OnTrackingFound();
}
else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
newStatus == TrackableBehaviour.Status.NO_POSE)
{
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
OnTrackingLost();
}
else
{
// For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND
// Vuforia is starting, but tracking has not been lost or found yet
// Call OnTrackingLost() to hide the augmentations
OnTrackingLost();
}
}
我们实现功能只需在OnTrackingFound和OnTrackingLost两个函数上实现即可
Turn off Behaviour脚本
链接到设备的摄像头后销毁Mesh Renderer和Mesh Filter组件
三丶功能
- Image Target:这是最常用、也是最简单的识别对象,即单一静态的平面图像
- Multi-Targets(立方体识别):多对象识别,可以同时识别多张Image Targets,并且可以把它们和几何立体物体结合起来,比如一个纸盒子,或者任意形状的平面
- Cylinder Targets(圆柱体识别):是形状类似于圆柱形的图片,可以将这些图片贴到一些圆柱形物体上比如瓶子、杯子等等,进行识别
- Text Recognization:文字识别,但是很遗憾,不支持中文汉字识别,只支持英文(但同时官方文档给了下面的提示)
而这里使用的是Vuforia8.0.10,所以在这不推荐使用这个功能了
Object Recognization:实物识别
- Object Sacnner:对象扫描仪,目前只支持一部分的三星和谷歌手机,所以设备有很大的限制,因此我暂时不会使用这个功能
- Scan3D:在Google Play下载,可以扫描真实世界的物体
- Vuforia Engine数据库最多可以容纳20个对象目标
VuMark:这是Vuforia自己研发的一种新型条形码,并且被称为下一代条形码,你能够自己随意设计这种条形码的样式,并且在其中融入相关的数据信息(自由度高);可用于识别零件和设备等
Model Target: 模型目标使使用Vuforia Engine构建的应用程序能够根据对象的形状识别和跟踪现实世界中的特定对象
1.各种各样的物体可以用作 模型目标,从家用电器和玩具到车辆,到大型工业设备甚至建筑地标
2.对象必须:
几何刚性(即它不能变形或可延展)。
呈现稳定的表面特征(不支持光亮表面)。
根据其所处的环境进行修复。
Virtual Buttons(虚拟按钮):这是唯一一个交互的功能(与现实交互) 虚拟按钮部分要选择特征点比较丰富的部位
1.接口:VirtualButtonEventHandler和IVirtualButtonEventHandler
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
实现功能时和普通按钮一样,可实现长按短按,双击等操作
Cloud Recognition:云识别 (免费1000个标记)
1.Server Access Keys:用来上传图片和管理图片
2.Client Access Keys:APP中图片识别服务而搜索数据库
3.元数据:元数据保存Json文件地址,而数据保存在Json文件中
4.Book案例(官方定位的最佳体验)
Ground Plane Detection:(Smart Terrain的一部分)
1.检测和跟踪水平表面(地板)
2.在水平表面上生成3D物体
3.但暂时也是有一定的设备限制
Vuforia Fusion Supported Devices
4.可用于家庭家具购物和应用游戏和设计可视化等
User Defined Targets(用户自定义目标):
1.实现原理:通过两个新的类::ImageTargetBuilder 和 ImageTargetBuilderState 实现创建
2.UserDefinedTargetEventHandler脚本
三个选项:
1.Start scanning automatically:当开始摄像头,自动检测摄像头画面的特征点
2.Stop tracker while scanning:当扫描的时候自动终止跟踪,当停止扫描,跟踪自动开启。
3.Stop scanning after creating a target:当新的target创建之后,自动停止扫描
PS:默认选择第一项,这种方式一直扫描状态,当Target创建之后会被立刻跟踪。因此,模型出现更快。并且选择这种,可以识别多个标志。
四丶图片识别机制
通过检测自然特性点的匹配来完成的,将Target Manager中的Image检测出的特征点保存在数据库中,然后实时检测初真实图像中的特征点与数据库中模板图片的特征点数据进行匹配
1.服务器对上传图片进行灰度处理,图片变为黑白图像
2.提取黑白图形特征点: 图片中尖锐可辩、轮廓分明的地方为特征点
3.将特征点数据打包;
4.程序运行时对比特征点数据包
注意事项
1.最好时无光泽,较硬材质的卡片
2.包含丰富的细节,较高的对比度(颜色相差较大)以及无重复的图像
3.整幅图片的8%宽度为功能排斥缓冲区,不会被识别
4.带有轮廓分明、有棱角的图案
5.图像目标应在漫反射灯光照射的适度明亮的环境中,图片表面应被均匀照射
作者:Ligo丶
出处:https://www.cnblogs.com/Ligo-Z/
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
Vuforia笔记1(Vuforia8.0.10与Unity2018.3.6f1)的更多相关文章
- CentOS7 编译安装 Nodejs (实测 笔记 Centos 7.0 + node 0.10.33)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...
- Time.deltaTime 的平均值在0.1-0.2左右
Time.deltaTime 平均值在0.1-0.2左右 低的在0.03 高的在0.3
- kafka0.9.0及0.10.0配置属性
问题导读1.borker包含哪些属性?2.Producer包含哪些属性?3.Consumer如何配置?borker(0.9.0及0.10.0)配置Kafka日志本身是由多个日志段组成(log segm ...
- pthreads 2.0.10 test
CentOS 6.3 cd /root mkdir pthreads //get php-5.6 and install zts version wget cn2.php.net/get/php-5. ...
- how to build apache log4cxx 0.10 by Visual Studio 201*
Chapter 1 Official Steps We are going to follow the steps here, http://logging.apache.org/log4cxx/b ...
- Microsoft.Bcl.Build 1.0.10 稳定版发布
Microsoft.Bcl.Build 1.0.10 稳定版发布 解决了之前 1.0.8 在未下载相应的Nuget Package 的情况下项目无法加载的情况 但由于 Microsoft.Net.Ht ...
- 小红伞和virtualbox5.0.10冲突
win7 sp1 64bit 旗舰版:virtual box 5.0.10 提示 error in supr3hardNtChildWaitFor……Timed out after 60001 ms ...
- Kafka 0.10.0
2.1 Producer API We encourage all new development to use the new Java producer. This client is produ ...
- DotNetBar v12.7.0.10 Fully Cracked
更新信息: http://www.devcomponents.com/customeronly/releasenotes.asp?p=dnbwf&v=12.7.0.10 如果遇到破解问题可以与 ...
随机推荐
- vs调试 iis发布之后的项目
方法一 启动vs 访问iis地址 即可调试 方法二 点击调试, 选择附加到进程 选择所有用户进程, 选择w3wp.exe ,附加 , 即可调试
- MySQL 锁(lock与latch)
一.什么是锁 锁机制用于管理对共享资源的并发访问,它是数据库系统区别于文件系统的一个关键特性. 数据库系统使用锁是为了支持对共享资源的并发访问,提供数据的完整性和一致性. InnoDB存储引擎锁的实现 ...
- Django-中间件实现1分钟内只允许三次访问
代码 class Throttle(MiddlewareMixin): def process_request(self, request): # 1. 拿到用户请求的IP # print(reque ...
- access函数
access函数是按照实际用户ID和实际组ID进行访问测试的.函数的定义如下: #include <unistd.h> int access(const char* pathname, i ...
- 在C语言中破坏函数调用堆栈
// 这段代码显示,在C语言修改函数的返回地址 int test1() { ; } int test2(int a) { *(&a-) = (int)test1; // 将返回地址修改为tes ...
- 解析NaN
此文为自译文,且第一次翻译,有不足之处. 原英文地址:https://en.wikipedia.org/wiki/NaN 我的理解 32位下二进制的 NaN 存储格式为s111 1111 1111 1 ...
- 自定义镜像mycentos
1.编写 1).Hub默认CentOS镜像是什么情况 2).编写Dockerfile文件 2.构建 3.运行
- pwn学习日记Day15 《程序员的自我修养》读书笔记
程序编译链接过程: 1.调用cc1程序,这个程序实际上就是GCC的C语言编译器,它将"hello.c"编译成一个临时的汇编文件"/tmp/ccUhtGSB.s" ...
- debian、ubuntu安装metasploit通用方法
网上有很多方法让去github上下载安装,这方法的确可以但是特别慢,更新也特别慢,这里写下比较快的方法 1.添加kali源 vim /etc/apt/sources.list 在原有源的基础上添加国内 ...
- 感知机算法及BP神经网络
简介:感知机在1957年就已经提出,可以说是最为古老的分类方法之一了.是很多算法的鼻祖,比如说BP神经网络.虽然在今天看来它的分类模型在很多数时候泛化能力不强,但是它的原理却值得好好研究.先学好感知机 ...