归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:3884回复:9

(Unity3d)Vuforia开发高阶二-虚拟按钮(第四部分)

楼主#
更多 发布于:2015-06-25 22:43
第四部分:
虚拟按钮判断原理。
知道这个原理之后,你才能更好地设计出虚拟按钮。
Vuforia采用的注册算法也是基于自然特征点。在Vuforia官网的TargetManager中,可以看到每个标志的特征点情况,并且通过其他文章也可以知道怎么才能提高Target的识别率,
参见:

demo中的Target为例,
原图:

图片:图片9.jpg


特征点检测图:

图片:图片10.png



注意四个虚拟按钮部分的特征点分布,没错,特征点数量非常多,信息量比较大,因此这几个部位作为虚拟按钮,对于识别准确率来说会有很大的帮助。

总结:虚拟按钮部分要选择特征点比较丰富的部位。

当你用手指或者其他物体遮挡住虚拟按钮之后,这部分的特征点信息就会丢失或者改变,从而导致该部位匹配不正确,因此算法就会检测出哪个部分有触发。这也是为啥虚拟按钮会有位置计算的情况。虽然代码中是根据name触发,但是根本还是通过位置,最底层是自然特征点。
AR学院(www.arvrschool.com),从这里感触未来!

欢迎分享

buptidsuper
骑士
骑士
  • UID33
  • 粉丝0
  • 关注0
  • 发帖数13
  • 社区居民
沙发#
发布于:2015-09-06 16:53
您好! 我想问一个关于虚拟按钮的问题,如您所说虚拟按钮触发通过检测位置信息改变而触发,而unity中选择虚拟按钮可以有平面和立方体以及其他物体,但是亲测只有平面的虚拟按钮可以实现,也就是说只有与ImageTarget同一平面的虚拟按钮可以触发,空间z轴方向的并不能。假如我想实现空间深度触发虚拟按钮,该怎么实现?
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
板凳#
发布于:2015-09-06 18:00
buptidsuper:您好! 我想问一个关于虚拟按钮的问题,如您所说虚拟按钮触发通过检测位置信息改变而触发,而unity中选择虚拟按钮可以有平面和立方体以及其他物体,但是亲测只有平面的虚拟按钮可以实现,也就是说只有与ImageTarget同一平面的虚拟按钮可以触...回到原帖
空间深度怎么理解?是指按钮与ImageTarget不是同一个平面吗?如果这样的也是不能判断Z轴深度的。因为Vuforia VB的功能实现原理也是通过检测自然特征点来完成的。
AR学院(www.arvrschool.com),从这里感触未来!
buptidsuper
骑士
骑士
  • UID33
  • 粉丝0
  • 关注0
  • 发帖数13
  • 社区居民
地板#
发布于:2015-09-07 10:10
对 是指Z轴方向的深度 按vuforia的虚拟按钮Mesh Filter可以选择Plane、另外还有cube、Capsule等三维深度的“按钮”,但是选择这些之后并不能触发,如图。

另外请问,您有没有做过其他sdk的三维深度虚实结合交互?有没有什么实现方法?
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
4楼#
发布于:2015-09-07 21:57
buptidsuper:对 是指Z轴方向的深度 按vuforia的虚拟按钮Mesh Filter可以选择Plane、另外还有cube、Capsule等三维深度的“按钮”,但是选择这些之后并不能触发,如图。

另外请问,您有没有做过其他sdk的三维深度虚实结合交...
回到原帖
这些只是Unity自带的网格而已,VB只能支持plane。其他的SDK貌似也没有。如果要做虚实遮挡,Vuforia的有的功能可以完成,比如Multiple Target
AR学院(www.arvrschool.com),从这里感触未来!
liumengjie
侠客
侠客
  • UID543
  • 粉丝0
  • 关注2
  • 发帖数10
  • 社区居民
5楼#
发布于:2016-01-20 22:37
归海大神,我联系做了虚拟按钮。我并没有遮挡按钮,但是OnButtonPressed和OnButtonReleased就会执行。
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
6楼#
发布于:2016-01-20 23:39
liumengjie:归海大神,我联系做了虚拟按钮。我并没有遮挡按钮,但是OnButtonPressed和OnButtonReleased就会执行。回到原帖
那是因为太灵敏了,有的位置可能误认为是遮挡了,你一个一个按钮的测试
AR学院(www.arvrschool.com),从这里感触未来!
liumengjie
侠客
侠客
  • UID543
  • 粉丝0
  • 关注2
  • 发帖数10
  • 社区居民
7楼#
发布于:2016-01-21 09:03
归海一啸:那是因为太灵敏了,有的位置可能误认为是遮挡了,你一个一个按钮的测试回到原帖
我找到问题了,就是我拿摄像头的手出现晃动,那两个方法就会执行,怎么才能避免这种情况呢?
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
8楼#
发布于:2016-01-21 10:11
liumengjie:我找到问题了,就是我拿摄像头的手出现晃动,那两个方法就会执行,怎么才能避免这种情况呢?回到原帖
晃动不是最根本的原因,根本原因是因为你遮挡了你设置的VB,避免这种情况就是把VB的精度调低一点试试
AR学院(www.arvrschool.com),从这里感触未来!
刹那灬
新手
新手
  • UID2245
  • 粉丝0
  • 关注0
  • 发帖数13
  • 社区居民
9楼#
发布于:2016-08-08 15:10
我也想问下,运行后移动识别图会执行OnButtonPressed,就算位置可能误认为遮挡,但为什么总是执行第一个放上去的虚拟按钮的switch下的语句,我再加了一个按钮,对应的语句放在第一个按钮之前,有break,但照样还是执行第一个按钮的语句~
游客

返回顶部