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 如果遇到破解问题可以与 ...
随机推荐
- php截取特定字符前面或后面的内容
1.php 截取特定字符后面的内容 可以使用函数strripos,获取一个字符串在另一个字符串中第一次出现的位置. $number = '1_0'; $result = substr($number, ...
- Pycharm----默认字体大小的设置
设定前 设定后,修改字体的大小为:15号 设置方式:按照截图操作选择后,点击”apply“即可
- JS 日期格式化,留作参考
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python自动华 (二)
Python自动化 [第二篇]:Python基础-列表.元组.字典 本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初 ...
- 016_linux驱动之_原子操作
1. 原子操作 原子操作指的是在执行过程中不会被别的代码路径所中断的操作. 常用原子操作函数举例: atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0 a ...
- 创建第一个springboot项目,maven project
- java上传文件夹
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用.此控件PC全平台支持包括mac,linux系统的文件上传,文章末尾将附上控件下载与教程链接 ...
- CF788A Functions again dp
求一个最长子段和就完了,可以出T1? code: #include <bits/stdc++.h> #define N 100006 #define ll long long #defin ...
- 51nod 1086
https://www.cnblogs.com/TnT2333333/p/6879709.html 二进制优化多重背包 怎么用二进制优化多重背包,举一个例子就明白了. 如果要放n个苹果,可以将n个苹果 ...
- c#简单的SQLHelp
public abstract class SQLHelper { //只读的静态数据库连接字符串 //需添加引用System.Configuration; public static readonl ...