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 如果遇到破解问题可以与 ...
随机推荐
- 开发中少不了的Fun -- 前端本地存储
存储sessionStorage function setSessionStore (name, content) { if (!name) return if (typeof content !== ...
- vue2 v-for
- IMEI手机串码和serialno
IMEI 1.IMEI是什么 国际移动设备识别码(International Mobile Equipment Identity number,IMEI),俗称“手机串号”.“手机串码”.“手机序列号 ...
- 老男孩Python==基础数据类型考试题
转载 # Python基础数据类型考试题 # 考试时间:两个半小时 满分100分(80分以上包含80分及格) # 一,基础题. # 1, 简述变量命名规范(3分) # 1.变量由字母.数字.下划线任意 ...
- 牛客练习赛53 (E 老瞎眼 pk 小鲜肉) 线段树+离线
考试的时候切的,类似HH的项链~ code: #include <bits/stdc++.h> #define ll long long #define M 500003 #define ...
- 【概率论】4-1:随机变量的期望(The Expectation of a Random Variable Part I)
title: [概率论]4-1:随机变量的期望(The Expectation of a Random Variable Part I) categories: - Mathematic - Prob ...
- rep stos ptr dword es:[edi]
今天读代码时,忽然跳出如下一条指令==>>汇编代码: rep stos dword ptr es:[edi] 在网上查了相关资料显示:/************************** ...
- mysql 运行中 偶尔 报错 2002 也许是这个问题,内存不足导致的
配置都是正常,最终发现内存使用率高达90%多,加配置后解决问题(升级服务器配置) 加之前是2核4g ,升级配置后 4核8g
- JavaWeb_(Spring框架)注解配置
系列博文 JavaWeb_(Spring框架)xml配置文件 传送门 JavaWeb_(Spring框架)注解配置 传送门 Spring注解配置 a)导包和约束:基本包.aop包+context约束 ...
- Robot Framework(十五) 扩展RobotFramework框架——远程库接口
4.2远程库接口 远程库接口提供了在运行Robot Framework本身的机器上运行测试库的方法,以及使用除本机支持的Python和Java之外的其他语言实现库的方法.对于测试库,用户远程库看起来与 ...