Vuforia开发高阶四-Multiple Target(立方体识别)
Multiple Target是一个矩形的盒子,有六个面,尺寸需要设置3个,分别是长宽高。这个功能和之前说的Cylinder
Target类似,只要可以用在包装盒中,同样具有虚实遮挡的功能。但是,相对于Cylinder Target来说,她有一个特性:从不同的面看出去,看到的场景是不同的。而Cylinder是一个整体的场景,也就是说他是一个面。
1、更换模型
和ImageTarget一致,
2、更换标志
首先来看看官方demo中的dataset文件:
<?xml version="1.0"?>
<QCARConfig xsi:noNamespaceSchemaLocation="qcar_config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Tracking>
<ImageTarget name="FlakesBox.Front" size="90 120"/>
<ImageTarget name="FlakesBox.Top" size="90 60"/>
<ImageTarget name="FlakesBox.Bottom" size="90 60"/>
<ImageTarget name="FlakesBox.Left" size="60 120"/>
<ImageTarget name="FlakesBox.Right" size="60 120"/>
<ImageTarget name="FlakesBox.Back" size="90 120"/>
<MultiTarget name="FlakesBox">
<Part name="FlakesBox.Front" translation="0 0 30" rotation="AD: 1 0 0 0"/>
<Part name="FlakesBox.Back" translation="0 0 -30" rotation="AD: 0 1 0 180"/>
<Part name="FlakesBox.Left" translation="-45 0 0" rotation="AD: 0 1 0 -90"/>
<Part name="FlakesBox.Right" translation="45 0 0" rotation="AD: 0 1 0 90"/>
<Part name="FlakesBox.Top" translation="0 60 0" rotation="AD: 1 0 0 -90"/>
<Part name="FlakesBox.Bottom" translation="0 -60 0" rotation="AD: 1 0 0 90"/>
</MultiTarget>
</Tracking>
</QCARConfig>
好吧,来对比一下ImageTarget的dataset:
<?xml version="1.0"?>
<QCARConfig xsi:noNamespaceSchemaLocation="qcar_config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Tracking>
<ImageTarget name="stones" size="247 172.899994"/>
<ImageTarget name="chips" size="247 172.899994"/>
</Tracking>
</QCARConfig>
可以看出,基本上就是包含与被包含的关系,
Tracking->ImageTarget /MultiTarget->Part
再来看TargetManager怎么操作的:

没错,需要设置的参数:长宽高和名称。
之后进入:
这里显示出设置的长宽高以及右边待设置Target的六个面。(这也能叫做可视化开发了吧,哈哈。)
在上传图片的时候,要注意图片的比例,因为长宽高已经设定好:
OK,上传成功一个,依次类推,根据上面图片计算你设置的Target的图片的比例:(如果没有设置完成所有六个面,是不能够下载dataset的)
新建的时候全部都是空的,

导入设定的dataset后,自动生成:
修改标志之后的场景,如下:
总结:
乍一看,和普通的没有什么不同,除了Target形状以及Hierarchy不同之外。
当然最主要的脚本文件的源码是看不着的:
MultiTargetBehaviour
1、更换模型
和ImageTarget一致,
2、更换标志
首先来看看官方demo中的dataset文件:
<?xml version="1.0"?>
<QCARConfig xsi:noNamespaceSchemaLocation="qcar_config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Tracking>
<ImageTarget name="FlakesBox.Front" size="90 120"/>
<ImageTarget name="FlakesBox.Top" size="90 60"/>
<ImageTarget name="FlakesBox.Bottom" size="90 60"/>
<ImageTarget name="FlakesBox.Left" size="60 120"/>
<ImageTarget name="FlakesBox.Right" size="60 120"/>
<ImageTarget name="FlakesBox.Back" size="90 120"/>
<MultiTarget name="FlakesBox">
<Part name="FlakesBox.Front" translation="0 0 30" rotation="AD: 1 0 0 0"/>
<Part name="FlakesBox.Back" translation="0 0 -30" rotation="AD: 0 1 0 180"/>
<Part name="FlakesBox.Left" translation="-45 0 0" rotation="AD: 0 1 0 -90"/>
<Part name="FlakesBox.Right" translation="45 0 0" rotation="AD: 0 1 0 90"/>
<Part name="FlakesBox.Top" translation="0 60 0" rotation="AD: 1 0 0 -90"/>
<Part name="FlakesBox.Bottom" translation="0 -60 0" rotation="AD: 1 0 0 90"/>
</MultiTarget>
</Tracking>
</QCARConfig>
好吧,来对比一下ImageTarget的dataset:
<?xml version="1.0"?>
<QCARConfig xsi:noNamespaceSchemaLocation="qcar_config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Tracking>
<ImageTarget name="stones" size="247 172.899994"/>
<ImageTarget name="chips" size="247 172.899994"/>
</Tracking>
</QCARConfig>
可以看出,基本上就是包含与被包含的关系,
Tracking->ImageTarget /MultiTarget->Part
再来看TargetManager怎么操作的:
没错,需要设置的参数:长宽高和名称。
之后进入:
这里显示出设置的长宽高以及右边待设置Target的六个面。(这也能叫做可视化开发了吧,哈哈。)
在上传图片的时候,要注意图片的比例,因为长宽高已经设定好:
OK,上传成功一个,依次类推,根据上面图片计算你设置的Target的图片的比例:(如果没有设置完成所有六个面,是不能够下载dataset的)
新建的时候全部都是空的,
导入设定的dataset后,自动生成:
修改标志之后的场景,如下:
总结:
乍一看,和普通的没有什么不同,除了Target形状以及Hierarchy不同之外。
当然最主要的脚本文件的源码是看不着的:
MultiTargetBehaviour
虽然这个功能看起来很不错,但是目前市场上这个功能的应用比较少。因为它采用六面,这种形式一般在包装盒上,而现在包装盒上面一般使用普通的ImageTarget的功能就已经足够了。其实这个功能完全可以应用在游戏当中,利用它虚实遮挡的功能,再加上物理引擎,这样模拟出来的游戏场景就更加真实了。
请尊重所有作者的劳动,转载请注明原帖来自 AR学院 !