我正在使用Wikitude SDK制作增强现实应用。在图像识别时,我在扫描图像的顶部显示2D图像。需要对需要扫描的多个图像重复此过程。
我尝试了以下方法,但未能获得结果。 方法1:
我将所有需要扫描的图像的名称(目标图像)存储在一个数组中,并将该数组作为参数传递给一个已经完成的现实函数 AR.Trackable2DObject如下所述:
var arr1 = [" Mango"," Guava"," Papaya"," Banana"];
for(var i = 0; i< 4; i ++)
{
var getTargetName1= new AR.Trackable2DObject(this.tracker, arr1[i],
{
drawables: {
cam: [new AR.ImageDrawable(new
AR.ImageResource("assets/"+arr1[i]+".png"), 1, {
offsetX: -0.15,
offsetY: 0,
onClick:function(arObject)
{
}
})]
},
onEnterFieldOfVision:function(targetName)
{
// arr.push(targetName);
alert(targetName);
//alert("assets/"+targetName+".png");
},onExitFieldOfVision: function onExitFieldOfVisionFn() {
}
});
}
在上面的案例中,AR.Trackable2DObject被创建,在图像识别时,数组的元素与跟踪器的元素进行比较(两者都作为参数传递给上面的AR对象)并且基于任何匹配,2D drawable被覆盖使用AR.ImageDrawable对象。 上述方法的问题是AR.Trackable2DObject在将其与跟踪器进行比较时无法读取阵列中的所有元素。因此,在图像识别成功之后,不会覆盖任何2D可绘制的。 如果有人可以解释AR.Trackable2DObject函数调用如何与数组一起工作?
请回复我可以为您的回复提供更多意见。
答案 0 :(得分:0)
当你的目标档案中有多个目标图像并且你只有一个叠加图像时,你不能将整个档案作为参数传递,你可以传递第二个参数:" *" 。这意味着在目标档案显示overlayOne的任何图片上。
var pageOne = new AR.Trackable2DObject(this.tracker, "*", {
drawables: {
cam: overlayOne
}
});
如果您只想在某些图像上构建此叠加层,而不是在所有图像上构建此叠加层,请在wtc文件中创建命名约定。例如,而不是" apple"和"香蕉"将它们命名为" word_apple"和" word_banana"。并在AR.Trackable2DObject中传递第二个参数" word _ *"。
P.S。它不适用于数组。