Unity用Vuforia做AR实现脱卡效果

2023-11-19

有时在识别目标丢失后我们仍希望虚拟物体能够出现在摄像机前,或者到一个特定的位置,我们能对其进行操作,这就是脱卡功能。

自带的脱卡功能应该是ExtendedTracking:允许模型在识别图丢失的时候还存在,位置不变(在丢失的时候的位置,这样也就允许了可以近距离观看模型,就算是丢是识别图也不要紧。

如果要使用ExtendedTracKing,ImageTarget下的ImageTargetBehaviour 勾选Enable Extended Tracking


这次介绍的脱卡功能和ExtendedTracking有区别,这次的脱卡功能是,识别图丢失后,模型到摄像机前面一个固定的位置,可以对模型做一些操作,单击旋转等。

 

注:下文介绍的脱卡功能和ExtendedTracking 最好不要同时使用。

下文介绍的脱卡实现的原理,是在识别丢失后,将3D模型从ImageTarget的子物体变成ARCamera的子物体,在识别图识别到后再将3D模型的父物体变成ImageTarget

这里使用的Vuforia6.2的版本,Unity2017.1.0f3。

1.设置ARCameraImageTarget,到能够合适的显示3D模型的位置,如果识别图是白色的,则需要在

Assets-Editor-Vuforia-ImageTargetTextures-xx(DatabaseName) 中,找到识别图,将其TextureShape改成2D即可。

2.修改脚本,将ImageTarget自身的DefaultTrackableEventHandler移除,并复制成一个新的脚本,然后将新的脚本拖到ImageTarget下替代原来的DefaultTrackableEventHandler。(我这里的名字叫My_DefaultTrackableEventHandler

 

3.void OnTrackingFound() void OnTrackingLost()

这两个函数就是,在识别图识别出来时调用的函数 和 在识别图丢失时调用的函数。

有好几中方法去实现脱卡功能,可以在识别出目标时销毁之前的内容,重新加载,然后再目标丢失后用另一个值渲染一个层的摄像机去渲染脱卡之后的模型;也可以记录位置,然后进行移动。这里用后一种方法。

 

最终实现:脱卡后模型移动到一个位置并朝着用户,移动到特定位置后,单击模型会将模型散开,再次单击模型会拼起来。

核心函数:OnTrackingLost() 在识别图丢失后的执行函数(执行一次)

     OnTrackingFound() 在识别图找到后执行的函数(执行一次)                            

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

(射线检测函数,需要碰撞)

 

 

由于需要获得模型的初始和结束位置,以及要判断是否是第一次识别出来买模型,需要添加以下代码:

  #region PUBLIC_MEMBER_VARIABLES

 

        public GameObject Robot;   //机器人

        public GameObject AimObject; // 脱卡之后的模型位置的空物体

 

        #endregion

       

        #region PRIVATE_MEMBER_VARIABLES

 

        private TrackableBehaviour mTrackableBehaviour;

        private bool hasFirstLoad = false; //是否是第一次识别到物体

 

        #endregion // PRIVATE_MEMBER_VARIABLES

 

void Update()

{

//Update中执行一些逻辑

}

 

由于在启动以后OnTrackingLost()会调用(由于一开始没有找到识别图),而且这时是没有模型的,所以在O

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity用Vuforia做AR实现脱卡效果 的相关文章

  • Windows11右键菜单太烦人,简单几步即可恢复旧版完整菜单

    Windows 11已经推出一段时间了 相比Windows 10 界面确实美观了不少 同时也有很多新的设计 但是并不是每个人都能很快适应这种新设计 被广泛吐槽的一点就是右键菜单的改变 增加了显示更多选项 原来的很多右键选项被隐藏起来了 原本
  • tkinter 的界面美化库:ttkbootstrap 使用教程

    嗨害大家好鸭 我是芝士 tkbootstrap 是一个基于 tkinter 的界面美化库 使用这个工具可以开发出类似前端 bootstrap 风格的 kinter 桌面程序 如果会 tkinter 学习起来就会非常简单 如果不会的话只要先花

随机推荐

  • opencv python contours结构

    opencv python contours结构 经常需要构造 如果没记住内部具体结构 需要到网上处找 且找不到 就要自己findcontours然后打印出来 比较麻烦 contours的结构 比如一个box有xmin ymin xmax
  • 今天发现一个好网站 http://www.phpv.net/

    该网站的空间速度快 资料丰富 容易搜索 更新快 爽
  • 运维之道

    方法一 rc local 1 由于在centos7中 etc rc d rc local的权限被降低了 所以需要赋予其可执行权 chmod x etc rc d rc local 2 赋予脚本可执行权限 假设 opt script auto
  • pytorch训练error

    问题一 在pytorch上训练分割模型时 出现cuda runtime error 59 device side assert triggered at xxx 解决办法 通过CUDA LAUNCH BLOCKING 1 python3 m
  • python----小数点精度控制round()

    python版本也会影响结果 python2把x四舍五入为远离0的最近倍数 如round 0 5 1 round 0 5 1 python3则会把x四舍五入为最近的偶数倍数 如round 0 5 0 round 1 5 2 0 round
  • 查看解决inode使用率100%的问题

    今天登录后端服务器查看 发现程序报错日志中存在磁盘空间不足的情况 df h后发现磁盘空间充足 df ih发现 app分区inode使用率100 开始查找原因 进到 app 下 然后 for i in do echo i find i wc
  • hashMap常见的问题解答

    1 HashMap的数据结构 hashmap采取数组 链表的数据结构 在遇到哈希冲突的时候采用链表结构来解决哈希冲突 jdk1 8后分成了两种情况 bucket中元素个数大于8的时候 自动转换为红黑树的结构 目的是因为链表的查询速度比较慢
  • vue+element table 合并列

    vue element table 合并列
  • 【TCP/IP详解 卷一:协议】TCP的小结

    前言 TCP学习的综述 在学习TCP IP协议的大头 TCP协议 的过程中 遇到了很多机制和知识点 详解中更是用了足足8章的内容介绍它 TCP协议作为 应用层 和 网络层 中间的 传输层协议 既要为下面的网络层协议保证连接的可靠性 IP协议
  • 通过Jib将Springboot应用通过Docker部署

    一 安装Docker 1 更新Yum包 yum update 2 卸载旧版本 如果安装过旧版本的话 1 删除软件包 yum remove y docker docker client docker client latest docker
  • 【Espruino】NO.14 温湿度传感器DHT11

    http blog csdn net qwert1213131 article details 35828873 本文属于个人理解 能力有限 纰漏在所难免 还望指正 小鱼有点电
  • 环境变量是如何生效的——以Linux操作系统为例

    什么是环境变量 从我们学习Java开始 就经常接触一个东西 PATH 也叫环境变量 环境变量是操作系统提供给应用程序访问的简单 key value字符串 windows linux mac都有同样的概念 环境变量的作用 当我们拥有一个可执行
  • Git版本回退并强制推送到远端

    Git版本回退并强制推送到远端 本文参考廖雪峰的Git教程 前言 本文章解决问题的前提是本人不小心修改了本地代码仓库的最外层目录权限 不知道原权限是什么 导致本地git提示几十个文件被修改过 实际内容并未修改 可能是目录权限改变被git识别
  • C++ - 继承 一些 细节 - 组合 和 继承的区别

    前言 本篇博客基于 C 继承 chihiro1122的博客 CSDN博客 之上列出一些例子 如果有需要请看以上博客 继承的例子 例1 上述例子应该选择 C 首先不用说 p3肯定是指向 d 对象的开头的 p1 也是指向 d 对象的开头的 不同
  • 机器学习即服务:关于情感分析的10个应用场景和4个服务

    情感分析是什么 用户生成内容的爆炸式增长和档案材料的数字化创造了大量的数据集 其中包含了许多人对几乎每一个主题发表的观点 在某些情况下 该数据的生成是通过用户界面构造的 例如 在电子商务网站上处理客户评论相对容易 因为用户需要在产品评论的文
  • C++模板基础(六)

    类模板与成员函数模板 使用 template 关键字引入模板 template class B 类模板的声明与定义 翻译单元的一处定义原则 template
  • html5页面刷新时显示新数据,用ajax使网页不刷新就可以显示新数据

    用AjaxPro的 1 在引用中添加引用AjaxPro dll 我用的是这个 支持asp net 1 1 和asp net 2 0 2 web config中建立HttpHandler 3 新建一个类Demo 这个类里面提供了查询数据库和输
  • 怎么在html中复制粘贴图片,如何复制其他网页上的文章和图片

    首先 我们并不建议直接复制别人的内容 以免侵权 但是不排除在某些情况下 需要将其他网页上的内容完整的复制到你的网站中 比如 将自己的微博文章复制到自己的网站 大部分人都知道这个简单的方法 先选中目标文字按CTRL C快捷键 然后再网站后台文
  • AngularJS学习之全局API(应用程序编程接口)

    1 AngularJS全局API用于执行常见任务的Javascript函数集合 比较对象 迭代对象 转换对象 2 全局API函数使用angularJS对象进行访问 以下是通用API函数 angular lowercase 转换字符串为小写
  • Unity用Vuforia做AR实现脱卡效果

    有时在识别目标丢失后我们仍希望虚拟物体能够出现在摄像机前 或者到一个特定的位置 我们能对其进行操作 这就是脱卡功能 自带的脱卡功能应该是ExtendedTracking 允许模型在识别图丢失的时候还存在 位置不变 在丢失的时候的位置 这样也