转自: www.arvrschool.com/read.php
识别的是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、标志制作方式不同
标志制作依然在官网中完成。你会发现和制作一般的target不同,这里不需要我们选择图片,那要怎么搞呢?而且需要填写尺寸的三个参数:顶部和底部圆 的直径,以及边长,见下图所示。D,d为直径,sL为Side Length。注意:请勿将sL与高height混淆。两个特殊的情况,圆柱体和椎体:将三个参数填写完成之后,形成了一个空白的cylinder标志:点击之后,进入一个奇妙的从来没有见过的场景:主要分成三个部分,点击右边交叉图像进行图片上传。进入上传图片界面,图片设定需要满足下图所示的小字:8位或者24的png/jpg图片,jpg格式必须是RGB或者是灰度图。图片大小不大于3M。依次点击上传设计好的图片资源即可。
2、效果呈现不同
最后案例的效果如图:再次强调:有虚实遮挡功能哦。没错,你会发现,足球围绕着易拉罐旋转,当在易拉罐另一侧时,会看不到足球,到了正面之后又会出现足球。这就是虚实遮挡。这个在AR的三要素之一——虚实融合中,也是研究的主要课题之一。
根据前面介绍的,可以看出Side Length的重要性,同样从dataset xml配置文件中也能够看出:
PS:
在官网的Target Manager中上传自定义的Target。我们只需要设置Upload Side,但是要注意Target图片的宽高比约为2.094。
另外如果需要设置顶部和底部图片,图片需要是正方行的。
设置顶部和底部Target有两个方面的好处:
便于知道实物朝向,正放还是倒放;
当你从上往下看的时候,这时候顶部就有作用了。
最后,完成之后,坐标系如下图所示:
底部中心为原点,Z正向朝上。符合右手坐标系。
运行之后的截图:
替换模型就不用再说了,demo中的足球实现的是绕着圆柱体Target进行旋转。
voidUpdate ()
{
TransformparentTransform = transform.parent;
transform.RotateAround(parentTransform.position, parentTransform.up, -60*Time.deltaTime);
}