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

(Unity3d)Vuforia开发高阶五-Cylinder Target(圆柱体目标识别)(第一部分)

楼主#
更多 发布于:2015-07-09 22:55
前言:


识别的是3D物体,虽然在4.0中,Object Reco已经成为常规配置,对于不规则的形状能够很好识别。但是Cylinder的识别还是有应用场景的,至少Target处理过程相对容易一些。所以我还是想写一下这方面的教程。

这在很多案例中,都会是很好的应用,尤其是在产品展示中。
The Cylinder Targets sample shows how to detect a cylindrical target and animate a 3D object around the circumference of the cylinder. Key functionality includes:
•        Detection and tracking of a cylinder target
•        Occlusion handling
•        Activate Extended Tracking
•        Manage camera functions: flash and continuous autofocus

主要特点如下:
1、识别的目标是个圆柱体,例如易拉罐等。
2、支持虚实遮挡

什么是虚实遮挡的呢?我们一般经常能够看到的时真实物体对象被虚拟物体遮挡了。比如ImageTarget的例子。但是cylinder targets的例子,虚拟物体是可以被真实物体遮挡的。这就能形成更加真实的效果。
由于在ImageTarget案例中,target是2d平面的,而cylinder target的案例中,识别的对象是3D的圆柱体。因此会有以下不同的地方:
和ImageTarget案例相似,识别的方式一样,不同的是:

1、标志制作方式不同


标志制作依然在官网中完成。

图片:图片14.png

       
你会发现和制作一般的target不同,这里不需要我们选择图片,那要怎么搞呢?
而且需要填写尺寸的三个参数:
顶部和底部圆 的直径,以及边长,见下图所示。

图片:图片15.png


D,d为直径,sL为Side Length。注意:请勿将sL与高height混淆。
两个特殊的情况,圆柱体和椎体:
         

图片:图片16.png


将三个参数填写完成之后,形成了一个空白的cylinder标志:

图片:图片17.png


点击之后,进入一个奇妙的从来没有见过的场景:

图片:图片18.png


主要分成三个部分,点击右边交叉图像进行图片上传。
进入上传图片界面,图片设定需要满足下图所示的小字:

图片:图片19.png


8位或者24的png/jpg图片,jpg格式必须是RGB或者是灰度图。图片大小不大于3M。
依次点击上传设计好的图片资源即可。

2、效果呈现不同


最后案例的效果如图:

图片:图片20.png


再次强调:有虚实遮挡功能哦。没错,你会发现,足球围绕着易拉罐旋转,当在易拉罐另一侧时,会看不到足球,到了正面之后又会出现足球。
这就是虚实遮挡。这个在AR的三要素之一——虚实融合中,也是研究的主要课题之一。

根据前面介绍的,可以看出Side Length的重要性,同样从dataset xml配置文件中也能够看出:
<?xml version="1.0" encoding="UTF-8"?>
<QCARConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="qcar_config.xsd">
 <Tracking>
   <CylinderTarget name="CylinderApp" sideLength="95.000000"/>
 </Tracking>
</QCARConfig>

PS
在官网的Target Manager中上传自定义的Target。我们只需要设置Upload Side,但是要注意Target图片的宽高比约为2.094

图片:图片21.png


另外如果需要设置顶部和底部图片,图片需要是正方行的。

图片:图片22.png


设置顶部和底部Target有两个方面的好处:
便于知道实物朝向,正放还是倒放;
当你从上往下看的时候,这时候顶部就有作用了。

图片:图片23.png


最后,完成之后,坐标系如下图所示:
   

图片:图片24.png

 

图片:图片25.jpg


底部中心为原点,Z正向朝上。符合右手坐标系。

图片:图片26.png



运行之后的截图:

图片:图片27.jpg



替换模型就不用再说了,demo中的足球实现的是绕着圆柱体Target进行旋转。
   void Update ()
   {
       Transform parentTransform = transform.parent;
       transform.RotateAround(parentTransform.position, parentTransform.up, -60 * Time.deltaTime);
   }
AR学院(www.arvrschool.com),从这里感触未来!

欢迎分享

ARlijie1210
侠客
侠客
  • UID224
  • 粉丝0
  • 关注0
  • 发帖数14
沙发#
发布于:2016-02-17 17:36
上底 下底 斜边 的数值 与 真实 圆柱相等?还是与真实圆柱 成比例?
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
板凳#
发布于:2016-02-17 18:23
ARlijie1210:上底 下底 斜边 的数值 与 真实 圆柱相等?还是与真实圆柱 成比例?回到原帖
不需要相等,大致娶一个大小,200-300
AR学院(www.arvrschool.com),从这里感触未来!
游客

返回顶部